Exemplo n.º 1
0
def quoted_string():
    return pg.OneOf(
        pg.AllOf(pg.Ignore("'"), pg.Optional(pg.Join(pg.Many(pg.Not("'")))),
                 pg.Ignore("'")),
        pg.AllOf(pg.Ignore('"'), pg.Optional(pg.Join(pg.Many(pg.Not('"')))),
                 pg.Ignore('"')))
Exemplo n.º 2
0
 def paragraph():
     return pg.AllOf(pg.Ignore(pg.Optional("\n")), pg.Words())
Exemplo n.º 3
0
 def emphasis():
     return pg.AllOf(lambda: pg.Ignore("*"), lambda: pg.Words(),
                     lambda: pg.Ignore("*"))
Exemplo n.º 4
0
def paragraph():
    return pg.AllOf(
        span_text)
Exemplo n.º 5
0
 def bullet():
     return pg.AllOf(pg.Ignore(pg.Optional(pg.Many("\n"))), pg.Ignore("* "),
                     pg.Words())
Exemplo n.º 6
0
def emphasis():
    return pg.AllOf(
        pg.Ignore('*'),
        pg.Words(),
        pg.Ignore('*'))
Exemplo n.º 7
0
def blockquote():
    return pg.AllOf(
        pg.Ignore('> '),
        paragraph
        )
Exemplo n.º 8
0
def nested_elements():
    return pg.AllOf(
        pg.Indented(
            pg.Many(pg.OneOf(block, code_block, element, comment, text))),
        pg.Ignore(newlines_or_eof))
Exemplo n.º 9
0
def element():
    return pg.AllOf(open_tag, pg.Optional(sub_element),
                    pg.Ignore(newlines_or_eof), pg.Optional(nested_elements))
Exemplo n.º 10
0
def doctype():
    return pg.AllOf("!!!", pg.Ignore(newline_or_eof))
Exemplo n.º 11
0
def sub_element():
    return pg.AllOf(pg.Ignore(": "), open_tag, pg.Optional(sub_element))
Exemplo n.º 12
0
def content():
    return pg.AllOf(pg.Ignore(pg.OneOf(" | ", " ")),
                    pg.Join(pg.Many(pg.Not(newline_or_eof))))
Exemplo n.º 13
0
def attribute():
    return pg.OneOf(
        pg.AllOf(identifier_parts, pg.Ignore("="),
                 pg.OneOf(quoted_string, attribute_value_code)), alphanumerics)
Exemplo n.º 14
0
def attribute_value_code():
    return pg.OneOf(
        pg.AllOf(pg.Ignore("{{"), pg.Join(pg.Many(pg.Not("}}"))),
                 pg.Ignore("}}")), identifier_parts)
Exemplo n.º 15
0
 def numbered_bullet():
     return pg.AllOf(pg.Ignore(pg.Optional(pg.Many("\n"))),
                     pg.Ignore(pg.Words(letters="1234567890")),
                     pg.Ignore(". "), pg.Words())
Exemplo n.º 16
0
def comment():
    return pg.AllOf(pg.Optional(pg.Ignore(pg.Many(" "))), pg.Ignore("// "),
                    pg.Join(pg.Many(pg.Not(newline_or_eof))),
                    pg.Ignore(newline_or_eof))
Exemplo n.º 17
0
span_text = pg.Many(
    plain,
    emphasis,
    link,
    code)

def code_line():
    return pg.Escaped(
        pg.Join(
            pg.Many(
                pg.Not("\n"))))

code_paragraph = pg.AllOf(
    pg.Ignore(
        pg.Optional(
            pg.Many("\n"))),
    pg.Many(
        code_line))

def code_block():
    return pg.AllOf(
        pg.Indented(
            code_paragraph))

def horizontal_rule():
    return pg.AllOf(
        pg.OneOf(
            "---",
            "___",
            "***",
            "- - -",
Exemplo n.º 18
0
def code_block():
    return pg.AllOf(pg.Ignore("!="), pg.Join(pg.Many(pg.Not(newline_or_eof))),
                    pg.Ignore(newline_or_eof))
Exemplo n.º 19
0
def code_block():
    return pg.AllOf(
        pg.Indented(
            code_paragraph))
Exemplo n.º 20
0
def custom_tag(tag_name):
    return pg.NamedPattern(
        tag_name,
        pg.AllOf(pg.Ignore(tag_name), pg.Ignore(" "), identifier_parts,
                 pg.Ignore(newline_or_eof), pg.Optional(nested_elements)))
Exemplo n.º 21
0
def link():
    return pg.AllOf(link_text, link_url)
Exemplo n.º 22
0
def extends():
    return pg.AllOf(pg.Ignore("extends"), pg.Ignore(" "), filename_parts,
                    pg.Ignore(newlines_or_eof),
                    pg.Optional(pg.Many(pg.OneOf(replace, append))))
Exemplo n.º 23
0
 def list_item():
     return pg.AllOf(pg.Ignore("* "), pg.Words())
Exemplo n.º 24
0
def text():
    return pg.AllOf(pg.Ignore("| "), pg.Join(pg.Many(pg.Not(newline_or_eof))),
                    pg.Ignore(newline_or_eof))
Exemplo n.º 25
0
 def indented_bullets():
     return pg.Indented(pg.AllOf(bullet, pg.Optional(indented_bullets, )),
                        optional=True)
Exemplo n.º 26
0
def open_tag():
    return pg.AllOf(
        alphanumerics,
        pg.Optional(pg.Many(pg.OneOf(tag_id, tag_class, attribute_list))),
        pg.Optional(pg.OneOf(content, code)))
Exemplo n.º 27
0
 def word_aab():
     return pg.AllOf(word_a, letter_b)
Exemplo n.º 28
0
def test_indented():
    list_item = pg.NamedPattern(
        'list_item',
        pg.AllOf(
            pg.Ignore(
                pg.Optional(
                    pg.Many("\n"))),
            pg.Ignore("* "),
            pg.Words()))

    @pg.lazy
    def nested_list():
        return pg.AllOf(
            pg.Ignore(
                pg.Optional(
                    pg.Many("\n"))),
            pg.Indented(
                pg.AllOf(
                    list_item,
                pg.Optional(
                    pg.Many(
                        list_item,
                        nested_list))),
                optional=True))

    data = """
* A bullet
"""

    expected = [
        'nested_list',
        ['list_item', "A bullet"]]

    result = pg.parse_string(data, nested_list)
    assert expected == result

    data = """
* A bullet
  * A bullet in a sublist
"""

    expected = [
        'nested_list',
        ['list_item', "A bullet"],
        ['nested_list',
         ['list_item', "A bullet in a sublist"]]]

    result = pg.parse_string(data, nested_list)
    assert expected == result

    data = """
* A bullet
  * A bullet in a sublist
  * Another bullet in a sublist
* Another bullet in the first list
"""

    expected = [
        'nested_list',
        ['list_item', "A bullet"],
        ['nested_list',
         ['list_item', "A bullet in a sublist"],
         ['list_item', "Another bullet in a sublist"]],
        ['list_item', "Another bullet in the first list"]]

    result = pg.parse_string(data, nested_list)
    assert expected == result
Exemplo n.º 29
0
 def body():
     return pg.AllOf(optional_a, letters)
Exemplo n.º 30
0
def tag_class():
    return pg.AllOf(pg.Ignore("."), identifier_parts)