14 |
14 |
15 from pygments.lexer import RegexLexer, bygroups, using |
15 from pygments.lexer import RegexLexer, bygroups, using |
16 from pygments.lexers.agile import PythonLexer |
16 from pygments.lexers.agile import PythonLexer |
17 from pygments.token import Comment, Text, Name, Punctuation, Operator |
17 from pygments.token import Comment, Text, Name, Punctuation, Operator |
18 |
18 |
19 __all__ = ['KivyLexer'] |
19 __all__ = ["KivyLexer"] |
20 |
20 |
21 |
21 |
22 class KivyLexer(RegexLexer): |
22 class KivyLexer(RegexLexer): |
23 """ |
23 """ |
24 Class implementing a Pygments lexer for the Kivy language. |
24 Class implementing a Pygments lexer for the Kivy language. |
25 """ |
25 """ |
26 name = 'Kivy' |
26 |
27 aliases = ['kivy', 'kv'] |
27 name = "Kivy" |
28 filenames = ['*.kv', '*.kivy'] |
28 aliases = ["kivy", "kv"] |
29 mimetypes = ['application/x-kivy'] |
29 filenames = ["*.kv", "*.kivy"] |
|
30 mimetypes = ["application/x-kivy"] |
30 tokens = { |
31 tokens = { |
31 'root': [ |
32 "root": [ |
32 (r'#:.*?$', Comment.Preproc), |
33 (r"#:.*?$", Comment.Preproc), |
33 (r'#.*?$', using(PythonLexer)), |
34 (r"#.*?$", using(PythonLexer)), |
34 (r'\s+', Text), |
35 (r"\s+", Text), |
35 (r'<.+>', Name.Namespace), |
36 (r"<.+>", Name.Namespace), |
36 (r'(\[)(\s*)(.*?)(\s*)(@)', |
37 ( |
|
38 r"(\[)(\s*)(.*?)(\s*)(@)", |
37 bygroups(Punctuation, Text, Name.Class, Text, Operator), |
39 bygroups(Punctuation, Text, Name.Class, Text, Operator), |
38 'classList'), |
40 "classList", |
39 (r'[A-Za-z][A-Za-z0-9]*$', Name.Attribute), |
41 ), |
40 (r'(.*?)(\s*)(:)(\s*)$', |
42 (r"[A-Za-z][A-Za-z0-9]*$", Name.Attribute), |
41 bygroups(Name.Class, Text, Punctuation, Text)), |
43 (r"(.*?)(\s*)(:)(\s*)$", bygroups(Name.Class, Text, Punctuation, Text)), |
42 (r'(.*?)(\s*)(:)(\s*)(.*?)$', |
44 ( |
43 bygroups(Name.Attribute, Text, Punctuation, Text, |
45 r"(.*?)(\s*)(:)(\s*)(.*?)$", |
44 using(PythonLexer))), |
46 bygroups(Name.Attribute, Text, Punctuation, Text, using(PythonLexer)), |
45 (r'[^:]+?$', using(PythonLexer)) |
47 ), |
|
48 (r"[^:]+?$", using(PythonLexer)), |
46 ], |
49 ], |
47 'classList': [ |
50 "classList": [ |
48 (r'(,)(\s*)([A-Z][A-Za-z0-9]*)', |
51 (r"(,)(\s*)([A-Z][A-Za-z0-9]*)", bygroups(Punctuation, Text, Name.Class)), |
49 bygroups(Punctuation, Text, Name.Class)), |
52 (r"(\+)(\s*)([A-Z][A-Za-z0-9]*)", bygroups(Operator, Text, Name.Class)), |
50 (r'(\+)(\s*)([A-Z][A-Za-z0-9]*)', |
53 (r"\s+", Text), |
51 bygroups(Operator, Text, Name.Class)), |
54 (r"[A-Z][A-Za-z0-9]*", Name.Class), |
52 (r'\s+', Text), |
55 (r"\]", Punctuation, "#pop"), |
53 (r'[A-Z][A-Za-z0-9]*', Name.Class), |
|
54 (r'\]', Punctuation, '#pop') |
|
55 ], |
56 ], |
56 } |
57 } |
57 |
58 |
|
59 |
58 # |
60 # |
59 # eflag: noqa = M702 |
61 # eflag: noqa = M702 |