diff options
author | Minh Nguyễn <mxn@1ec5.org> | 2018-07-05 15:08:24 -0700 |
---|---|---|
committer | Minh Nguyễn <mxn@1ec5.org> | 2018-07-09 16:02:40 -0700 |
commit | f11ab91fc448aca1155b42a53aaa77cfce62f412 (patch) | |
tree | a463898359e31efa6852dde646ff88f7b575399a /platform/darwin/src/NSExpression+MGLAdditions.mm | |
parent | d6a454ba8eb4546a52d941c63bf0331353873ad6 (diff) | |
download | qtlocation-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.mm | 9 |
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; |