UNPKG

@sap/odata-v4

Version:

OData V4.0 server library

36 lines (30 loc) 1.29 kB
'use strict'; const ExpressionParser = require('./ExpressionParser'); const EdmPrimitiveTypeKind = require('../edm/EdmPrimitiveTypeKind'); class FilterParser { /** * Create a filter parser. * @param {Edm} edm entity data model */ constructor(edm) { this._edm = edm; } /** * Parse a filter string into an expression tree. * @param {UriTokenizer} tokenizer tokenizer containing the string to be parsed * @param {?EdmType} referencedType type the expression references * @param {?(EdmEntitySet[])} crossjoinEntitySets entity sets in case of a $crossjoin request * @param {?Object} aliases alias definitions * @returns {Expression} the root of the expression tree * @throws {UriSyntaxError} * @throws {UriQueryOptionSemanticError} */ parse(tokenizer, referencedType, crossjoinEntitySets, aliases) { const expressionParser = new ExpressionParser(this._edm); const filterExpression = expressionParser.parse(tokenizer, referencedType, crossjoinEntitySets, aliases); expressionParser.checkNoCollection(filterExpression); expressionParser.checkType(filterExpression, EdmPrimitiveTypeKind.Boolean); return filterExpression; } } module.exports = FilterParser;