annual.ruleparser

Parse Rule Expressions.

Functions

rule_parser(→ lark.Lark)

Generate rule parser.

Module Contents

annual.ruleparser.rule_parser(year: int, funcs: dict[str, datetime.date | None] | None = None) lark.Lark

Generate rule parser.

Parameters:
  • year (int) – The year for which new dates are computed.

  • funcs (dict[str, datetime.date | None] | None, optional) – A dictionary of precomputed dates.

Returns:

A Lark parser instance.

Return type:

Lark

Example

>>> from annual.ruleparser import rule_parser
>>> rule_parser(2024).parse('Sunday after may 1')
datetime.date(2024, 5, 5)

You can use the funcs argument to supply precomputed dates, which can be referred to in the given expression.

>>> from annual.ruleparser import rule_parser
>>> year = 2024
>>> funcs = {'easter': datetime.date(year, 3, 31)}
>>> rule_parser(year, funcs).parse('49 days after easter')
datetime.date(2024, 5, 19)