UNPKG

ern-api-gen

Version:

Electrode Native API generator

101 lines 4.4 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const Part_1 = __importDefault(require("./Part")); const ParserException_1 = __importDefault(require("./ParserException")); const IgnoreToken_1 = __importDefault(require("./IgnoreToken")); const StringBuilder_1 = __importDefault(require("../../java/StringBuilder")); class IgnoreLineParser { static parse(text) { const parts = []; const sb = StringBuilder_1.default(); const characters = text.split(''); let next = null; for (let i = 0, totalLength = characters.length; i < totalLength; i++) { let current = characters[i]; next = i < totalLength - 1 ? characters[i + 1] : null; if (i === 0) { if (current === '#') { parts.push(new Part_1.default(IgnoreToken_1.default.COMMENT, text)); i = totalLength; continue; } else if (current === '!') { if (i === totalLength - 1) { throw new ParserException_1.default('Negation with no negated pattern.'); } else { parts.push(new Part_1.default(IgnoreToken_1.default.NEGATE)); continue; } } else if (current === '\\' && next === '#') { current = next; next = null; i++; } } const a = IgnoreToken_1.default.MATCH_ANY.getPattern(); if (a === current) { if (a === next) { if (i + 3 < totalLength && characters[i + 2] === a) { throw new ParserException_1.default('The pattern *** is invalid.'); } parts.push(new Part_1.default(IgnoreToken_1.default.MATCH_ALL)); i++; continue; } else { if (sb.length() > 0) { parts.push(new Part_1.default(IgnoreToken_1.default.TEXT, sb.toString())); sb.delete(0, sb.length()); } parts.push(new Part_1.default(IgnoreToken_1.default.MATCH_ANY)); continue; } } if (i === 0 && IgnoreToken_1.default.ROOTED_MARKER.getPattern() === current) { parts.push(new Part_1.default(IgnoreToken_1.default.ROOTED_MARKER)); continue; } if (current === '\\' && next === ' ') { parts.push(new Part_1.default(IgnoreToken_1.default.ESCAPED_SPACE)); i++; continue; } else if (current === '\\' && next === '!') { parts.push(new Part_1.default(IgnoreToken_1.default.ESCAPED_EXCLAMATION)); i++; continue; } if (IgnoreToken_1.default.PATH_DELIM.getPattern() === current) { if (i !== totalLength - 1) { if (sb.length() > 0) { parts.push(new Part_1.default(IgnoreToken_1.default.TEXT, sb.toString())); sb.delete(0, sb.length()); } parts.push(new Part_1.default(IgnoreToken_1.default.PATH_DELIM)); if (IgnoreToken_1.default.PATH_DELIM.getPattern() === next) { i++; } continue; } else { parts.push(new Part_1.default(IgnoreToken_1.default.TEXT, sb.toString())); sb.delete(0, sb.length()); parts.push(new Part_1.default(IgnoreToken_1.default.DIRECTORY_MARKER)); continue; } } sb.append(current); } if (sb.length() > 0) { parts.push(new Part_1.default(IgnoreToken_1.default.TEXT, sb.toString().trim())); } return parts; } } exports.IgnoreLineParser = IgnoreLineParser; //# sourceMappingURL=IgnoreLineParser.js.map