summaryrefslogtreecommitdiff
path: root/platform/darwin/src/NSExpression+MGLAdditions.mm
diff options
context:
space:
mode:
authorMinh Nguyễn <mxn@1ec5.org>2018-07-05 15:08:24 -0700
committerMinh Nguyễn <mxn@1ec5.org>2018-07-09 16:02:40 -0700
commitf11ab91fc448aca1155b42a53aaa77cfce62f412 (patch)
treea463898359e31efa6852dde646ff88f7b575399a /platform/darwin/src/NSExpression+MGLAdditions.mm
parentd6a454ba8eb4546a52d941c63bf0331353873ad6 (diff)
downloadqtlocation-mapboxgl-f11ab91fc448aca1155b42a53aaa77cfce62f412.tar.gz
[ios, macos] Convert predicate options to collators
Diffstat (limited to 'platform/darwin/src/NSExpression+MGLAdditions.mm')
-rw-r--r--platform/darwin/src/NSExpression+MGLAdditions.mm9
1 files changed, 9 insertions, 0 deletions
diff --git a/platform/darwin/src/NSExpression+MGLAdditions.mm b/platform/darwin/src/NSExpression+MGLAdditions.mm
index 653e3d67e6..d03d7dbaec 100644
--- a/platform/darwin/src/NSExpression+MGLAdditions.mm
+++ b/platform/darwin/src/NSExpression+MGLAdditions.mm
@@ -784,6 +784,9 @@ NSArray *MGLSubexpressionsWithJSONObjects(NSArray *objects) {
return [NSExpression expressionForFunction:functionName
arguments:subexpressions];
+ } else if ([op isEqualToString:@"collator"]) {
+ // Avoid wrapping collator options object in literal expression.
+ return [NSExpression expressionForFunction:@"MGL_FUNCTION" arguments:array];
} else if ([op isEqualToString:@"literal"]) {
if ([argumentObjects.firstObject isKindOfClass:[NSArray class]]) {
return [NSExpression expressionForAggregate:MGLSubexpressionsWithJSONObjects(argumentObjects.firstObject)];
@@ -1208,6 +1211,12 @@ NSArray *MGLSubexpressionsWithJSONObjects(NSArray *objects) {
[NSException raise:NSInvalidArgumentException
format:@"Casting expression to %@ not yet implemented.", type];
} else if ([function isEqualToString:@"MGL_FUNCTION"]) {
+ NSExpression *op = self.arguments.firstObject;
+ if (op.expressionType == NSConstantValueExpressionType
+ && [op.constantValue isEqualToString:@"collator"]) {
+ // Avoid wrapping collator options object in literal expression.
+ return @[@"collator", self.arguments[1].constantValue];
+ }
return self.arguments.mgl_jsonExpressionObject;
} else if (op == [MGLColor class] && [function isEqualToString:@"colorWithRed:green:blue:alpha:"]) {
NSArray *arguments = self.arguments.mgl_jsonExpressionObject;