UNPKG

ern-api-gen

Version:

Electrode Native API generator

59 lines 2.32 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const IgnoreToken_1 = __importDefault(require("./IgnoreToken")); const InvalidRule_1 = require("./InvalidRule"); const DirectoryRule_1 = require("./DirectoryRule"); const RootedFileRule_1 = require("./RootedFileRule"); const FileRule_1 = require("./FileRule"); const IgnoreLineParser_1 = require("./IgnoreLineParser"); function create(definition) { let rule; if (definition === '.') { return new InvalidRule_1.InvalidRule(null, definition, "Pattern '.' is invalid."); } else if (definition === '!.') { return new InvalidRule_1.InvalidRule(null, definition, "Pattern '!.' is invalid."); } else if (definition.startsWith('..')) { return new InvalidRule_1.InvalidRule(null, definition, "Pattern '..' is invalid."); } try { const result = IgnoreLineParser_1.IgnoreLineParser.parse(definition); let directoryOnly; if (result.length === 0) { return rule; } else if (result.length === 1) { const part = result[0]; if (IgnoreToken_1.default.MATCH_ANY.equals(part.getToken())) { rule = new RootedFileRule_1.RootedFileRule(result, definition); } else { rule = new FileRule_1.FileRule(result, definition); } } else { const head = result[0].getToken(); directoryOnly = IgnoreToken_1.default.DIRECTORY_MARKER.equals(result[result.length - 1].getToken()); if (directoryOnly) { rule = new DirectoryRule_1.DirectoryRule(result, definition); } else if (IgnoreToken_1.default.PATH_DELIM.equals(head)) { rule = new RootedFileRule_1.RootedFileRule(result, definition); } else { rule = new FileRule_1.FileRule(result, definition); } } } catch (e) { console.error(e.message, e); return new InvalidRule_1.InvalidRule(null, definition, e.message); } return rule; } exports.default = create; //# sourceMappingURL=create.js.map