UNPKG

@drewsonne/maya-calculator-parser

Version:

Typescript package to parse plaintext calculations and create operators

108 lines 4.37 kB
"use strict"; var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var collection_1 = __importDefault(require("../tokens/collection")); var layer_2_test_1 = require("./layer-2-test"); var full_date_wildcard_operation_token_1 = __importDefault(require("../tokens/layer-3/full-date-wildcard-operation-token")); var full_date_token_1 = __importDefault(require("../tokens/layer-3/full-date-token")); var base_parser_1 = __importDefault(require("./base-parser")); var FIFOQueue = (function () { function FIFOQueue(length) { this.size = length; this.queue = []; } FIFOQueue.prototype.push = function (item) { this.queue.push(item); if (this.queue.length <= this.size) { return undefined; } else { return this.queue.shift(); } }; Object.defineProperty(FIFOQueue.prototype, "length", { get: function () { return this.queue.length; }, enumerable: false, configurable: true }); FIFOQueue.prototype.isFull = function () { return this.size === this.length; }; FIFOQueue.prototype.peek = function (size) { return this.queue.slice(0, size); }; FIFOQueue.prototype.reset = function () { this.queue = []; }; FIFOQueue.prototype.pop = function (size) { var response = this.peek(size); this.queue = this.queue.slice(size); return response; }; FIFOQueue.prototype.toString = function () { return this.queue.join(', '); }; return FIFOQueue; }()); var Layer3Parser = (function (_super) { __extends(Layer3Parser, _super); function Layer3Parser() { return _super !== null && _super.apply(this, arguments) || this; } Layer3Parser.prototype.parse = function (rawTokens) { var tokens = [], queueLength = 2; var window = new FIFOQueue(queueLength); for (var cursor = 0; cursor < rawTokens.length; cursor += 1) { var currentToken = window.push(rawTokens.index(cursor)); if (window.isFull()) { if (currentToken !== undefined) { tokens.push(currentToken); } var _a = window.peek(2), former = _a[0], latter = _a[1]; if (layer_2_test_1.isCalendarRoundWildcardOperationToken(former) || layer_2_test_1.isLongCountWildcardOperationToken(latter)) { tokens.push(full_date_wildcard_operation_token_1.default.parse(former, latter)); window.pop(queueLength); } else if (layer_2_test_1.isCalendarRoundWildcardOperationToken(latter) || layer_2_test_1.isLongCountWildcardOperationToken(former)) { tokens.push(full_date_wildcard_operation_token_1.default.parse(latter, former)); window.pop(queueLength); } else if (layer_2_test_1.isCalendarRoundToken(former) && layer_2_test_1.isLongCountToken(latter)) { tokens.push(full_date_token_1.default.parse(former, latter)); window.pop(queueLength); } else { debugger; tokens.push(); } } } while (window.length > 0) { tokens.push(window.pop(1)[0]); } return new collection_1.default(this.appendLineEnd(tokens)); }; return Layer3Parser; }(base_parser_1.default)); exports.default = Layer3Parser; //# sourceMappingURL=layer-3-parser.js.map