forked from jballant/webpack-strip-block
-
Notifications
You must be signed in to change notification settings - Fork 5
/
index.js
28 lines (22 loc) · 830 Bytes
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/*jslint node:true */
'use strict';
var loaderUtils = require('loader-utils');
function regexEscape(str) {
return str.replace(/([\^|\$|\.|\*|\+|\?|\=|\!|\:|\\|\/|\(|\)|\[|\]|\{|\}])/gi, '\\$1');
}
function StripBlockLoader(content) {
var options = loaderUtils.getOptions(this);
if (options && options.blocks) {
var start = regexEscape(options.start || '/*');
var end = regexEscape(options.end || '/*');
options.blocks.forEach(function (block) {
var regex = new RegExp('[\\t ]*' + start + ' ?(' + block + '):start ?' + end + '[\\s\\S]*?' + start + ' ?\\1:end ?' + end + '[\\t ]*\\n?', 'g');
content = content.replace(regex, '');
});
}
if (this.cacheable) {
this.cacheable(true);
}
return content;
}
module.exports = StripBlockLoader;