示例#1
0
def test_adjacent_capture_sequences():
    grepper = Grepper("the %{0S1} %{1} ran away")
    match = grepper.match_line("the big brown fox ran away")
    assert bool(match)
    assert match.token(0) == "big brown"
    assert match.token(1) == "fox"

    assert match.re == re.compile(
        "^the\\ (?P<token_0>(?:\\S*\\s\\S*){1}\\S*)\\ (?P<token_1>.*?)\\ ran\\ away$"
    )
    assert match.pattern == "the %{0S1} %{1} ran away"
示例#2
0
def grep(pattern: str, flags: str, files: List[str]) -> str:
    grepper = Grepper(pattern, flags, files)
    return grepper.run()
示例#3
0
def test_matches_multiple_patterns(line, expected):
    grepper = Grepper("foo", "baz")
    assert bool(grepper.match_line(line)) == expected
示例#4
0
def test_raises_on_duplicate_tokens():
    with pytest.raises(ValueError):
        Grepper("foo %{0} is a %{0}")
示例#5
0
def test_patterns(pattern, test_string, expected):
    grepper = Grepper(pattern)
    assert bool(grepper.match_line(test_string)) == expected
示例#6
0
def test_raises_when_no_patterns_provided():
    with pytest.raises(ValueError):
        Grepper()
示例#7
0
def test_map_token_capture_to_re(token_capture, regex):
    mapped = Grepper.map_pattern_to_re(re.escape(token_capture))
    assert mapped == regex