You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.4 KiB
61 lines
1.4 KiB
define([ |
|
"../buildControl", |
|
"../fileUtils", |
|
"../fs", |
|
"../replace" |
|
], function(bc, fileUtils, fs, replace){ |
|
var |
|
getFiletype = fileUtils.getFiletype, |
|
|
|
encodingMap= |
|
// map from file type to encoding |
|
(bc.transformConfig.read && bc.transformConfig.read.encoding) || { |
|
css:"utf8", |
|
html:"utf8", |
|
htm:"utf8", |
|
js:"utf8", |
|
json:"utf8", |
|
asc:"utf8", |
|
c:"utf8", |
|
cpp:"utf8", |
|
log:"utf8", |
|
conf:"utf8", |
|
text:"utf8", |
|
txt:"utf8", |
|
dtd:"utf8", |
|
xml:"utf8", |
|
png:undefined, |
|
jpg:undefined, |
|
jpeg:undefined, |
|
gif:undefined |
|
}; |
|
|
|
return function(resource, callback){ |
|
resource.getText = function(){ |
|
if(!this.replacementsApplied){ |
|
this.replacementsApplied = true; |
|
if(bc.replacements[this.src]){ |
|
this.text = replace(this.text, bc.replacements[this.src]); |
|
} |
|
} |
|
return this.text; |
|
}; |
|
|
|
resource.setText = function(text){ |
|
resource.text = text; |
|
resource.getText = function(){ return this.text; }; |
|
return text; |
|
}; |
|
|
|
var filetype = getFiletype(resource.src, 1); |
|
// the expression is a little odd since undefined is a legitimate encodingMap value |
|
resource.encoding = resource.encoding ||(!(filetype in encodingMap) && "utf8") || encodingMap[filetype]; |
|
fs.readFile(resource.src, resource.encoding, function(err, data){ |
|
if(!err){ |
|
resource.text = data; |
|
} |
|
callback(resource, err); |
|
}); |
|
return callback; |
|
}; |
|
});
|
|
|