Skip to content

Commit 9c2b67d

Browse files
authored
Combined name for basque language (#2484)
1 parent bf01c34 commit 9c2b67d

File tree

1 file changed

+67
-7
lines changed

1 file changed

+67
-7
lines changed

plugins/Name_Multilingual.py

Lines changed: 67 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -50,13 +50,39 @@ def aggregator(tags):
5050
name = tags.get("name")
5151
if name is not None and ("-" in name or "(" in name):
5252
return []
53-
separator = " / " if name is None or " / " in name else "/"
54-
return [
55-
{"name": tags["name:"+lang[0]].strip()},
56-
{"name": tags["name:"+lang[1]].strip()},
57-
{"name": tags["name:"+lang[0]].strip() + separator + tags["name:"+lang[1].strip()]},
58-
{"name": tags["name:"+lang[1]].strip() + separator + tags["name:"+lang[0].strip()]},
59-
] if tags.get("name:"+lang[0]) and tags.get("name:"+lang[1]) and tags["name:"+lang[0]].strip() != tags["name:"+lang[1]].strip() else [{"name": tags.get("name:"+lang[0], tags.get("name:"+lang[1])).strip()}]
53+
separator = " / "
54+
55+
str1 = tags.get("name:" + lang[0])
56+
str2 = tags.get("name:" + lang[1])
57+
58+
combined = self.merge_sp_eu(str1, str2)
59+
60+
value = []
61+
62+
if str1 and not str2:
63+
value.append({"name": str1.strip()})
64+
65+
if str2 and not str1:
66+
value.append({"name": str2.strip()})
67+
68+
if str1 and str2 and not combined:
69+
value.append({"name": str1.strip() + separator + str2.strip()})
70+
value.append({"name": str2.strip() + separator + str1.strip()})
71+
72+
if combined:
73+
value.append({"name": combined})
74+
75+
if name and str1 and name != str1 and separator not in name:
76+
namestr1 = self.merge_sp_eu(name, str1)
77+
value.append({"name": namestr1 or name.strip() + separator + str1.strip(), f"name:{lang[1]}": name })
78+
value.append({"name": namestr1 or str1.strip() + separator + name.strip(), f"name:{lang[1]}": name })
79+
80+
if name and str2 and name != str2 and separator not in name:
81+
namestr2 = self.merge_sp_eu(name, str2) if separator not in name else None
82+
value.append({"name": namestr2 or name.strip() + separator + str2.strip(), f"name:{lang[0]}": name })
83+
value.append({"name": namestr2 or str2.strip() + separator + name.strip(), f"name:{lang[0]}": name })
84+
85+
return value
6086
self.aggregator = aggregator
6187
self.split = self.split_sp_eu
6288
elif style == "sp_ast":
@@ -97,6 +123,9 @@ def aggregator(tags):
97123
self.lang_regex_script = list(map(lambda l: [l, regex.compile(r"^[\p{{Common}}{0}]+$".format(gen_regex(language2scripts[l])), flags=regex.V1)], lang))
98124

99125
def filter_fix_already_existing(self, names, s):
126+
if self.father.config.options.get("multilingual_style") == "sp_eu":
127+
return []
128+
100129
return list(filter(
101130
lambda d: len(d) > 0,
102131
map(
@@ -177,6 +206,13 @@ def split_sp_eu(self, name):
177206
if "-" not in name and "(" not in name:
178207
return self.split_delimitor(name, '/', False)
179208

209+
def merge_sp_eu(self, str1, str2):
210+
if not str1 or not str2:
211+
return None
212+
if str1.split()[1:] != str2.split()[:-1]:
213+
return None
214+
return str1.split()[0] + " " + str2
215+
180216
def split_sp_ast(self, name):
181217
if "-" not in name and "(" not in name:
182218
return self.split_delimitor(name, '/', True)
@@ -348,3 +384,27 @@ class father:
348384

349385
assert not self.p.way(None, {"name": u"Avenue جادة", "name:fr": u"Avenue", "name:ar": u"جادة"}, None)
350386
assert not self.p.way(None, {"name": u"Avenue 17 / جادة 17", "name:fr": u"Avenue 17", "name:ar": u"جادة 17"}, None)
387+
388+
def test_eu(self):
389+
TestPluginCommon.setUp(self)
390+
self.p = Name_Multilingual(None)
391+
class _config:
392+
options = {"language": ["es", "eu"], "multilingual_style": "sp_eu"}
393+
class father:
394+
config = _config()
395+
self.p.father = father()
396+
self.p.init(None)
397+
398+
assert not self.p.way(None, {"name": "Carretera Ollaretxe errepidea", "name:es": "Carretera Ollaretxe", "name:eu": "Ollaretxe errepidea"}, None)
399+
assert not self.p.way(None, {"name": "Kale Nagusia / Calle Mayor", "name:es": "Calle Mayor", "name:eu": "Kale Nagusia"}, None)
400+
assert not self.p.way(None, {"name": "Vicente Blasco Ibañez kalea / Calle Vicente Blasco Ibáñez", "name:es": "Calle Vicente Blasco Ibáñez", "name:eu": "Vicente Blasco Ibañez kalea"}, None)
401+
assert not self.p.way(None, {"name": "Calle San Diego kalea", "name:es": "Calle San Diego", "name:eu": "San Diego kalea"}, None)
402+
assert not self.p.way(None, {"name": "Calle Islas Canarias / Kanariar Uharteen kalea", "name:es": "Calle Islas Canarias", "name:eu": "Kanariar Uharteen kalea"}, None)
403+
assert not self.p.way(None, {"name": "Vicente Blasco Ibañez kalea / Calle Vicente Blasco Ibáñez", "name:es": "", "name:eu": ""}, None)
404+
assert not self.p.way(None, {"name": "Calle San Diego"}, None)
405+
assert self.p.way(None, {"name": "Calle Islas Canarias / Kanariar Uharteen kalea", "name:es": "Calle Canarias", "name:eu": "Kanarias kalea"}, None)
406+
assert self.p.way(None, {"name": "Calle San Diego", "name:eu": "San Diego kalea"}, None)
407+
assert self.p.way(None, {"name": "Kale Nagusia", "name:es": "Calle Mayor"}, None)
408+
assert self.p.way(None, {"name": "Carretera Ollaretxe", "name:es": "Carretera Ollaretxe", "name:eu": "Ollaretxe errepidea"}, None)
409+
assert self.p.way(None, {"name:eu": "San Diego kalea"}, None)
410+
assert self.p.way(None, {"name:es": "Calle Mayor"}, None)

0 commit comments

Comments
 (0)