diff options
author | Fabian Guerra Soto <fabian.guerra@mapbox.com> | 2019-04-15 13:54:53 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-04-15 13:54:53 -0700 |
commit | a8526b4c91a2eaad0f915a59f420c513d40aa1ac (patch) | |
tree | b93cdbb4f777cebdb16fc058b8dc4e88b3a4a5fd /platform | |
parent | 0ac95bd994b820f73811863bb744bf8f07459f08 (diff) | |
download | qtlocation-mapboxgl-a8526b4c91a2eaad0f915a59f420c513d40aa1ac.tar.gz |
[ios, macos] Fix MGLSymbolStyleLayer.text localization issue. (#14405)
Fixed an MGLSymbolStyleLayer.text localization bug caused by the introduction of MGLAttributedExpression object. The localization parsing was ignoring the latter.
* [ios, macos] Fix a localization issue.
* [ios, macos] Add formating expressions localization test.
* [ios, macos] Update MGLSymbolStyleLayer.text documentation.
Diffstat (limited to 'platform')
-rwxr-xr-x | platform/darwin/scripts/generate-style-code.js | 3 | ||||
-rw-r--r-- | platform/darwin/src/MGLSymbolStyleLayer.h | 1 | ||||
-rw-r--r-- | platform/darwin/src/NSExpression+MGLAdditions.mm | 6 | ||||
-rw-r--r-- | platform/darwin/test/MGLExpressionTests.mm | 10 |
4 files changed, 20 insertions, 0 deletions
diff --git a/platform/darwin/scripts/generate-style-code.js b/platform/darwin/scripts/generate-style-code.js index 2eabd0a92b..20ad86382c 100755 --- a/platform/darwin/scripts/generate-style-code.js +++ b/platform/darwin/scripts/generate-style-code.js @@ -356,6 +356,9 @@ global.propertyDoc = function (propertyName, property, layerType, kind) { doc += '* Constant array, whose each element is any of the following constant string values:\n'; doc += Object.keys(property.values).map(value => ' * `' + value + '`: ' + property.values[value].doc).join('\n') + '\n'; } + if (property.type === 'formatted') { + doc += '* Formatted expressions.\n'; + } doc += '* Predefined functions, including mathematical and string operators\n' + '* Conditional expressions\n' + '* Variable assignments and references to assigned variables\n'; diff --git a/platform/darwin/src/MGLSymbolStyleLayer.h b/platform/darwin/src/MGLSymbolStyleLayer.h index cf2c1466e7..5c12b28544 100644 --- a/platform/darwin/src/MGLSymbolStyleLayer.h +++ b/platform/darwin/src/MGLSymbolStyleLayer.h @@ -1086,6 +1086,7 @@ MGL_EXPORT You can set this property to an expression containing any of the following: * Constant string values + * Formatted expressions. * Predefined functions, including mathematical and string operators * Conditional expressions * Variable assignments and references to assigned variables diff --git a/platform/darwin/src/NSExpression+MGLAdditions.mm b/platform/darwin/src/NSExpression+MGLAdditions.mm index 4b1fdb818e..9dad00e56e 100644 --- a/platform/darwin/src/NSExpression+MGLAdditions.mm +++ b/platform/darwin/src/NSExpression+MGLAdditions.mm @@ -1471,6 +1471,12 @@ NSDictionary<NSNumber *, NSExpression *> *MGLLocalizedStopDictionary(NSDictionar if (localizedValues != self.constantValue) { return [NSExpression expressionForConstantValue:localizedValues]; } + } else if ([self.constantValue isKindOfClass:[MGLAttributedExpression class]]) { + MGLAttributedExpression *attributedExpression = (MGLAttributedExpression *)self.constantValue; + NSExpression *localizedExpression = [attributedExpression.expression mgl_expressionLocalizedIntoLocale:locale]; + MGLAttributedExpression *localizedAttributedExpression = [MGLAttributedExpression attributedExpression:localizedExpression attributes:attributedExpression.attributes]; + + return [NSExpression expressionForConstantValue:localizedAttributedExpression]; } return self; } diff --git a/platform/darwin/test/MGLExpressionTests.mm b/platform/darwin/test/MGLExpressionTests.mm index e7d1608018..f1fe3ea878 100644 --- a/platform/darwin/test/MGLExpressionTests.mm +++ b/platform/darwin/test/MGLExpressionTests.mm @@ -1200,6 +1200,16 @@ using namespace std::string_literals; XCTAssertEqualObjects([original mgl_expressionLocalizedIntoLocale:nil], expected); } { + NSExpression *keyExpression = [NSExpression expressionForKeyPath:@"name_en"]; + MGLAttributedExpression *attributedExpression = [MGLAttributedExpression attributedExpression:keyExpression attributes:@{}]; + NSExpression *original = [NSExpression expressionForConstantValue:attributedExpression]; + + NSExpression *coalesceExpression = [NSExpression expressionWithFormat:@"mgl_coalesce({%K, %K})", @"name_en", @"name"]; + MGLAttributedExpression *expectedAttributedExpression = [MGLAttributedExpression attributedExpression:coalesceExpression attributes:@{}]; + NSExpression *expected = [NSExpression expressionForConstantValue:expectedAttributedExpression]; + XCTAssertEqualObjects([original mgl_expressionLocalizedIntoLocale:nil], expected); + } + { NSExpression *original = [NSExpression expressionForKeyPath:@"name_en"]; NSExpression *expected = [NSExpression expressionWithFormat:@"mgl_coalesce({%K, %K})", @"name_en", @"name"]; XCTAssertEqualObjects([original mgl_expressionLocalizedIntoLocale:nil], expected); |