rollun-ts-rql
Version:
RQL query object and serializer written in TypeScript
1 lines • 2.47 kB
JavaScript
;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 ScalarParser=function(){function ScalarParser(){_classCallCheck(this,ScalarParser);_defineProperty(this,"typeCasters",{})}_createClass(ScalarParser,[{key:"parse",value:function parse(tokenStream){var typeToken=tokenStream.nextIf(_Token.TokenTypeNameMap.T_TYPE);var value;if(typeToken==null){value=this.getScalarValue(tokenStream.next())}else{tokenStream.expect(_Token.TokenTypeNameMap.T_COLON);value=this.getTypeCaster(typeToken.value).typeCast(tokenStream.next())}return value}},{key:"registerTypeCaster",value:function registerTypeCaster(type,typeCaster){this.typeCasters[type]=typeCaster;return this}},{key:"getTypeCaster",value:function getTypeCaster(type){if(this.typeCasters[type]){return this.typeCasters[type]}else{throw new SyntaxError("Unknown type \"".concat(type,"\""))}}},{key:"getScalarValue",value:function getScalarValue(token){if(token.test(_Token.TokenTypeNameMap.T_FALSE)){return false}if(token.test(_Token.TokenTypeNameMap.T_TRUE)){return true}if(token.test(_Token.TokenTypeNameMap.T_NULL)){return null}if(token.test(_Token.TokenTypeNameMap.T_EMPTY)){return""}if(token.test(_Token.TokenTypeNameMap.T_DATE)){return new Date(token.value)}if(token.test(_Token.TokenTypeNameMap.T_STRING)){return token.value}if(token.test(_Token.TokenTypeNameMap.T_INTEGER)){return Number(token.value)}if(token.test(_Token.TokenTypeNameMap.T_FLOAT)){return Number(token.value)}throw new SyntaxError("Invalid scalar token \"".concat(token.value,"\" (").concat(token.name,")"))}}]);return ScalarParser}();exports["default"]=ScalarParser;