コード例 #1
0
def test_core_parse():
    parser = Parser()
    a = A()
    parser.register(a.pattern_d, a.render_digit)

    source = "123456789"
    assert parser.parse(source) == source
コード例 #2
0
ファイル: test_core_split.py プロジェクト: timvink/pheasant
def test_split():
    a = Renderer_A()
    parser = Parser()
    parser.register(a.pattern_ab, a.render_ab)
    parser.register(a.pattern_cd, a.render_cd)
    assert len(parser.patterns) == 2
    assert len(parser.renders) == 2
    assert len(parser.cell_classes) == 2
    keys = list(parser.patterns.keys())
    assert keys == ["renderer_a__ab", "renderer_a__cd"]

    source = "a ab ba cd dc a ab a ab a ab"
    splitter = parser.split(source)
    cell = next(splitter)
    assert repr(cell) == "Cell(source='a ', match=None, output='')"
    cell = next(splitter)
    assert cell.match is not None
    assert list(cell.render(splitter, parser)) == ["ba"]
    cell = next(splitter)
    cell = next(splitter)
    assert cell.match is not None
    assert cell.parse(splitter, parser) == "dc"
    assert splitter.send('a ab') is None
    cell = next(splitter)
    assert repr(cell) == "Cell(source='a ', match=None, output='')"
    cell = next(splitter)
    assert cell.match is not None
    assert list(cell.render(splitter, parser)) == ["ba"]
コード例 #3
0
def test_core_parse_with_decorate():
    parser = Parser()
    a = B()
    parser.register(a.pattern_a, a.render_a)
    parser.register(a.pattern_b, a.render_b)

    source = "a12aa345"
    assert parser.parse(source) == "{B}<12>[{B}<345>]"
コード例 #4
0
def test_core_parse_complex():
    parser = Parser()
    a = A()
    parser.register(a.pattern_d, a.render_digit)
    parser.register(a.pattern_w, a.render_word)

    source = "1a b2b abb 3bbacb5"
    assert parser.parse(source) == "1a [2] ba[ b]3[[a]][4][5]"
コード例 #5
0
ファイル: renderer.py プロジェクト: timvink/pheasant
 def configure_parser(self, parser: Parser) -> Parser:
     for render_name, pattern in self.patterns.items():
         render = self.renders[render_name]
         parser.register(pattern, render, render_name)
     return parser