UNPKG

trader-server

Version:

OData server for testing strategies, simulating and real trading.

33 lines (28 loc) 1.23 kB
import Utils from "./utils"; import Lexer from "./lexer"; import PrimitiveLiteral from "./primitiveLiteral"; import Expressions from "./expressions"; import Query from "./query"; import ResourcePath from "./resourcePath"; export namespace ODataUri { export function odataUri(value: Utils.SourceArray, index: number, metadataContext?: any): Lexer.Token { let resource = ResourcePath.resourcePath(value, index, metadataContext); while (!resource && index < value.length) { while (value[++index] !== 0x2f && index < value.length); resource = ResourcePath.resourcePath(value, index, metadataContext); } if (!resource) return; let start = index; index = resource.next; metadataContext = resource.metadata; let query; if (value[index] === 0x3f) { query = Query.queryOptions(value, index + 1, metadataContext); if (!query) return; index = query.next; delete resource.metadata; } return Lexer.tokenize(value, start, index, { resource, query }, Lexer.TokenType.ODataUri, <any>{ metadata: metadataContext }); } } export default ODataUri;