Esempio 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('"')))
Esempio n. 2
0
 def paragraph():
     return pg.AllOf(pg.Ignore(pg.Optional("\n")), pg.Words())
Esempio n. 3
0
 def emphasis():
     return pg.AllOf(lambda: pg.Ignore("*"), lambda: pg.Words(),
                     lambda: pg.Ignore("*"))
Esempio n. 4
0
def paragraph():
    return pg.AllOf(
        span_text)
Esempio n. 5
0
 def bullet():
     return pg.AllOf(pg.Ignore(pg.Optional(pg.Many("\n"))), pg.Ignore("* "),
                     pg.Words())
Esempio n. 6
0
def emphasis():
    return pg.AllOf(
        pg.Ignore('*'),
        pg.Words(),
        pg.Ignore('*'))
Esempio n. 7
0
def blockquote():
    return pg.AllOf(
        pg.Ignore('> '),
        paragraph
        )
Esempio 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))
Esempio n. 9
0
def element():
    return pg.AllOf(open_tag, pg.Optional(sub_element),
                    pg.Ignore(newlines_or_eof), pg.Optional(nested_elements))
Esempio n. 10
0
def doctype():
    return pg.AllOf("!!!", pg.Ignore(newline_or_eof))
Esempio n. 11
0
def sub_element():
    return pg.AllOf(pg.Ignore(": "), open_tag, pg.Optional(sub_element))
Esempio n. 12
0
def content():
    return pg.AllOf(pg.Ignore(pg.OneOf(" | ", " ")),
                    pg.Join(pg.Many(pg.Not(newline_or_eof))))
Esempio n. 13
0
def attribute():
    return pg.OneOf(
        pg.AllOf(identifier_parts, pg.Ignore("="),
                 pg.OneOf(quoted_string, attribute_value_code)), alphanumerics)
Esempio n. 14
0
def attribute_value_code():
    return pg.OneOf(
        pg.AllOf(pg.Ignore("{{"), pg.Join(pg.Many(pg.Not("}}"))),
                 pg.Ignore("}}")), identifier_parts)
Esempio 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())
Esempio 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))
Esempio 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(
            "---",
            "___",
            "***",
            "- - -",
Esempio 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))
Esempio n. 19
0
def code_block():
    return pg.AllOf(
        pg.Indented(
            code_paragraph))
Esempio 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)))
Esempio n. 21
0
def link():
    return pg.AllOf(link_text, link_url)
Esempio 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))))
Esempio n. 23
0
 def list_item():
     return pg.AllOf(pg.Ignore("* "), pg.Words())
Esempio n. 24
0
def text():
    return pg.AllOf(pg.Ignore("| "), pg.Join(pg.Many(pg.Not(newline_or_eof))),
                    pg.Ignore(newline_or_eof))
Esempio n. 25
0
 def indented_bullets():
     return pg.Indented(pg.AllOf(bullet, pg.Optional(indented_bullets, )),
                        optional=True)
Esempio 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)))
Esempio n. 27
0
 def word_aab():
     return pg.AllOf(word_a, letter_b)
Esempio 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
Esempio n. 29
0
 def body():
     return pg.AllOf(optional_a, letters)
Esempio n. 30
0
def tag_class():
    return pg.AllOf(pg.Ignore("."), identifier_parts)