rezemika / humanized_opening_hours

A parser for the opening_hours fields from OpenStreetMap
GNU Affero General Public License v3.0
26 stars 20 forks source link

Unspecified closing time not supported #36

Closed avanc closed 5 years ago

avanc commented 5 years ago

According to https://wiki.openstreetmap.org/wiki/Key:opening_hours, the following syntax is allowed:

Su 10:00+
Sunday from 10:00 to an unknown or unspecified closing time.

However, hoh returns an error:

>>> import humanized_opening_hours as hoh
>>> oh = hoh.OHParser("Su 10:00+")
Traceback (most recent call last):
  File "/home/klomp/.local/lib/python3.7/site-packages/humanized_opening_hours/main.py", line 91, in __init__
    self._tree = field_parser.parse_field(self.sanitized_field)
  File "/home/klomp/.local/lib/python3.7/site-packages/humanized_opening_hours/field_parser.py", line 267, in parse_field
    tree = PARSER.parse(field)
  File "/home/klomp/.local/lib/python3.7/site-packages/lark/lark.py", line 292, in parse
    return self.parser.parse(text)
  File "/home/klomp/.local/lib/python3.7/site-packages/lark/parser_frontends.py", line 79, in parse
    return self.parser.parse(token_stream, *[sps] if sps is not NotImplemented else [])
  File "/home/klomp/.local/lib/python3.7/site-packages/lark/parsers/lalr_parser.py", line 36, in parse
    return self.parser.parse(*args)
  File "/home/klomp/.local/lib/python3.7/site-packages/lark/parsers/lalr_parser.py", line 81, in parse
    for token in stream:
  File "/home/klomp/.local/lib/python3.7/site-packages/lark/lexer.py", line 354, in lex
    for x in l.lex(stream, self.root_lexer.newline_types, self.root_lexer.ignore_types):
  File "/home/klomp/.local/lib/python3.7/site-packages/lark/lexer.py", line 183, in lex
    raise UnexpectedCharacters(stream, line_ctr.char_pos, line_ctr.line, line_ctr.column, allowed=allowed, state=self.state)
lark.exceptions.UnexpectedCharacters: No terminal defined for '+' at line 1 col 9

Su 10:00+
        ^

Expecting: {'COMMA', 'MINUS', '__ANON_3'}
rezemika commented 5 years ago

Thank you for your issue!

I know this problem. However, it cannot be solved programmatically, because nothing would allow a script to guess this schedule, so it could not compute a closing time (it could close at 10:01 or at 24:00). Sorry for the inconvenience.