53 lines
1 KiB
JavaScript
53 lines
1 KiB
JavaScript
|
let inConfig = {
|
||
|
$dir: __dirname,
|
||
|
$out: __dirname,
|
||
|
$src: __dirname,
|
||
|
$: __dirname
|
||
|
}
|
||
|
|
||
|
class HelperUnit {
|
||
|
constructor(config = null) {
|
||
|
this.config = config || inConfig;
|
||
|
this.regEx = {};
|
||
|
this.buildRegex();
|
||
|
}
|
||
|
|
||
|
static setGlobalConfig(config) {
|
||
|
inConfig = config;
|
||
|
}
|
||
|
|
||
|
addConfigItem(name, value, regexOnly = false) {
|
||
|
if (!regexOnly) {
|
||
|
this.config[name] = value;
|
||
|
}
|
||
|
let replace = name.replace("$", "\\$");
|
||
|
this.regEx[name] = new RegExp(`(${replace})`, "gm");
|
||
|
}
|
||
|
|
||
|
setConfig(config) {
|
||
|
this.config = config;
|
||
|
this.buildRegex();
|
||
|
}
|
||
|
|
||
|
buildRegex() {
|
||
|
const keys = Object.keys(this.config);
|
||
|
this.regEx = {};
|
||
|
for (const key of keys) {
|
||
|
this.addConfigItem(key, null, true);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
replaceVariables(string) {
|
||
|
const keys = Object.keys(this.config);
|
||
|
for (const key of keys) {
|
||
|
string = string.replace(this.regEx[key], this.config[key]);
|
||
|
}
|
||
|
return string;
|
||
|
}
|
||
|
|
||
|
clone() {
|
||
|
return new HelperUnit(this.config);
|
||
|
}
|
||
|
}
|
||
|
module.exports = HelperUnit;
|