diff options
-rw-r--r-- | platform/darwin/src/NSExpression+MGLAdditions.mm | 15 | ||||
-rw-r--r-- | platform/darwin/test/MGLExpressionTests.mm | 18 |
2 files changed, 33 insertions, 0 deletions
diff --git a/platform/darwin/src/NSExpression+MGLAdditions.mm b/platform/darwin/src/NSExpression+MGLAdditions.mm index 1fcaa5136d..2b42fb6e78 100644 --- a/platform/darwin/src/NSExpression+MGLAdditions.mm +++ b/platform/darwin/src/NSExpression+MGLAdditions.mm @@ -465,6 +465,12 @@ NSArray *MGLSubexpressionsWithJSONObjects(NSArray *objects) { return [NSExpression expressionForVariable:@"zoomLevel"]; } else if ([op isEqualToString:@"heatmap-density"]) { return [NSExpression expressionForVariable:@"heatmapDensity"]; + } else if ([op isEqualToString:@"geometry-type"]) { + return [NSExpression expressionForVariable:@"geometryType"]; + } else if ([op isEqualToString:@"id"]) { + return [NSExpression expressionForVariable:@"featureId"]; + } else if ([op isEqualToString:@"properties"]) { + return [NSExpression expressionForVariable:@"featureProperties"]; } else if ([op isEqualToString:@"let"]) { NSExpression *operand = [NSExpression mgl_expressionWithJSONObject:argumentObjects.lastObject]; NSArray *bindingObjects = [argumentObjects subarrayWithRange:NSMakeRange(0, argumentObjects.count - 1)]; @@ -553,6 +559,15 @@ NSArray *MGLSubexpressionsWithJSONObjects(NSArray *objects) { if ([self.variable isEqualToString:@"zoomLevel"]) { return @[@"zoom"]; } + if ([self.variable isEqualToString:@"geometryType"]) { + return @[@"geometry-type"]; + } + if ([self.variable isEqualToString:@"featureId"]) { + return @[@"id"]; + } + if ([self.variable isEqualToString:@"featureProperties"]) { + return @[@"properties"]; + } return @[@"var", self.variable]; } diff --git a/platform/darwin/test/MGLExpressionTests.mm b/platform/darwin/test/MGLExpressionTests.mm index 4107306a5b..f489b3f79a 100644 --- a/platform/darwin/test/MGLExpressionTests.mm +++ b/platform/darwin/test/MGLExpressionTests.mm @@ -171,6 +171,24 @@ using namespace std::string_literals; XCTAssertEqualObjects([expression expressionValueWithObject:nil context:context], @1); } { + NSExpression *expression = [NSExpression expressionForVariable:@"geometryType"]; + XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, @[@"geometry-type"]); + XCTAssertEqualObjects([NSExpression expressionWithFormat:@"$geometryType"].mgl_jsonExpressionObject, @[@"geometry-type"]); + XCTAssertEqualObjects([NSExpression mgl_expressionWithJSONObject:@[@"geometry-type"]], expression); + } + { + NSExpression *expression = [NSExpression expressionForVariable:@"featureId"]; + XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, @[@"id"]); + XCTAssertEqualObjects([NSExpression expressionWithFormat:@"$featureId"].mgl_jsonExpressionObject, @[@"id"]); + XCTAssertEqualObjects([NSExpression mgl_expressionWithJSONObject:@[@"id"]], expression); + } + { + NSExpression *expression = [NSExpression expressionForVariable:@"featureProperties"]; + XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, @[@"properties"]); + XCTAssertEqualObjects([NSExpression expressionWithFormat:@"$featureProperties"].mgl_jsonExpressionObject, @[@"properties"]); + XCTAssertEqualObjects([NSExpression mgl_expressionWithJSONObject:@[@"properties"]], expression); + } + { NSExpression *expression = [NSExpression expressionForVariable:@"loremIpsum"]; NSArray *jsonExpression = @[@"var", @"loremIpsum"]; XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression); |