humanized_opening_hours icon indicating copy to clipboard operation
humanized_opening_hours copied to clipboard

Parsing a description ? (reverse parsing)

Open raphodn opened this issue 6 years ago • 3 comments

This tool is really great for parsing (or sanitizing) strings that have the osm opening_hours format, and getting them in a readable description. 💯

hoh.OHParser(" Mo-Fr 08:30-16:30", locale="fr").description()
// ['Du lundi au vendredi : 08:30 – 16:30.']

I was wondering if it was possible to leverage this tool (or another tool ?) to do the other way around ? 👇

hoh.parse_description("Du lundi au vendredi : 08:30 – 16:30", locale="fr")
// Mo-Fr 08:30-16:30

fyi my current implementation/workaround for this is with string replace 🙃

import re

oh_description = "Du lundi au vendredi : 08:30 – 16:30"
oh_description = re.sub("du", "", oh_description, flags=re.IGNORECASE)
oh_description = re.sub("lundi", "Mo", oh_description, flags=re.IGNORECASE)
...

Thanks anyway

raphodn avatar Apr 10 '20 10:04 raphodn

Thank you!

Unfortunately, it would not be easily feasible with HOH by now, because the parsing and the rendering logic are very separated. It may be possible to use a Lark's Transformer to transform the tree (obtained from the parsing of the field) into a string, but all remains to be done, and it would make localisation quite difficult.

This way is feasible for simple fields, but not for more complex fields like Jan-Feb Sa[1] 08:30-16:30. The description (not even implemented) would be something like De janvier à février, le premier samedi du mois : 08:30 – 16:30.

rezemika avatar Apr 11 '20 18:04 rezemika

You're right, it covers 80% of the use-cases, but fails on some specific stuff. I'm making it slowly grow, with tests, I'll see what to do when it becomes un-manageable :)

raphodn avatar Apr 23 '20 14:04 raphodn

Ahah, good luck, I hope it will fit your needs! ^^

rezemika avatar Apr 23 '20 17:04 rezemika