def test_preserve_escapes():
    lex = PreprocessVariablesLexer()

    lex.process(r"Normal \text \_other\_")

    assert lex.tokens == [
        Text("N"),
        Text("o"),
        Text("r"),
        Text("m"),
        Text("a"),
        Text("l"),
        Text(" "),
        Literal("\\"),
        Text("t"),
        Text("e"),
        Text("x"),
        Text("t"),
        Text(" "),
        Literal("\\"),
        Text("_"),
        Text("o"),
        Text("t"),
        Text("h"),
        Text("e"),
        Text("r"),
        Literal("\\"),
        Text("_"),
        Text("\n"),
    ]
Esempio n. 2
0
def test_put_token():
    p = init_parser("\n")

    assert p.get_token() == EOL
    p.put_token(Literal("*"))
    assert p.get_token() == Literal("*")
    assert p.get_token() == EOL
    assert p.get_token() == EOF
Esempio n. 3
0
def test_variable_negation():
    lex = MainLexer()

    lex.process(":!variable:")

    assert lex.tokens == [
        Literal(":"),
        Text("!variable"),
        Literal(":"),
        EOL,
        EOF,
    ]
Esempio n. 4
0
def test_attributes():
    lex = MainLexer()

    lex.process("[name]")

    assert lex.tokens == [
        Literal("["),
        Text("name"),
        Literal("]"),
        EOL,
        EOF,
    ]
Esempio n. 5
0
def test_backtick():
    lex = TextLexer()

    lex.process("`backtick`")

    assert lex.tokens == [
        Literal("`"),
        Text("backtick"),
        Literal("`"),
        EOL,
        EOF,
    ]
Esempio n. 6
0
def test_command_without_arguments():
    lex = MainLexer()

    lex.process("::command:")

    assert lex.tokens == [
        Literal("::"),
        Text("command"),
        Literal(":"),
        EOL,
        EOF,
    ]
Esempio n. 7
0
def test_star():
    lex = TextLexer()

    lex.process("*star*")

    assert lex.tokens == [
        Literal("*"),
        Text("star"),
        Literal("*"),
        EOL,
        EOF,
    ]
Esempio n. 8
0
def test_square_brackets():
    lex = TextLexer()

    lex.process("[square]")

    assert lex.tokens == [
        Literal("["),
        Text("square"),
        Literal("]"),
        EOL,
        EOF,
    ]
Esempio n. 9
0
def test_curly_braces():
    lex = TextLexer()

    lex.process("{curly}")

    assert lex.tokens == [
        Literal("{"),
        Text("curly"),
        Literal("}"),
        EOL,
        EOF,
    ]
Esempio n. 10
0
def test_round_brackets():
    lex = TextLexer()

    lex.process("(round)")

    assert lex.tokens == [
        Literal("("),
        Text("round"),
        Literal(")"),
        EOL,
        EOF,
    ]
Esempio n. 11
0
def test_underscore():
    lex = TextLexer()

    lex.process("_underscore_")

    assert lex.tokens == [
        Literal("_"),
        Text("underscore"),
        Literal("_"),
        EOL,
        EOF,
    ]
Esempio n. 12
0
def test_command():
    lex = MainLexer()

    lex.process("::command:arg0,arg1")

    assert lex.tokens == [
        Literal("::"),
        Text("command"),
        Literal(":"),
        Text("arg0,arg1"),
        EOL,
        EOF,
    ]
Esempio n. 13
0
def test_variable_definition_accepted_characters():
    lex = MainLexer()

    lex.process(":abcAB.C0123-_:value123")

    assert lex.tokens == [
        Literal(":"),
        Text("abcAB.C0123-_"),
        Literal(":"),
        Text("value123"),
        EOL,
        EOF,
    ]
Esempio n. 14
0
def test_variable_definition():
    lex = MainLexer()

    lex.process(":variable:value123")

    assert lex.tokens == [
        Literal(":"),
        Text("variable"),
        Literal(":"),
        Text("value123"),
        EOL,
        EOF,
    ]
Esempio n. 15
0
def test_escaped_quotes():
    lex = TextLexer()

    lex.process(r"\"quotes\"")

    assert lex.tokens == [
        Literal("\\"),
        Literal('"'),
        Text("quotes"),
        Literal("\\"),
        Literal('"'),
        EOL,
        EOF,
    ]
Esempio n. 16
0
def test_single_class():
    lex = TextLexer()

    lex.process("[name]#content#")

    assert lex.tokens == [
        Literal("["),
        Text("name"),
        Literal("]"),
        Literal("#"),
        Text("content"),
        Literal("#"),
        EOL,
        EOF,
    ]
Esempio n. 17
0
def test_macro():
    lex = TextLexer()

    lex.process("[macro](value1,value2)")

    assert lex.tokens == [
        Literal("["),
        Text("macro"),
        Literal("]"),
        Literal("("),
        Text("value1,value2"),
        Literal(")"),
        EOL,
        EOF,
    ]
Esempio n. 18
0
def test_include_content_with_arguments():
    lex = MainLexer()

    lex.process("<< type:/path/to/it.jpg(value1,argument2=value2)")

    assert lex.tokens == [
        Literal("<<"),
        WS(" "),
        Text("type:/path/to/it.jpg"),
        Literal("("),
        Text("value1,argument2=value2"),
        Literal(")"),
        EOL,
        EOF,
    ]
