UNPKG

@atomist/automation-client

Version:
39 lines 1.56 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const axisSpecifiers_1 = require("@atomist/tree-path/path/axisSpecifiers"); const nodeTests_1 = require("@atomist/tree-path/path/nodeTests"); const pathExpression_1 = require("@atomist/tree-path/path/pathExpression"); const utils_1 = require("@atomist/tree-path/path/utils"); /** * 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 = utils_1.toPathExpression(pathExpression); if (!pathExpression_1.isUnionPathExpression(parsed)) { const determiningStep = parsed.locationSteps.find(s => s.axis !== axisSpecifiers_1.SelfAxisSpecifier); if (!!determiningStep && nodeTests_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