add initial marp implementation with sample content and build configuration
This commit is contained in:
72
node_modules/speech-rule-engine/mjs/indexing/abstract_trie_node.js
generated
vendored
Normal file
72
node_modules/speech-rule-engine/mjs/indexing/abstract_trie_node.js
generated
vendored
Normal file
@@ -0,0 +1,72 @@
|
||||
import { Debugger } from '../common/debugger.js';
|
||||
import { TrieNodeKind } from './trie_node.js';
|
||||
export class AbstractTrieNode {
|
||||
constructor(constraint, test) {
|
||||
this.constraint = constraint;
|
||||
this.test = test;
|
||||
this.children_ = {};
|
||||
this.kind = TrieNodeKind.ROOT;
|
||||
}
|
||||
getConstraint() {
|
||||
return this.constraint;
|
||||
}
|
||||
getKind() {
|
||||
return this.kind;
|
||||
}
|
||||
applyTest(object) {
|
||||
return this.test(object);
|
||||
}
|
||||
addChild(node) {
|
||||
const constraint = node.getConstraint();
|
||||
const child = this.children_[constraint];
|
||||
this.children_[constraint] = node;
|
||||
return child;
|
||||
}
|
||||
getChild(constraint) {
|
||||
return this.children_[constraint];
|
||||
}
|
||||
getChildren() {
|
||||
const children = [];
|
||||
for (const val of Object.values(this.children_)) {
|
||||
children.push(val);
|
||||
}
|
||||
return children;
|
||||
}
|
||||
findChildren(object) {
|
||||
const children = [];
|
||||
for (const val of Object.values(this.children_)) {
|
||||
if (val.applyTest(object)) {
|
||||
children.push(val);
|
||||
}
|
||||
}
|
||||
return children;
|
||||
}
|
||||
removeChild(constraint) {
|
||||
delete this.children_[constraint];
|
||||
}
|
||||
toString() {
|
||||
return this.constraint;
|
||||
}
|
||||
}
|
||||
export class StaticTrieNode extends AbstractTrieNode {
|
||||
constructor(constraint, test) {
|
||||
super(constraint, test);
|
||||
this.rule_ = null;
|
||||
this.kind = TrieNodeKind.STATIC;
|
||||
}
|
||||
getRule() {
|
||||
return this.rule_;
|
||||
}
|
||||
setRule(rule) {
|
||||
if (this.rule_) {
|
||||
Debugger.getInstance().output('Replacing rule ' + this.rule_ + ' with ' + rule);
|
||||
}
|
||||
this.rule_ = rule;
|
||||
}
|
||||
toString() {
|
||||
const rule = this.getRule();
|
||||
return rule
|
||||
? this.constraint + '\n' + '==> ' + this.getRule().action
|
||||
: this.constraint;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user