Exemplo n.º 1
0
def test_bygroups():
    match = re.match(r'(1)(2)', '12')
    assert list(bygroups(('one', ))(match)) == [(('one', ), '1')]
Exemplo n.º 2
0
 ruleset(
     include('inline'),
     include('function'),
 ),
 'inline':
 ruleset(
     rule(r'<%=', enter='interpolate'),
     rule(r'<%-', enter='escape'),
     rule(r'<%', enter='evaluate'),
 ),
 'inline_with_func':
 ruleset(include('inline'), include('function')),
 'function':
 ruleset(
     rule(r'({keywords})\('.format(keywords='|'.join(keywords)),
          bygroups('func_name'),
          enter='gettext')),
 'gettext':
 ruleset(rule(r'([\"\'])?\)', leave=1), include('function_call')),
 'evaluate':
 ruleset(
     rule(r'%>', leave=1),
     include('inline_with_func'),
 ),
 'interpolate':
 ruleset(
     rule(r'%>', leave=1),
     include('inline_with_func'),
 ),
 'escape':
 ruleset(
Exemplo n.º 3
0
# Full functioning underscore template parser.

from markey.rules import ruleset, include, rule, bygroups


keywords = frozenset(("pluralidx", "gettext", "ngettext", "gettext_noop", "pgettext", "npgettext", "interpolate", "_"))


rules = {
    "everything": ruleset(include("inline"), include("function")),
    "inline": ruleset(rule(r"<%=", enter="interpolate"), rule(r"<%-", enter="escape"), rule(r"<%", enter="evaluate")),
    "inline_with_func": ruleset(include("inline"), include("function")),
    "function": ruleset(
        rule(r"({keywords})\(".format(keywords="|".join(keywords)), bygroups("func_name"), enter="gettext")
    ),
    "gettext": ruleset(rule(r"([\"\'])?\)", leave=1), include("function_call")),
    "evaluate": ruleset(rule(r"%>", leave=1), include("inline_with_func")),
    "interpolate": ruleset(rule(r"%>", leave=1), include("inline_with_func")),
    "escape": ruleset(rule(r"%>", leave=1), include("inline_with_func")),
    # function calls (parse string arguments and implicit strings)
    "function_call": ruleset(
        rule(",", "func_argument_delimiter"),
        rule("\s+", None),
        rule(r"('([^'\\]*(?:\\.[^'\\]*)*)'|" r'"([^"\\]*(?:\\.[^"\\]*)*)")(?s)', "func_string_arg"),
        rule(r"([\w_]+)\s*=", bygroups("func_kwarg")),
    ),
}
Exemplo n.º 4
0
def test_bygroups():
    match = re.match(r'(1)(2)', '12')
    assert list(bygroups(('one',))(match)) == [(('one',), '1')]
Exemplo n.º 5
0
 'everything': ruleset(
     include('inline'),
     include('function'),
 ),
 'inline': ruleset(
     rule(r'<%=', enter='interpolate'),
     rule(r'<%-', enter='escape'),
     rule(r'<%', enter='evaluate'),
 ),
 'inline_with_func': ruleset(
     include('inline'),
     include('function')
 ),
 'function': ruleset(
     rule(r'({keywords})\('.format(keywords='|'.join(keywords)),
          bygroups('func_name'), enter='gettext')
 ),
 'gettext': ruleset(
     rule(r'([\"\'])?\)', leave=1),
     include('function_call')
 ),
 'evaluate': ruleset(
     rule(r'%>', leave=1),
     include('inline_with_func'),
 ),
 'interpolate': ruleset(
     rule(r'%>', leave=1),
     include('inline_with_func'),
 ),
 'escape': ruleset(
     rule(r'%>', leave=1),