@drewsonne/maya-calculator-parser
Version:
Typescript package to parse plaintext calculations and create operators
90 lines • 3.54 kB
JavaScript
;
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