@@ -50,13 +50,39 @@ def aggregator(tags):
50
50
name = tags .get ("name" )
51
51
if name is not None and ("-" in name or "(" in name ):
52
52
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
60
86
self .aggregator = aggregator
61
87
self .split = self .split_sp_eu
62
88
elif style == "sp_ast" :
@@ -97,6 +123,9 @@ def aggregator(tags):
97
123
self .lang_regex_script = list (map (lambda l : [l , regex .compile (r"^[\p{{Common}}{0}]+$" .format (gen_regex (language2scripts [l ])), flags = regex .V1 )], lang ))
98
124
99
125
def filter_fix_already_existing (self , names , s ):
126
+ if self .father .config .options .get ("multilingual_style" ) == "sp_eu" :
127
+ return []
128
+
100
129
return list (filter (
101
130
lambda d : len (d ) > 0 ,
102
131
map (
@@ -177,6 +206,13 @@ def split_sp_eu(self, name):
177
206
if "-" not in name and "(" not in name :
178
207
return self .split_delimitor (name , '/' , False )
179
208
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
+
180
216
def split_sp_ast (self , name ):
181
217
if "-" not in name and "(" not in name :
182
218
return self .split_delimitor (name , '/' , True )
@@ -348,3 +384,27 @@ class father:
348
384
349
385
assert not self .p .way (None , {"name" : u"Avenue جادة" , "name:fr" : u"Avenue" , "name:ar" : u"جادة" }, None )
350
386
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