예제 #1
0
파일: jade.py 프로젝트: Singletoned/jade
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('"')))
예제 #2
0
 def paragraph():
     return pg.AllOf(pg.Ignore(pg.Optional("\n")), pg.Words())
예제 #3
0
 def emphasis():
     return pg.AllOf(lambda: pg.Ignore("*"), lambda: pg.Words(),
                     lambda: pg.Ignore("*"))
예제 #4
0
def paragraph():
    return pg.AllOf(
        span_text)
예제 #5
0
 def bullet():
     return pg.AllOf(pg.Ignore(pg.Optional(pg.Many("\n"))), pg.Ignore("* "),
                     pg.Words())
예제 #6
0
def emphasis():
    return pg.AllOf(
        pg.Ignore('*'),
        pg.Words(),
        pg.Ignore('*'))
예제 #7
0
def blockquote():
    return pg.AllOf(
        pg.Ignore('> '),
        paragraph
        )
예제 #8
0
파일: jade.py 프로젝트: Singletoned/jade
def nested_elements():
    return pg.AllOf(
        pg.Indented(
            pg.Many(pg.OneOf(block, code_block, element, comment, text))),
        pg.Ignore(newlines_or_eof))
예제 #9
0
파일: jade.py 프로젝트: Singletoned/jade
def element():
    return pg.AllOf(open_tag, pg.Optional(sub_element),
                    pg.Ignore(newlines_or_eof), pg.Optional(nested_elements))
예제 #10
0
파일: jade.py 프로젝트: Singletoned/jade
def doctype():
    return pg.AllOf("!!!", pg.Ignore(newline_or_eof))
예제 #11
0
파일: jade.py 프로젝트: Singletoned/jade
def sub_element():
    return pg.AllOf(pg.Ignore(": "), open_tag, pg.Optional(sub_element))
예제 #12
0
파일: jade.py 프로젝트: Singletoned/jade
def content():
    return pg.AllOf(pg.Ignore(pg.OneOf(" | ", " ")),
                    pg.Join(pg.Many(pg.Not(newline_or_eof))))
예제 #13
0
파일: jade.py 프로젝트: Singletoned/jade
def attribute():
    return pg.OneOf(
        pg.AllOf(identifier_parts, pg.Ignore("="),
                 pg.OneOf(quoted_string, attribute_value_code)), alphanumerics)
예제 #14
0
파일: jade.py 프로젝트: Singletoned/jade
def attribute_value_code():
    return pg.OneOf(
        pg.AllOf(pg.Ignore("{{"), pg.Join(pg.Many(pg.Not("}}"))),
                 pg.Ignore("}}")), identifier_parts)
예제 #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())
예제 #16
0
파일: jade.py 프로젝트: Singletoned/jade
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))
예제 #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(
            "---",
            "___",
            "***",
            "- - -",
예제 #18
0
파일: jade.py 프로젝트: Singletoned/jade
def code_block():
    return pg.AllOf(pg.Ignore("!="), pg.Join(pg.Many(pg.Not(newline_or_eof))),
                    pg.Ignore(newline_or_eof))
예제 #19
0
def code_block():
    return pg.AllOf(
        pg.Indented(
            code_paragraph))
예제 #20
0
파일: jade.py 프로젝트: Singletoned/jade
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)))
예제 #21
0
def link():
    return pg.AllOf(link_text, link_url)
예제 #22
0
파일: jade.py 프로젝트: Singletoned/jade
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))))
예제 #23
0
 def list_item():
     return pg.AllOf(pg.Ignore("* "), pg.Words())
예제 #24
0
파일: jade.py 프로젝트: Singletoned/jade
def text():
    return pg.AllOf(pg.Ignore("| "), pg.Join(pg.Many(pg.Not(newline_or_eof))),
                    pg.Ignore(newline_or_eof))
예제 #25
0
 def indented_bullets():
     return pg.Indented(pg.AllOf(bullet, pg.Optional(indented_bullets, )),
                        optional=True)
예제 #26
0
파일: jade.py 프로젝트: Singletoned/jade
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)))
예제 #27
0
 def word_aab():
     return pg.AllOf(word_a, letter_b)
예제 #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
예제 #29
0
 def body():
     return pg.AllOf(optional_a, letters)
예제 #30
0
파일: jade.py 프로젝트: Singletoned/jade
def tag_class():
    return pg.AllOf(pg.Ignore("."), identifier_parts)