@atomist/automation-client
Version:
Atomist API for software low-level client
36 lines • 1.33 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const tree_path_1 = require("@atomist/tree-path");
/**
* Implementation of FileParserRegistry implementing fluent builder pattern
*/
class DefaultFileParserRegistry {
constructor() {
this.parserRegistry = {};
}
addParser(pr) {
this.parserRegistry[pr.rootName] = pr;
return this;
}
parserFor(pathExpression) {
const parsed = tree_path_1.toPathExpression(pathExpression);
if (!tree_path_1.isUnionPathExpression(parsed)) {
const determiningStep = parsed.locationSteps.find(s => s.axis !== tree_path_1.SelfAxisSpecifier);
if (!!determiningStep && tree_path_1.isNamedNodeTest(determiningStep.test)) {
const parser = this.parserRegistry[determiningStep.test.name];
if (!!parser) {
if (parser.validate) {
parser.validate(parsed);
}
return parser;
}
}
}
return undefined;
}
toString() {
return `DefaultFileParserRegistry: parsers=[${Object.getOwnPropertyNames(this.parserRegistry)}]`;
}
}
exports.DefaultFileParserRegistry = DefaultFileParserRegistry;
//# sourceMappingURL=FileParserRegistry.js.map