UNPKG

rollun-ts-rql

Version:

RQL query object and serializer written in TypeScript

1 lines 2.58 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports["default"]=void 0;var _Token=require("../../Token");var _Or=_interopRequireDefault(require("../../../nodes/logicalNodes/Or"));var _And=_interopRequireDefault(require("../../../nodes/logicalNodes/And"));function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{"default":obj}}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 GroupNodeParser=function(){function GroupNodeParser(conditionParser){_classCallCheck(this,GroupNodeParser);_defineProperty(this,"conditionParser",void 0);this.conditionParser=conditionParser}_createClass(GroupNodeParser,[{key:"parse",value:function parse(tokenStream){var operator=null;var queries=[];tokenStream.expect(_Token.TokenTypeNameMap.T_OPEN_PARENTHESIS);do{queries.push(this.conditionParser.parse(tokenStream));if(tokenStream.nextIf(_Token.TokenTypeNameMap.T_AMPERSAND)){if(operator===null){operator=_Token.TokenTypeNameMap.T_AMPERSAND}if(operator!==_Token.TokenTypeNameMap.T_AMPERSAND){throw new SyntaxError("Cannot mix \"&\" and \"|\" within a group")}}else{if(tokenStream.nextIf(_Token.TokenTypeNameMap.T_VERTICAL_BAR)){if(operator===null){operator=_Token.TokenTypeNameMap.T_VERTICAL_BAR}if(operator!==_Token.TokenTypeNameMap.T_VERTICAL_BAR){throw new SyntaxError("Cannot mix \"&\" and \"|\" within a group")}}else{break}}}while(true);tokenStream.expect(_Token.TokenTypeNameMap.T_CLOSE_PARENTHESIS);if(operator===_Token.TokenTypeNameMap.T_VERTICAL_BAR){return new _Or["default"](queries)}if(operator===_Token.TokenTypeNameMap.T_AMPERSAND){return new _And["default"](queries)}else{return queries[0]}}},{key:"supports",value:function supports(tokenStream){return tokenStream.test(_Token.TokenTypeNameMap.T_OPEN_PARENTHESIS)}}]);return GroupNodeParser}();exports["default"]=GroupNodeParser;