trader-server
Version:
OData server for testing strategies, simulating and real trading.
752 lines • 35.2 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var utils_1 = require("./utils");
var lexer_1 = require("./lexer");
var nameOrIdentifier_1 = require("./nameOrIdentifier");
var PrimitiveLiteral;
(function (PrimitiveLiteral) {
function nullValue(value, index) {
if (utils_1.default.equals(value, index, "null"))
return lexer_1.default.tokenize(value, index, index + 4, "null", lexer_1.default.TokenType.Literal);
}
PrimitiveLiteral.nullValue = nullValue;
function booleanValue(value, index) {
if (utils_1.default.equals(value, index, "true"))
return lexer_1.default.tokenize(value, index, index + 4, "Edm.Boolean", lexer_1.default.TokenType.Literal);
if (utils_1.default.equals(value, index, "false"))
return lexer_1.default.tokenize(value, index, index + 5, "Edm.Boolean", lexer_1.default.TokenType.Literal);
}
PrimitiveLiteral.booleanValue = booleanValue;
function guidValue(value, index) {
if (utils_1.default.required(value, index, lexer_1.default.HEXDIG, 8, 8) &&
value[index + 8] === 0x2d &&
utils_1.default.required(value, index + 9, lexer_1.default.HEXDIG, 4, 4) &&
value[index + 13] === 0x2d &&
utils_1.default.required(value, index + 14, lexer_1.default.HEXDIG, 4, 4) &&
value[index + 18] === 0x2d &&
utils_1.default.required(value, index + 19, lexer_1.default.HEXDIG, 4, 4) &&
value[index + 23] === 0x2d &&
utils_1.default.required(value, index + 24, lexer_1.default.HEXDIG, 12))
return lexer_1.default.tokenize(value, index, index + 36, "Edm.Guid", lexer_1.default.TokenType.Literal);
}
PrimitiveLiteral.guidValue = guidValue;
function sbyteValue(value, index) {
var start = index;
var sign = lexer_1.default.SIGN(value, index);
if (sign)
index = sign;
var next = utils_1.default.required(value, index, lexer_1.default.DIGIT, 1, 3);
if (next) {
if (lexer_1.default.DIGIT(value[next]))
return;
var val = parseInt(utils_1.default.stringify(value, start, next), 10);
if (val >= -128 && val <= 127)
return lexer_1.default.tokenize(value, start, next, "Edm.SByte", lexer_1.default.TokenType.Literal);
}
}
PrimitiveLiteral.sbyteValue = sbyteValue;
function byteValue(value, index) {
var next = utils_1.default.required(value, index, lexer_1.default.DIGIT, 1, 3);
if (next) {
if (lexer_1.default.DIGIT(value[next]))
return;
var val = parseInt(utils_1.default.stringify(value, index, next), 10);
if (val >= 0 && val <= 255)
return lexer_1.default.tokenize(value, index, next, "Edm.Byte", lexer_1.default.TokenType.Literal);
}
}
PrimitiveLiteral.byteValue = byteValue;
function int16Value(value, index) {
var start = index;
var sign = lexer_1.default.SIGN(value, index);
if (sign)
index = sign;
var next = utils_1.default.required(value, index, lexer_1.default.DIGIT, 1, 5);
if (next) {
if (lexer_1.default.DIGIT(value[next]))
return;
var val = parseInt(utils_1.default.stringify(value, start, next), 10);
if (val >= -32768 && val <= 32767)
return lexer_1.default.tokenize(value, start, next, "Edm.Int16", lexer_1.default.TokenType.Literal);
}
}
PrimitiveLiteral.int16Value = int16Value;
function int32Value(value, index) {
var start = index;
var sign = lexer_1.default.SIGN(value, index);
if (sign)
index = sign;
var next = utils_1.default.required(value, index, lexer_1.default.DIGIT, 1, 10);
if (next) {
if (lexer_1.default.DIGIT(value[next]))
return;
var val = parseInt(utils_1.default.stringify(value, start, next), 10);
if (val >= -2147483648 && val <= 2147483647)
return lexer_1.default.tokenize(value, start, next, "Edm.Int32", lexer_1.default.TokenType.Literal);
}
}
PrimitiveLiteral.int32Value = int32Value;
function int64Value(value, index) {
var start = index;
var sign = lexer_1.default.SIGN(value, index);
if (sign)
index = sign;
var next = utils_1.default.required(value, index, lexer_1.default.DIGIT, 1, 19);
if (next) {
if (lexer_1.default.DIGIT(value[next]))
return;
var val = utils_1.default.stringify(value, index, next);
if (val >= "0" && val <= (value[start] === 0x2d ? "9223372036854775808" : "9223372036854775807"))
return lexer_1.default.tokenize(value, start, next, "Edm.Int64", lexer_1.default.TokenType.Literal);
}
}
PrimitiveLiteral.int64Value = int64Value;
function decimalValue(value, index) {
var start = index;
var sign = lexer_1.default.SIGN(value, index);
if (sign)
index = sign;
var intNext = utils_1.default.required(value, index, lexer_1.default.DIGIT, 1);
if (!intNext)
return;
var end = intNext;
if (value[intNext] === 0x2e) {
end = utils_1.default.required(value, intNext + 1, lexer_1.default.DIGIT, 1);
if (!end || end === intNext + 1)
return;
}
else
return;
// TODO: detect only decimal value, no double/single detection here
if (value[end] === 0x65)
return;
return lexer_1.default.tokenize(value, start, end, "Edm.Decimal", lexer_1.default.TokenType.Literal);
}
PrimitiveLiteral.decimalValue = decimalValue;
function doubleValue(value, index) {
var start = index;
var end = index;
var nanInfLen = lexer_1.default.nanInfinity(value, index);
if (nanInfLen) {
end += nanInfLen;
}
else {
// TODO: use decimalValue function
// var token = decimalValue(value, index);
var sign = lexer_1.default.SIGN(value, index);
if (sign)
index = sign;
var intNext = utils_1.default.required(value, index, lexer_1.default.DIGIT, 1);
if (!intNext)
return;
var decimalNext = intNext;
if (value[intNext] === 0x2e) {
decimalNext = utils_1.default.required(value, intNext + 1, lexer_1.default.DIGIT, 1);
if (decimalNext === intNext + 1)
return;
}
else
return;
if (value[decimalNext] === 0x65) {
var next = decimalNext + 1;
var sign_1 = lexer_1.default.SIGN(value, next);
if (sign_1)
next = sign_1;
var digitNext = utils_1.default.required(value, next, lexer_1.default.DIGIT, 1);
if (digitNext) {
end = digitNext;
}
}
else
end = decimalNext;
}
return lexer_1.default.tokenize(value, start, end, "Edm.Double", lexer_1.default.TokenType.Literal);
}
PrimitiveLiteral.doubleValue = doubleValue;
function singleValue(value, index) {
var token = PrimitiveLiteral.doubleValue(value, index);
if (token) {
token.value = "Edm.Single";
}
return token;
}
PrimitiveLiteral.singleValue = singleValue;
function stringValue(value, index) {
var start = index;
var squote = lexer_1.default.SQUOTE(value, start);
if (squote) {
index = squote;
while (index < value.length) {
squote = lexer_1.default.SQUOTE(value, index);
if (squote) {
index = squote;
squote = lexer_1.default.SQUOTE(value, index);
if (!squote) {
var close_1 = lexer_1.default.CLOSE(value, index);
var comma = lexer_1.default.COMMA(value, index);
var amp = value[index] === 0x26;
if (lexer_1.default.pcharNoSQUOTE(value, index) > index && !amp && !close_1 && !comma && lexer_1.default.RWS(value, index) === index)
return;
break;
}
else {
index = squote;
}
}
else {
var nextIndex = Math.max(lexer_1.default.RWS(value, index), lexer_1.default.pcharNoSQUOTE(value, index));
if (nextIndex === index)
return;
index = nextIndex;
}
}
squote = lexer_1.default.SQUOTE(value, index - 1) || lexer_1.default.SQUOTE(value, index - 3);
if (!squote)
return;
index = squote;
return lexer_1.default.tokenize(value, start, index, "Edm.String", lexer_1.default.TokenType.Literal);
}
}
PrimitiveLiteral.stringValue = stringValue;
function durationValue(value, index) {
if (!utils_1.default.equals(value, index, "duration"))
return;
var start = index;
index += 8;
var squote = lexer_1.default.SQUOTE(value, index);
if (!squote)
return;
index = squote;
var sign = lexer_1.default.SIGN(value, index);
if (sign)
index = sign;
if (value[index] !== 0x50)
return;
index++;
var dayNext = utils_1.default.required(value, index, lexer_1.default.DIGIT, 1);
if (dayNext === index && value[index + 1] !== 0x54)
return;
index = dayNext;
if (value[index] === 0x44)
index++;
var end = index;
if (value[index] === 0x54) {
index++;
var parseTimeFn_1 = function () {
var squote = lexer_1.default.SQUOTE(value, index);
if (squote)
return index;
var digitNext = utils_1.default.required(value, index, lexer_1.default.DIGIT, 1);
if (digitNext === index)
return;
index = digitNext;
if (value[index] === 0x53) {
end = index + 1;
return end;
}
else if (value[index] === 0x2e) {
index++;
var fractionalSecondsNext = utils_1.default.required(value, index, lexer_1.default.DIGIT, 1);
if (fractionalSecondsNext === index || value[fractionalSecondsNext] !== 0x53)
return;
end = fractionalSecondsNext + 1;
return end;
}
else if (value[index] === 0x48) {
index++;
end = index;
return parseTimeFn_1();
}
else if (value[index] === 0x4d) {
index++;
end = index;
return parseTimeFn_1();
}
};
var next = parseTimeFn_1();
if (!next)
return;
}
squote = lexer_1.default.SQUOTE(value, end);
if (!squote)
return;
end = squote;
return lexer_1.default.tokenize(value, start, end, "Edm.Duration", lexer_1.default.TokenType.Literal);
}
PrimitiveLiteral.durationValue = durationValue;
function binaryValue(value, index) {
var start = index;
if (!utils_1.default.equals(value, index, "binary"))
return;
index += 6;
var squote = lexer_1.default.SQUOTE(value, index);
if (!squote)
return;
index = squote;
var valStart = index;
while (index < value.length && !(squote = lexer_1.default.SQUOTE(value, index))) {
var end = Math.max(lexer_1.default.base64b16(value, index), lexer_1.default.base64b8(value, index));
if (end > index)
index = end;
else if (lexer_1.default.base64char(value[index]) &&
lexer_1.default.base64char(value[index + 1]) &&
lexer_1.default.base64char(value[index + 2]) &&
lexer_1.default.base64char(value[index + 3]))
index += 4;
else
index++;
}
index = squote;
return lexer_1.default.tokenize(value, start, index, "Edm.Binary", lexer_1.default.TokenType.Literal);
}
PrimitiveLiteral.binaryValue = binaryValue;
function dateValue(value, index) {
var yearNext = lexer_1.default.year(value, index);
if (yearNext === index || value[yearNext] !== 0x2d)
return;
var monthNext = lexer_1.default.month(value, yearNext + 1);
if ((monthNext === yearNext + 1) || value[monthNext] !== 0x2d)
return;
var dayNext = lexer_1.default.day(value, monthNext + 1);
// TODO: join dateValue and dateTimeOffsetValue for optimalization
if (dayNext === monthNext + 1 || value[dayNext] === 0x54)
return;
return lexer_1.default.tokenize(value, index, dayNext, "Edm.Date", lexer_1.default.TokenType.Literal);
}
PrimitiveLiteral.dateValue = dateValue;
function dateTimeOffsetValue(value, index) {
var yearNext = lexer_1.default.year(value, index);
if (yearNext === index || value[yearNext] !== 0x2d)
return;
var monthNext = lexer_1.default.month(value, yearNext + 1);
if ((monthNext === yearNext + 1) || value[monthNext] !== 0x2d)
return;
var dayNext = lexer_1.default.day(value, monthNext + 1);
if (dayNext === monthNext + 1 || value[dayNext] !== 0x54)
return;
var hourNext = lexer_1.default.hour(value, dayNext + 1);
var colon = lexer_1.default.COLON(value, hourNext);
if (hourNext === colon || !colon)
return;
var minuteNext = lexer_1.default.minute(value, hourNext + 1);
if (minuteNext === hourNext + 1)
return;
var end = minuteNext;
colon = lexer_1.default.COLON(value, minuteNext);
if (colon) {
var secondNext = lexer_1.default.second(value, colon);
if (secondNext === colon)
return;
if (value[secondNext] === 0x2e) {
var fractionalSecondsNext = lexer_1.default.fractionalSeconds(value, secondNext + 1);
if (fractionalSecondsNext === secondNext + 1)
return;
end = fractionalSecondsNext;
}
else
end = secondNext;
}
var sign = lexer_1.default.SIGN(value, end);
if (value[end] === 0x5a) {
end++;
}
else if (sign) {
var zHourNext = lexer_1.default.hour(value, sign);
var colon_1 = lexer_1.default.COLON(value, zHourNext);
if (zHourNext === sign || !colon_1)
return;
var zMinuteNext = lexer_1.default.minute(value, colon_1);
if (zMinuteNext === colon_1)
return;
end = zMinuteNext;
}
else
return;
return lexer_1.default.tokenize(value, index, end, "Edm.DateTimeOffset", lexer_1.default.TokenType.Literal);
}
PrimitiveLiteral.dateTimeOffsetValue = dateTimeOffsetValue;
function timeOfDayValue(value, index) {
var hourNext = lexer_1.default.hour(value, index);
var colon = lexer_1.default.COLON(value, hourNext);
if (hourNext === index || !colon)
return;
var minuteNext = lexer_1.default.minute(value, colon);
if (minuteNext === colon)
return;
var end = minuteNext;
colon = lexer_1.default.COLON(value, minuteNext);
if (colon) {
var secondNext = lexer_1.default.second(value, colon);
if (secondNext === colon)
return;
if (value[secondNext] === 0x2e) {
var fractionalSecondsNext = lexer_1.default.fractionalSeconds(value, secondNext + 1);
if (fractionalSecondsNext === secondNext + 1)
return;
end = fractionalSecondsNext;
}
else
end = secondNext;
}
return lexer_1.default.tokenize(value, index, end, "Edm.TimeOfDay", lexer_1.default.TokenType.Literal);
}
PrimitiveLiteral.timeOfDayValue = timeOfDayValue;
// geography and geometry literals
function positionLiteral(value, index) {
var longitude = PrimitiveLiteral.doubleValue(value, index);
if (!longitude)
return;
var next = lexer_1.default.RWS(value, longitude.next);
if (next === longitude.next)
return;
var latitude = PrimitiveLiteral.doubleValue(value, next);
if (!latitude)
return;
return lexer_1.default.tokenize(value, index, latitude.next, { longitude: longitude, latitude: latitude }, lexer_1.default.TokenType.Literal);
}
PrimitiveLiteral.positionLiteral = positionLiteral;
function pointData(value, index) {
var open = lexer_1.default.OPEN(value, index);
if (!open)
return;
var start = index;
index = open;
var position = PrimitiveLiteral.positionLiteral(value, index);
if (!position)
return;
index = position.next;
var close = lexer_1.default.CLOSE(value, index);
if (!close)
return;
index = close;
return lexer_1.default.tokenize(value, start, index, position, lexer_1.default.TokenType.Literal);
}
PrimitiveLiteral.pointData = pointData;
function lineStringData(value, index) {
return PrimitiveLiteral.multiGeoLiteralFactory(value, index, "", PrimitiveLiteral.positionLiteral);
}
PrimitiveLiteral.lineStringData = lineStringData;
function ringLiteral(value, index) {
return PrimitiveLiteral.multiGeoLiteralFactory(value, index, "", PrimitiveLiteral.positionLiteral);
// Within each ringLiteral, the first and last positionLiteral elements MUST be an exact syntactic match to each other.
// Within the polygonData, the ringLiterals MUST specify their points in appropriate winding order.
// In order of traversal, points to the left side of the ring are interpreted as being in the polygon.
}
PrimitiveLiteral.ringLiteral = ringLiteral;
function polygonData(value, index) {
return PrimitiveLiteral.multiGeoLiteralFactory(value, index, "", PrimitiveLiteral.ringLiteral);
}
PrimitiveLiteral.polygonData = polygonData;
function sridLiteral(value, index) {
if (!utils_1.default.equals(value, index, "SRID"))
return;
var start = index;
index += 4;
var eq = lexer_1.default.EQ(value, index);
if (!eq)
return;
index++;
var digit = utils_1.default.required(value, index, lexer_1.default.DIGIT, 1, 5);
if (!digit)
return;
index = digit;
var semi = lexer_1.default.SEMI(value, index);
if (!semi)
return;
index = semi;
return lexer_1.default.tokenize(value, start, index, "SRID", lexer_1.default.TokenType.Literal);
}
PrimitiveLiteral.sridLiteral = sridLiteral;
function pointLiteral(value, index) {
if (!utils_1.default.equals(value, index, "Point"))
return;
var start = index;
index += 5;
var data = PrimitiveLiteral.pointData(value, index);
if (!data)
return;
return lexer_1.default.tokenize(value, start, data.next, data, lexer_1.default.TokenType.Literal);
}
PrimitiveLiteral.pointLiteral = pointLiteral;
function polygonLiteral(value, index) {
if (!utils_1.default.equals(value, index, "Polygon"))
return;
var start = index;
index += 7;
var data = PrimitiveLiteral.polygonData(value, index);
if (!data)
return;
return lexer_1.default.tokenize(value, start, data.next, data, lexer_1.default.TokenType.Literal);
}
PrimitiveLiteral.polygonLiteral = polygonLiteral;
function collectionLiteral(value, index) {
return PrimitiveLiteral.multiGeoLiteralFactory(value, index, "Collection", PrimitiveLiteral.geoLiteral);
}
PrimitiveLiteral.collectionLiteral = collectionLiteral;
function lineStringLiteral(value, index) {
if (!utils_1.default.equals(value, index, "LineString"))
return;
var start = index;
index += 10;
var data = PrimitiveLiteral.lineStringData(value, index);
if (!data)
return;
index = data.next;
return lexer_1.default.tokenize(value, start, index, data, lexer_1.default.TokenType.Literal);
}
PrimitiveLiteral.lineStringLiteral = lineStringLiteral;
function multiLineStringLiteral(value, index) {
return PrimitiveLiteral.multiGeoLiteralOptionalFactory(value, index, "MultiLineString", PrimitiveLiteral.lineStringData);
}
PrimitiveLiteral.multiLineStringLiteral = multiLineStringLiteral;
function multiPointLiteral(value, index) {
return PrimitiveLiteral.multiGeoLiteralOptionalFactory(value, index, "MultiPoint", PrimitiveLiteral.pointData);
}
PrimitiveLiteral.multiPointLiteral = multiPointLiteral;
function multiPolygonLiteral(value, index) {
return PrimitiveLiteral.multiGeoLiteralOptionalFactory(value, index, "MultiPolygon", PrimitiveLiteral.polygonData);
}
PrimitiveLiteral.multiPolygonLiteral = multiPolygonLiteral;
function multiGeoLiteralFactory(value, index, prefix, itemLiteral) {
if (!utils_1.default.equals(value, index, prefix + "("))
return;
var start = index;
index += prefix.length + 1;
var items = [];
var geo = itemLiteral(value, index);
if (!geo)
return;
index = geo.next;
while (geo) {
items.push(geo);
var close_2 = lexer_1.default.CLOSE(value, index);
if (close_2) {
index = close_2;
break;
}
var comma = lexer_1.default.COMMA(value, index);
if (!comma)
return;
index = comma;
geo = itemLiteral(value, index);
if (!geo)
return;
index = geo.next;
}
return lexer_1.default.tokenize(value, start, index, { items: items }, lexer_1.default.TokenType.Literal);
}
PrimitiveLiteral.multiGeoLiteralFactory = multiGeoLiteralFactory;
function multiGeoLiteralOptionalFactory(value, index, prefix, itemLiteral) {
if (!utils_1.default.equals(value, index, prefix + "("))
return;
var start = index;
index += prefix.length + 1;
var items = [];
var close = lexer_1.default.CLOSE(value, index);
if (!close) {
var geo = itemLiteral(value, index);
if (!geo)
return;
index = geo.next;
while (geo) {
items.push(geo);
close = lexer_1.default.CLOSE(value, index);
if (close) {
index = close;
break;
}
var comma = lexer_1.default.COMMA(value, index);
if (!comma)
return;
index = comma;
geo = itemLiteral(value, index);
if (!geo)
return;
index = geo.next;
}
}
else
index++;
return lexer_1.default.tokenize(value, start, index, { items: items }, lexer_1.default.TokenType.Literal);
}
PrimitiveLiteral.multiGeoLiteralOptionalFactory = multiGeoLiteralOptionalFactory;
function geoLiteral(value, index) {
return PrimitiveLiteral.collectionLiteral(value, index) ||
PrimitiveLiteral.lineStringLiteral(value, index) ||
PrimitiveLiteral.multiPointLiteral(value, index) ||
PrimitiveLiteral.multiLineStringLiteral(value, index) ||
PrimitiveLiteral.multiPolygonLiteral(value, index) ||
PrimitiveLiteral.pointLiteral(value, index) ||
PrimitiveLiteral.polygonLiteral(value, index);
}
PrimitiveLiteral.geoLiteral = geoLiteral;
function fullPointLiteral(value, index) {
return PrimitiveLiteral.fullGeoLiteralFactory(value, index, PrimitiveLiteral.pointLiteral);
}
PrimitiveLiteral.fullPointLiteral = fullPointLiteral;
function fullCollectionLiteral(value, index) {
return PrimitiveLiteral.fullGeoLiteralFactory(value, index, PrimitiveLiteral.collectionLiteral);
}
PrimitiveLiteral.fullCollectionLiteral = fullCollectionLiteral;
function fullLineStringLiteral(value, index) {
return PrimitiveLiteral.fullGeoLiteralFactory(value, index, PrimitiveLiteral.lineStringLiteral);
}
PrimitiveLiteral.fullLineStringLiteral = fullLineStringLiteral;
function fullMultiLineStringLiteral(value, index) {
return PrimitiveLiteral.fullGeoLiteralFactory(value, index, PrimitiveLiteral.multiLineStringLiteral);
}
PrimitiveLiteral.fullMultiLineStringLiteral = fullMultiLineStringLiteral;
function fullMultiPointLiteral(value, index) {
return PrimitiveLiteral.fullGeoLiteralFactory(value, index, PrimitiveLiteral.multiPointLiteral);
}
PrimitiveLiteral.fullMultiPointLiteral = fullMultiPointLiteral;
function fullMultiPolygonLiteral(value, index) {
return PrimitiveLiteral.fullGeoLiteralFactory(value, index, PrimitiveLiteral.multiPolygonLiteral);
}
PrimitiveLiteral.fullMultiPolygonLiteral = fullMultiPolygonLiteral;
function fullPolygonLiteral(value, index) {
return PrimitiveLiteral.fullGeoLiteralFactory(value, index, PrimitiveLiteral.polygonLiteral);
}
PrimitiveLiteral.fullPolygonLiteral = fullPolygonLiteral;
function fullGeoLiteralFactory(value, index, literal) {
var srid = PrimitiveLiteral.sridLiteral(value, index);
if (!srid)
return;
var token = literal(value, srid.next);
if (!token)
return;
return lexer_1.default.tokenize(value, index, token.next, { srid: srid, value: token }, lexer_1.default.TokenType.Literal);
}
PrimitiveLiteral.fullGeoLiteralFactory = fullGeoLiteralFactory;
function geographyCollection(value, index) {
var prefix = lexer_1.default.geographyPrefix(value, index);
if (prefix === index)
return;
var start = index;
index = prefix;
var squote = lexer_1.default.SQUOTE(value, index);
if (!squote)
return;
index = squote;
var point = PrimitiveLiteral.fullCollectionLiteral(value, index);
if (!point)
return;
index = point.next;
squote = lexer_1.default.SQUOTE(value, index);
if (!squote)
return;
index = squote;
return lexer_1.default.tokenize(value, start, index, "Edm.GeographyCollection", lexer_1.default.TokenType.Literal);
}
PrimitiveLiteral.geographyCollection = geographyCollection;
function geographyLineString(value, index) {
return PrimitiveLiteral.geoLiteralFactory(value, index, "Edm.GeographyLineString", lexer_1.default.geographyPrefix, PrimitiveLiteral.fullLineStringLiteral);
}
PrimitiveLiteral.geographyLineString = geographyLineString;
function geographyMultiLineString(value, index) {
return PrimitiveLiteral.geoLiteralFactory(value, index, "Edm.GeographyMultiLineString", lexer_1.default.geographyPrefix, PrimitiveLiteral.fullMultiLineStringLiteral);
}
PrimitiveLiteral.geographyMultiLineString = geographyMultiLineString;
function geographyMultiPoint(value, index) {
return PrimitiveLiteral.geoLiteralFactory(value, index, "Edm.GeographyMultiPoint", lexer_1.default.geographyPrefix, PrimitiveLiteral.fullMultiPointLiteral);
}
PrimitiveLiteral.geographyMultiPoint = geographyMultiPoint;
function geographyMultiPolygon(value, index) {
return PrimitiveLiteral.geoLiteralFactory(value, index, "Edm.GeographyMultiPolygon", lexer_1.default.geographyPrefix, PrimitiveLiteral.fullMultiPolygonLiteral);
}
PrimitiveLiteral.geographyMultiPolygon = geographyMultiPolygon;
function geographyPoint(value, index) {
return PrimitiveLiteral.geoLiteralFactory(value, index, "Edm.GeographyPoint", lexer_1.default.geographyPrefix, PrimitiveLiteral.fullPointLiteral);
}
PrimitiveLiteral.geographyPoint = geographyPoint;
function geographyPolygon(value, index) {
return PrimitiveLiteral.geoLiteralFactory(value, index, "Edm.GeographyPolygon", lexer_1.default.geographyPrefix, PrimitiveLiteral.fullPolygonLiteral);
}
PrimitiveLiteral.geographyPolygon = geographyPolygon;
function geometryCollection(value, index) {
return PrimitiveLiteral.geoLiteralFactory(value, index, "Edm.GeometryCollection", lexer_1.default.geometryPrefix, PrimitiveLiteral.fullCollectionLiteral);
}
PrimitiveLiteral.geometryCollection = geometryCollection;
function geometryLineString(value, index) {
return PrimitiveLiteral.geoLiteralFactory(value, index, "Edm.GeometryLineString", lexer_1.default.geometryPrefix, PrimitiveLiteral.fullLineStringLiteral);
}
PrimitiveLiteral.geometryLineString = geometryLineString;
function geometryMultiLineString(value, index) {
return PrimitiveLiteral.geoLiteralFactory(value, index, "Edm.GeometryMultiLineString", lexer_1.default.geometryPrefix, PrimitiveLiteral.fullMultiLineStringLiteral);
}
PrimitiveLiteral.geometryMultiLineString = geometryMultiLineString;
function geometryMultiPoint(value, index) {
return PrimitiveLiteral.geoLiteralFactory(value, index, "Edm.GeometryMultiPoint", lexer_1.default.geometryPrefix, PrimitiveLiteral.fullMultiPointLiteral);
}
PrimitiveLiteral.geometryMultiPoint = geometryMultiPoint;
function geometryMultiPolygon(value, index) {
return PrimitiveLiteral.geoLiteralFactory(value, index, "Edm.GeometryMultiPolygon", lexer_1.default.geometryPrefix, PrimitiveLiteral.fullMultiPolygonLiteral);
}
PrimitiveLiteral.geometryMultiPolygon = geometryMultiPolygon;
function geometryPoint(value, index) {
return PrimitiveLiteral.geoLiteralFactory(value, index, "Edm.GeometryPoint", lexer_1.default.geometryPrefix, PrimitiveLiteral.fullPointLiteral);
}
PrimitiveLiteral.geometryPoint = geometryPoint;
function geometryPolygon(value, index) {
return PrimitiveLiteral.geoLiteralFactory(value, index, "Edm.GeometryPolygon", lexer_1.default.geometryPrefix, PrimitiveLiteral.fullPolygonLiteral);
}
PrimitiveLiteral.geometryPolygon = geometryPolygon;
function geoLiteralFactory(value, index, type, prefix, literal) {
var prefixNext = prefix(value, index);
if (prefixNext === index)
return;
var start = index;
index = prefixNext;
var squote = lexer_1.default.SQUOTE(value, index);
if (!squote)
return;
index = squote;
var data = literal(value, index);
if (!data)
return;
index = data.next;
squote = lexer_1.default.SQUOTE(value, index);
if (!squote)
return;
index = squote;
return lexer_1.default.tokenize(value, start, index, type, lexer_1.default.TokenType.Literal);
}
PrimitiveLiteral.geoLiteralFactory = geoLiteralFactory;
function primitiveLiteral(value, index) {
return PrimitiveLiteral.nullValue(value, index) ||
PrimitiveLiteral.booleanValue(value, index) ||
PrimitiveLiteral.guidValue(value, index) ||
PrimitiveLiteral.dateValue(value, index) ||
PrimitiveLiteral.dateTimeOffsetValue(value, index) ||
PrimitiveLiteral.timeOfDayValue(value, index) ||
PrimitiveLiteral.decimalValue(value, index) ||
PrimitiveLiteral.doubleValue(value, index) ||
PrimitiveLiteral.singleValue(value, index) ||
PrimitiveLiteral.sbyteValue(value, index) ||
PrimitiveLiteral.byteValue(value, index) ||
PrimitiveLiteral.int16Value(value, index) ||
PrimitiveLiteral.int32Value(value, index) ||
PrimitiveLiteral.int64Value(value, index) ||
PrimitiveLiteral.stringValue(value, index) ||
PrimitiveLiteral.durationValue(value, index) ||
PrimitiveLiteral.binaryValue(value, index) ||
nameOrIdentifier_1.default.enumeration(value, index) ||
PrimitiveLiteral.geographyCollection(value, index) ||
PrimitiveLiteral.geographyLineString(value, index) ||
PrimitiveLiteral.geographyMultiLineString(value, index) ||
PrimitiveLiteral.geographyMultiPoint(value, index) ||
PrimitiveLiteral.geographyMultiPolygon(value, index) ||
PrimitiveLiteral.geographyPoint(value, index) ||
PrimitiveLiteral.geographyPolygon(value, index) ||
PrimitiveLiteral.geometryCollection(value, index) ||
PrimitiveLiteral.geometryLineString(value, index) ||
PrimitiveLiteral.geometryMultiLineString(value, index) ||
PrimitiveLiteral.geometryMultiPoint(value, index) ||
PrimitiveLiteral.geometryMultiPolygon(value, index) ||
PrimitiveLiteral.geometryPoint(value, index) ||
PrimitiveLiteral.geometryPolygon(value, index);
}
PrimitiveLiteral.primitiveLiteral = primitiveLiteral;
})(PrimitiveLiteral = exports.PrimitiveLiteral || (exports.PrimitiveLiteral = {}));
exports.default = PrimitiveLiteral;
//# sourceMappingURL=primitiveLiteral.js.map