first commit

This commit is contained in:
DanielRamirezGe
2020-01-14 20:43:08 -06:00
parent 3557894f7f
commit 5eecfbf6cd
26326 changed files with 2434803 additions and 0 deletions
+44
View File
@@ -0,0 +1,44 @@
const ChainedMap = require('./ChainedMap');
const Rule = require('./Rule');
module.exports = class extends ChainedMap {
constructor(parent) {
super(parent);
this.rules = new ChainedMap(this);
this.defaultRules = new ChainedMap(this);
this.extend(['noParse']);
}
defaultRule(name) {
return this.defaultRules.getOrCompute(name, () => new Rule(this, name));
}
rule(name) {
return this.rules.getOrCompute(name, () => new Rule(this, name));
}
toConfig() {
return this.clean(
Object.assign(this.entries() || {}, {
defaultRules: this.defaultRules.values().map(r => r.toConfig()),
rules: this.rules.values().map(r => r.toConfig()),
}),
);
}
merge(obj, omit = []) {
if (!omit.includes('rule') && 'rule' in obj) {
Object.keys(obj.rule).forEach(name =>
this.rule(name).merge(obj.rule[name]),
);
}
if (!omit.includes('defaultRule') && 'defaultRule' in obj) {
Object.keys(obj.defaultRule).forEach(name =>
this.defaultRule(name).merge(obj.defaultRule[name]),
);
}
return super.merge(obj, ['rule', 'defaultRule']);
}
};