diff options
author | Fabian Guerra <fabian.guerra@mapbox.com> | 2018-03-26 16:40:52 -0400 |
---|---|---|
committer | Fabian Guerra <fabian.guerra@mapbox.com> | 2018-03-28 11:12:28 -0400 |
commit | 8d13a109e6eb6d2cd556c9a4806ef5b89c313ecc (patch) | |
tree | 09a99bd5b2b24eff6b5a13c6f0aa17c290df6af5 | |
parent | b5524e893e44fcee1838a10fc1ec305b86e5b7d6 (diff) | |
download | qtlocation-mapboxgl-8d13a109e6eb6d2cd556c9a4806ef5b89c313ecc.tar.gz |
[ios, macos] Implement expressions feature operators.
-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); |