diff --git a/matcher/utils.py b/matcher/utils.py index d74701e..fcdb5d8 100644 --- a/matcher/utils.py +++ b/matcher/utils.py @@ -7,6 +7,7 @@ import user_agents import re import pattern.en from datetime import date +from num2words import num2words metres_per_mile = 1609.344 feet_per_metre = 3.28084 @@ -187,4 +188,5 @@ def format_wikibase_time(v): if p == 9: return t[1:5] if p == 7: - return t[1:5] + century = ((int(t[:5]) - 1) // 100) + 1 + return num2words(century, to="ordinal_num") + " century" diff --git a/tests/test_utils.py b/tests/test_utils.py new file mode 100644 index 0000000..cddcbe4 --- /dev/null +++ b/tests/test_utils.py @@ -0,0 +1,19 @@ +from matcher import utils + +def test_pluralize_label(): + v = {"language": "en", "value": "building"} + assert utils.pluralize_label(v) == "buildings" + + v = {"language": "en", "value": "mine"} + assert utils.pluralize_label(v) == "mines" + +def test_format_wikibase_time_year(): + v = {"time": "+1950-00-00T00:00:00Z", "precision": 9} + assert utils.format_wikibase_time(v) == "1950" + +def test_format_wikibase_time_century(): + v = {"time": "+0800-00-00T00:00:00Z", "precision": 7} + assert utils.format_wikibase_time(v) == "8th century" + + v = {"time": "+1950-00-00T00:00:00Z", "precision": 7} + assert utils.format_wikibase_time(v) == "20th century"