class String(str): def __init__(self, string): self.exprs = None def parse(self, flags): if self.exprs is None: self.exprs = Exprs(str(self)) return self.exprs.expand(flags)
class StringWithUseFlags(str): """ A parsed string with support for use flags. """ def __init__(self, string): self.exprs = None def parse(self, flags): if self.exprs is None: self.exprs = Exprs(str(self)) return self.exprs.expand(flags)
def check_parses_to(string, ast): assert Exprs(string).ast == ast
def check_expand(string, flags, expansion): assert Exprs(string).expand(flags) == expansion
def check_parse_error(string): with pytest.raises(ValueError) as err: Exprs(string) assert "Invalid syntax for string:" in str(err.value)
def parse(self, flags): if self.exprs is None: self.exprs = Exprs(str(self)) return self.exprs.expand(flags)