ern-api-gen
Version:
Electrode Native API generator
59 lines • 2.32 kB
JavaScript
;
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