ern-api-gen
Version:
Electrode Native API generator
80 lines • 2.84 kB
JavaScript
"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 StringBuilder_1 = __importDefault(require("../../java/StringBuilder"));
const LoggerFactory_1 = __importDefault(require("../../java/LoggerFactory"));
class Rule {
constructor(syntax, definition) {
this.syntax = syntax;
this.definition = definition;
}
getDefinition() {
return this.definition;
}
getPattern() {
if (this.syntax == null) {
return this.definition;
}
const sb = StringBuilder_1.default();
for (const current of this.syntax) {
const token = current.getToken();
switch (token) {
case IgnoreToken_1.default.MATCH_ALL:
case IgnoreToken_1.default.MATCH_ANY:
case IgnoreToken_1.default.ESCAPED_EXCLAMATION:
case IgnoreToken_1.default.ESCAPED_SPACE:
case IgnoreToken_1.default.PATH_DELIM:
case IgnoreToken_1.default.TEXT:
case IgnoreToken_1.default.DIRECTORY_MARKER:
sb.append(current.getValue());
break;
case IgnoreToken_1.default.NEGATE:
case IgnoreToken_1.default.ROOTED_MARKER:
case IgnoreToken_1.default.COMMENT:
break;
default:
Log.warn('unknown token');
}
}
return sb.toString();
}
/**
* Whether or not the rule should be negated. !foo means foo should be removed from previous matches.
* Example: **\/*.bak excludes all backup. Adding !/test.bak will include test.bak in the project root.
* <p>
* NOTE: It is not possible to re-include a file if a parent directory of that file is excluded.
*/
getNegated() {
const negated = this.syntax &&
this.syntax[0] &&
this.syntax[0].getToken().equals(IgnoreToken_1.default.NEGATE);
return negated;
}
evaluate(relativePath) {
if (this.matches(relativePath)) {
if (this.getNegated()) {
return this.getIncludeOperation();
}
return this.getExcludeOperation();
}
return Rule.Operation.NOOP;
}
getIncludeOperation() {
return Rule.Operation.INCLUDE;
}
getExcludeOperation() {
return Rule.Operation.EXCLUDE;
}
}
Rule.Operation = {
EXCLUDE: 0,
EXCLUDE_AND_TERMINATE: 3,
INCLUDE: 1,
NOOP: 2,
};
exports.Rule = Rule;
const Log = LoggerFactory_1.default.getLogger(Rule);
//# sourceMappingURL=Rule.js.map