UNPKG

@drewsonne/maya-calculator-parser

Version:

Typescript package to parse plaintext calculations and create operators

90 lines 3.54 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.isFullCR = exports.isPartialLC = exports.isPartialCR = exports.isCRUnit = exports.isCRCoeff = exports.isLineEndToken = exports.isCommentToken = exports.isPeriodToken = exports.isWildcardToken = exports.isNumberToken = exports.isWordToken = void 0; var space_token_1 = __importDefault(require("../tokens/layer-0/space-token")); var number_token_1 = __importDefault(require("../tokens/layer-0/number-token")); var word_token_1 = __importDefault(require("../tokens/layer-0/word-token")); var wildcard_token_1 = __importDefault(require("../tokens/layer-0/wildcard-token")); var period_token_1 = __importDefault(require("../tokens/layer-0/period-token")); var comment_token_1 = __importDefault(require("../tokens/layer-0/comment-token")); var line_end_token_1 = __importDefault(require("../tokens/layer-0/line-end-token")); function isWordToken(t) { return t instanceof word_token_1.default; } exports.isWordToken = isWordToken; function isNumberToken(t) { return t instanceof number_token_1.default; } exports.isNumberToken = isNumberToken; function isWildcardToken(t) { return t instanceof wildcard_token_1.default; } exports.isWildcardToken = isWildcardToken; function isPeriodToken(t) { return t instanceof period_token_1.default; } exports.isPeriodToken = isPeriodToken; function isCommentToken(t) { return t instanceof comment_token_1.default; } exports.isCommentToken = isCommentToken; function isLineEndToken(t) { return t instanceof line_end_token_1.default; } exports.isLineEndToken = isLineEndToken; function isCRCoeff(c) { return isNumberToken(c) || isWildcardToken(c); } exports.isCRCoeff = isCRCoeff; function isCRUnit(c) { return isWordToken(c) || isWildcardToken(c); } exports.isCRUnit = isCRUnit; function isPartialCR(raw) { var tokens = raw.filter(function (t) { return !(t instanceof space_token_1.default); }); if (tokens.length === 0) { return true; } else if (tokens.length === 1) { return isCRCoeff(tokens[0]); } else if (tokens.length === 2) { return isCRCoeff(tokens[0]) && isCRUnit(tokens[1]); } else if (tokens.length === 3) { return isCRCoeff(tokens[0]) && isCRUnit(tokens[1]) && isCRCoeff(tokens[2]); } else if (tokens.length === 4) { return isFullCR(tokens); } return false; } exports.isPartialCR = isPartialCR; function isPartialLC(raw, token) { var result = true; var tokens = raw.concat([token]); for (var i = 0; i < tokens.length; i += 2) { var _a = tokens.slice(i, i + 2), potentialLC = _a[0], potentialPeriod = _a[1]; var firstTokenCondition = isWildcardToken(potentialLC) || isNumberToken(potentialLC); if (firstTokenCondition && potentialPeriod === undefined) { continue; } else if (!(firstTokenCondition && isPeriodToken(potentialPeriod))) { result = result && false; } } return result; } exports.isPartialLC = isPartialLC; function isFullCR(raw) { var tokens = raw.filter(function (t) { return !(t instanceof space_token_1.default); }); if (tokens.length === 4) { return isCRCoeff(tokens[0]) && isCRUnit(tokens[1]) && isCRCoeff(tokens[2]) && isCRUnit(tokens[3]); } return false; } exports.isFullCR = isFullCR; //# sourceMappingURL=layer-1-test.js.map