Merge pull request #2486 from lonvia/fix-special-phrases

Fix parsing of operator in special phrases
This commit is contained in:
Sarah Hoffmann
2021-10-25 21:45:08 +02:00
committed by GitHub
3 changed files with 24 additions and 9 deletions

View File

@@ -16,4 +16,5 @@ class SpecialPhrase():
# Hack around a bug where building=yes was imported with quotes into the wiki # Hack around a bug where building=yes was imported with quotes into the wiki
self.p_type = re.sub(r'\"|"', '', p_type.strip()) self.p_type = re.sub(r'\"|"', '', p_type.strip())
# Needed if some operator in the wiki are not written in english # Needed if some operator in the wiki are not written in english
p_operator = p_operator.strip().lower()
self.p_operator = '-' if p_operator not in ('near', 'in') else p_operator self.p_operator = '-' if p_operator not in ('near', 'in') else p_operator

View File

@@ -30,7 +30,7 @@ def test_parse_xml(sp_wiki_loader, xml_wiki_content):
Should return the right SpecialPhrase objects. Should return the right SpecialPhrase objects.
""" """
phrases = sp_wiki_loader.parse_xml(xml_wiki_content) phrases = sp_wiki_loader.parse_xml(xml_wiki_content)
assert check_phrases_content(phrases) check_phrases_content(phrases)
def test_next(sp_wiki_loader): def test_next(sp_wiki_loader):
@@ -40,15 +40,29 @@ def test_next(sp_wiki_loader):
the 'en' special phrases. the 'en' special phrases.
""" """
phrases = next(sp_wiki_loader) phrases = next(sp_wiki_loader)
assert check_phrases_content(phrases) check_phrases_content(phrases)
def check_phrases_content(phrases): def check_phrases_content(phrases):
""" """
Asserts that the given phrases list contains Asserts that the given phrases list contains
the right phrases of the 'en' special phrases. the right phrases of the 'en' special phrases.
""" """
return len(phrases) > 1 \ assert set((p.p_label, p.p_class, p.p_type, p.p_operator) for p in phrases) ==\
and any(p.p_label == 'Embassies' and p.p_class == 'amenity' and p.p_type == 'embassy' {('Zip Line', 'aerialway', 'zip_line', '-'),
and p.p_operator == '-' for p in phrases) \ ('Zip Lines', 'aerialway', 'zip_line', '-'),
and any(p.p_label == 'Zip Line' and p.p_class == 'aerialway' and p.p_type == 'zip_line' ('Zip Line in', 'aerialway', 'zip_line', 'in'),
and p.p_operator == '-' for p in phrases) ('Zip Lines in', 'aerialway', 'zip_line', 'in'),
('Zip Line near', 'aerialway', 'zip_line', 'near'),
('Animal shelter', 'amenity', 'animal_shelter', '-'),
('Animal shelters', 'amenity', 'animal_shelter', '-'),
('Animal shelter in', 'amenity', 'animal_shelter', 'in'),
('Animal shelters in', 'amenity', 'animal_shelter', 'in'),
('Animal shelter near', 'amenity', 'animal_shelter', 'near'),
('Animal shelters near', 'amenity', 'animal_shelter', 'near'),
('Drinking Water near', 'amenity', 'drinking_water', 'near'),
('Water', 'amenity', 'drinking_water', '-'),
('Water in', 'amenity', 'drinking_water', 'in'),
('Water near', 'amenity', 'drinking_water', 'near'),
('Embassy', 'amenity', 'embassy', '-'),
('Embassys', 'amenity', 'embassy', '-'),
('Embassies', 'amenity', 'embassy', '-')}

View File

@@ -70,9 +70,9 @@
<model>wikitext</model> <model>wikitext</model>
<format>text/x-wiki</format> <format>text/x-wiki</format>
<text bytes="158218" sha1="cst5x7tt58izti1pxzgljf27tx8qjcj" xml:space="preserve"> <text bytes="158218" sha1="cst5x7tt58izti1pxzgljf27tx8qjcj" xml:space="preserve">
== en == {| class="wikitable sortable" |- ! Word / Phrase !! Key !! Value !! Operator !! Plural |- | Zip Line || aerialway || zip_line || - || N |- | Zip Lines || aerialway || zip_line || - || Y |- | Zip Line in || aerialway || zip_line || in || N |- | Zip Lines in || aerialway || zip_line || in || Y |- | Zip Line near || aerialway || zip_line || near || N |- | Animal shelter || amenity || animal_shelter || - || N |- | Animal shelters || amenity || animal_shelter || - || Y |- | Animal shelter in || amenity || animal_shelter || in || N |- | Animal shelters in || amenity || animal_shelter || in || Y |- | Animal shelter near || amenity || animal_shelter || near|| N |- | Animal shelters near || amenity || animal_shelter || near|| Y |- | Drinking Water near || amenity || drinking_water || near || N |- | Water || amenity || drinking_water || - || N |- | Water in || amenity || drinking_water || in || N |- | Water near || amenity || drinking_water || near || N |- | Embassy || amenity || embassy || - || N |- | Embassys || amenity || embassy || - || Y |- | Embassies || amenity || embassy || - || Y |- |Coworkings near |amenity |coworking_space |near |Y |} [[Category:Word list]] == en == {| class="wikitable sortable" |- ! Word / Phrase !! Key !! Value !! Operator !! Plural |- | Zip Line || aerialway || zip_line || - || N |- | Zip Lines || aerialway || zip_line || - || Y |- | Zip Line in || aerialway || zip_line || in || N |- | Zip Lines in || aerialway || zip_line || in || Y |- | Zip Line near || aerialway || zip_line || near || N |- | Animal shelter || amenity || animal_shelter || - || N |- | Animal shelters || amenity || animal_shelter || - || Y |- | Animal shelter in || amenity || animal_shelter || in || N |- | Animal shelters in || amenity || animal_shelter || in || Y |- | Animal shelter near || amenity || animal_shelter || near|| N |- | Animal shelters near || amenity || animal_shelter || NEAR|| Y |- | Drinking Water near || amenity || drinking_water || near || N |- | Water || amenity || drinking_water || - || N |- | Water in || amenity || drinking_water || In || N |- | Water near || amenity || drinking_water || near || N |- | Embassy || amenity || embassy || - || N |- | Embassys || amenity || embassy || - || Y |- | Embassies || amenity || embassy || - || Y |- |Coworkings near |amenity |coworking_space |near |Y |} [[Category:Word list]]
</text> </text>
<sha1>cst5x7tt58izti1pxzgljf27tx8qjcj</sha1> <sha1>cst5x7tt58izti1pxzgljf27tx8qjcj</sha1>
</revision> </revision>
</page> </page>
</mediawiki> </mediawiki>