rollun-ts-rql
Version:
RQL query object and serializer written in TypeScript
1 lines • 2.72 kB
JavaScript
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _Token=require("./Token");function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function")}}function _defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}function _createClass(Constructor,protoProps,staticProps){if(protoProps)_defineProperties(Constructor.prototype,protoProps);if(staticProps)_defineProperties(Constructor,staticProps);return Constructor}function _defineProperty(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true})}else{obj[key]=value}return obj}var TokenStream=function(){function TokenStream(tokens){_classCallCheck(this,TokenStream);_defineProperty(this,"tokens",void 0);_defineProperty(this,"current",void 0);this.tokens=tokens;this.current=0}_createClass(TokenStream,[{key:"count",value:function count(){return this.tokens.length}},{key:"next",value:function next(){this.current+=1;if(this.tokens[this.current]){return this.tokens[this.current-1]}else{throw new Error("Unexpected end of stream")}}},{key:"nextIf",value:function nextIf(type,value){if(this.test(type,value)){return this.next()}else{return null}}},{key:"test",value:function test(type,value){return this.tokens[this.current].test(type,value)}},{key:"lookAhead",value:function lookAhead(){var tokenNumber=arguments.length>0&&arguments[0]!==undefined?arguments[0]:1;if(this.tokens[this.current+tokenNumber]){return this.tokens[this.current+tokenNumber]}else{throw new Error("Unexpected end of stream")}}},{key:"expect",value:function expect(type,value){var normalizedType=Array.isArray(type)?type:[type];var normalizedValue=Array.isArray(value)?value:[value];var token=this.getCurrent();if(!this.test(type,value)){var expectedMessage=value?"expected ".concat(normalizedType.map(function(){return"\"".concat(value,"\"")}).join("|")," (").concat(normalizedType.join("|"),")"):"expected ".concat(normalizedType.join("|"));throw new Error("Unexpected token ".concat(token.value," (").concat(token.name,") (").concat(expectedMessage,")"))}this.next();return token}},{key:"getCurrent",value:function getCurrent(){return this.tokens[this.current]}},{key:"isEnd",value:function isEnd(){return this.tokens[this.current].type===_Token.TokenTypeNameMap.T_END}},{key:"length",get:function get(){return this.tokens.length}}]);return TokenStream}();exports["default"]=TokenStream;