Skip to content

Commit 5bf29b8

Browse files
Localize functions #2
1 parent 247bc9e commit 5bf29b8

File tree

1 file changed

+36
-10
lines changed

1 file changed

+36
-10
lines changed

index.js

+36-10
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,41 @@ function MapboxBrowserLanguage(options) {
2020
}, options);
2121
}
2222

23-
function isNameField(field) {
24-
return typeof field === 'string' && field.startsWith('{name');
23+
function isNameStringField(property) {
24+
return typeof property === 'string' && property.startsWith('{name');
25+
}
26+
27+
function isNameFunctionField(property) {
28+
return property.stops && property.stops.filter(function (stop) {
29+
return stop[1].startsWith('{name');
30+
}).length > 0;
31+
}
32+
33+
function adaptPropertyLanguage(property, languageFieldName) {
34+
if (isNameStringField(property)) return languageFieldName;
35+
if (isNameFunctionField(property)) {
36+
const newStops = property.stops.map(function (stop) {
37+
if (stop[1].startsWith('{name')) {
38+
return [stop[0], languageFieldName];
39+
}
40+
return stop;
41+
});
42+
return Object.assign({}, property, {
43+
stops: newStops
44+
});
45+
}
46+
return property;
47+
}
48+
49+
function changeLayerTextProperty(layer, languageFieldName) {
50+
if (layer.layout && layer.layout['text-field']) {
51+
return Object.assign({}, layer, {
52+
layout: Object.assign({}, layer.layout, {
53+
'text-field': adaptPropertyLanguage(layer.layout['text-field'], languageFieldName)
54+
})
55+
});
56+
}
57+
return layer;
2558
}
2659

2760
/**
@@ -32,14 +65,7 @@ MapboxBrowserLanguage.prototype.changeLanguage = function (style) {
3265
var field = this.options.getLanguageField();
3366

3467
var changedLayers = style.layers.map(function (layer) {
35-
if (layer.layout && layer.layout['text-field'] && isNameField(layer.layout['text-field'])) {
36-
return Object.assign({}, layer, {
37-
layout: Object.assign({}, layer.layout, {
38-
'text-field': field
39-
})
40-
});
41-
}
42-
return layer;
68+
return changeLayerTextProperty(layer, field);
4369
});
4470

4571
var languageStyle = Object.assign({}, style, {

0 commit comments

Comments
 (0)