UNPKG

@schoenbergerb/logical-expression-parser

Version:

Logical expression parser and evaluates result, suitable for permissions management

41 lines 1.36 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Tokenizer = void 0; const token_type_1 = require("./token-type"); const Tokenizer = (expression, customTokens) => { let literal = ""; const tokens = []; for (const char of expression) { const token = (0, token_type_1.getTokenTypeByValue)(char, customTokens); switch (token) { case token_type_1.Token.PARENTHESES_OPEN: case token_type_1.Token.PARENTHESES_OPEN: case token_type_1.Token.PARENTHESES_CLOSE: case token_type_1.Token.OPERATOR_NOT: case token_type_1.Token.OPERATOR_AND: case token_type_1.Token.OPERATOR_OR: if (literal) { tokens.push({ type: token_type_1.Token.LITERAL, value: literal, }); literal = ""; } tokens.push({ type: token, value: char, }); break; default: literal += char; } } if (literal) tokens.push({ type: token_type_1.Token.LITERAL, value: literal, }); return tokens; }; exports.Tokenizer = Tokenizer; //# sourceMappingURL=tokenizer.js.map