UNPKG

1.83 kBJavaScriptView Raw
1var through = require('through2');
2var PluginError = require('gulp-util').PluginError;
3
4var exports = {
5 rewriteStream : rewriteStream,
6 gulpRewrite : gulpRewrite,
7 gulpRewriteFiletype : gulpRewriteFiletype
8}
9
10module.exports = function() {
11
12 return exports
13}
14
15//-----------------------------------------------------------
16
17function rewriteStream(replacements) {
18
19 if(!replacements) {
20 replacements = {}
21 }
22
23 var stream = through.obj(function(data, enc, callback) {
24 var replaced = doReplacements(data.toString(), replacements)
25 this.push(replaced)
26 callback()
27 });
28
29 return stream;
30}
31
32
33function gulpRewrite (replacements) {
34
35 if(!replacements) {
36 replacements = {}
37 }
38
39
40 // Creating a stream through which each file will pass
41 return through.obj(function(file, enc, cb) {
42
43 if (file.isNull()) {
44 return cb(null, file);
45 }
46 if (file.isBuffer()) {
47 file.contents = Buffer(doReplacements(file.contents.toString(enc), replacements), enc);
48 }
49 if (file.isStream()) {
50 file.contents = file.contents.pipe(rewriteStream(replacements));
51 }
52 cb(null, file);
53
54 });
55
56}
57
58function gulpRewriteFiletype (filetype, replacement) {
59
60 // Creating a stream through which each file will pass
61 return through.obj(function(file, enc, cb) {
62
63 if (file.isNull()) {
64 return cb(null, file);
65 }
66
67 var re = new RegExp("[\/\\\\]" + filetype + "[\/\\\\]", "gi")
68 file.path = file.path.replace(re, "/" + replacement + "/")
69 re = new RegExp("\." + filetype + "$", "gi")
70 file.path = file.path.replace(re, "." + replacement)
71 cb(null, file);
72
73 });
74
75}
76
77function doReplacements(content, replacements) {
78 for(var match in replacements){
79 var re = new RegExp(match, 'g')
80 content = content.replace(re, replacements[match])
81 }
82 return content
83}
84
85