speech-rule-engine
Version:
A standalone speech rule engine for XML structures, based on the original engine from ChromeVox.
34 lines (33 loc) • 1.12 kB
JavaScript
import * as DomUtil from '../common/dom_util.js';
import { Attribute } from '../enrich_mathml/enrich_attr.js';
export function splitAttribute(attr) {
return !attr ? [] : attr.split(/,/);
}
export function getAttribute(node, attr) {
return node.getAttribute(attr);
}
export function getSemanticRoot(node) {
if (node.hasAttribute(Attribute.TYPE) &&
!node.hasAttribute(Attribute.PARENT)) {
return node;
}
const semanticNodes = DomUtil.querySelectorAllByAttr(node, Attribute.TYPE);
for (let i = 0, semanticNode; (semanticNode = semanticNodes[i]); i++) {
if (!semanticNode.hasAttribute(Attribute.PARENT)) {
return semanticNode;
}
}
return node;
}
export function getBySemanticId(root, id) {
if (root.getAttribute(Attribute.ID) === id) {
return root;
}
return DomUtil.querySelectorAllByAttrValue(root, Attribute.ID, id)[0];
}
export function getAllBySemanticId(root, id) {
if (root.getAttribute(Attribute.ID) === id) {
return [root];
}
return DomUtil.querySelectorAllByAttrValue(root, Attribute.ID, id);
}