UNPKG

@atomist/automation-client

Version:

Atomist API for software low-level client

36 lines 1.33 kB
"use strict"; 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