Esempio n. 19
0
def test_escaped_round_brackets():
    lex = TextLexer()

    lex.process(r"\(round\)")

    # Escaped characters are TEXT tokens, not LITERAL
    assert lex.tokens == [
        Literal("\\"),
        Literal("("),
        Text("round"),
        Literal("\\"),
        Literal(")"),
        EOL,
        EOF,
    ]
Esempio n. 20
0
def test_escaped_square_brackets():
    lex = TextLexer()

    lex.process(r"\[square\]")

    # Escaped characters are TEXT tokens, not LITERAL
    assert lex.tokens == [
        Literal("\\"),
        Literal("["),
        Text("square"),
        Literal("\\"),
        Literal("]"),
        EOL,
        EOF,
    ]
Esempio n. 21
0
def test_escaped_underscore():
    lex = TextLexer()

    lex.process(r"\_underscore\_")

    # Escaped characters are TEXT tokens, not LITERAL
    assert lex.tokens == [
        Literal("\\"),
        Literal("_"),
        Text("underscore"),
        Literal("\\"),
        Literal("_"),
        EOL,
        EOF,
    ]
Esempio n. 22
0
def test_macro_named_attributes():
    lex = TextLexer()

    lex.process("[macro](attr1=value1,attr2=value2)")

    assert lex.tokens == [
        Literal("["),
        Text("macro"),
        Literal("]"),
        Literal("("),
        Text("attr1=value1,attr2=value2"),
        Literal(")"),
        EOL,
        EOF,
    ]
Esempio n. 23
0
def test_escaped_curly_braces():
    lex = TextLexer()

    lex.process(r"\{curly\}")

    # Escaped characters are TEXT tokens, not LITERAL
    assert lex.tokens == [
        Literal("\\"),
        Literal("{"),
        Text("curly"),
        Literal("\\"),
        Literal("}"),
        EOL,
        EOF,
    ]
Esempio n. 24
0
def test_multiple_classes():
    lex = TextLexer()

    lex.process("[name1,name2]#content#")

    assert lex.tokens == [
        Literal("["),
        Text("name1,name2"),
        Literal("]"),
        Literal("#"),
        Text("content"),
        Literal("#"),
        EOL,
        EOF,
    ]
Esempio n. 25
0
def test_multiple_named_arguments():
    lex = ArgumentsLexer()

    lex.process("argument1=value1, argument2=value2")

    assert lex.tokens == [
        Text("argument1"),
        Literal("="),
        Text("value1"),
        Literal(","),
        WS(" "),
        Text("argument2"),
        Literal("="),
        Text("value2"),
    ]
Esempio n. 26
0
def test_directive_escape(mock_process_directive):
    lex = MainLexer()

    lex.process("::\\#name:/path/to/file")

    assert not mock_process_directive.called

    assert lex.tokens == [
        Literal("::"),
        Text("#name"),
        Literal(":"),
        Text("/path/to/file"),
        EOL,
        EOF,
    ]
Esempio n. 27
0
def test_escaped_quotes():
    lex = ArgumentsLexer()

    lex.process(r"Argument \"with\" quotes")

    assert lex.tokens == [
        Text("Argument"),
        WS(" "),
        Literal("\\"),
        Literal('"'),
        Text("with"),
        Literal("\\"),
        Literal('"'),
        WS(" "),
        Text("quotes"),
    ]
Esempio n. 28
0
def test_match_only_backticks_and_curly_braces():
    lex = PreprocessVariablesLexer()

    lex.process("Normal text `{curly}` _other_ *text*")

    assert lex.tokens == [
        Text("N"),
        Text("o"),
        Text("r"),
        Text("m"),
        Text("a"),
        Text("l"),
        Text(" "),
        Text("t"),
        Text("e"),
        Text("x"),
        Text("t"),
        Text(" "),
        Literal("`"),
        Literal("{"),
        Text("c"),
        Text("u"),
        Text("r"),
        Text("l"),
        Text("y"),
        Literal("}"),
        Literal("`"),
        Text(" "),
        Text("_"),
        Text("o"),
        Text("t"),
        Text("h"),
        Text("e"),
        Text("r"),
        Text("_"),
        Text(" "),
        Text("*"),
        Text("t"),
        Text("e"),
        Text("x"),
        Text("t"),
        Text("*"),
        Text("\n"),
    ]
Esempio n. 29
0
def test_escape_curly_braces():
    lex = PreprocessVariablesLexer()

    lex.process(r"Normal text \{curly\} _other_ *text*")

    assert lex.tokens == [
        Text("N"),
        Text("o"),
        Text("r"),
        Text("m"),
        Text("a"),
        Text("l"),
        Text(" "),
        Text("t"),
        Text("e"),
        Text("x"),
        Text("t"),
        Text(" "),
        Literal("\\"),
        Literal("{"),
        Text("c"),
        Text("u"),
        Text("r"),
        Text("l"),
        Text("y"),
        Literal("\\"),
        Literal("}"),
        Text(" "),
        Text("_"),
        Text("o"),
        Text("t"),
        Text("h"),
        Text("e"),
        Text("r"),
        Text("_"),
        Text(" "),
        Text("*"),
        Text("t"),
        Text("e"),
        Text("x"),
        Text("t"),
        Text("*"),
        Text("\n"),
    ]
Esempio n. 30
0
def test_single_named_argument():
    lex = ArgumentsLexer()

    lex.process("argument1=value1")

    assert lex.tokens == [
        Text("argument1"),
        Literal("="),
        Text("value1"),
    ]