|
1 # -*- coding: utf-8 -*- |
|
2 |
|
3 # Copyright (c) 2013 Detlev Offenbach <detlev@die-offenbachs.de> |
|
4 # |
|
5 |
|
6 """"" |
|
7 Pygments lexer for the Kivy language |
|
8 """ |
|
9 |
|
10 from pygments.lexer import RegexLexer, bygroups, using |
|
11 from pygments.lexers.agile import PythonLexer |
|
12 from pygments.token import * |
|
13 |
|
14 __all__ = ['KivyLexer'] |
|
15 |
|
16 class KivyLexer(RegexLexer): |
|
17 name = 'Kivy' |
|
18 aliases = ['kivy', 'kv'] |
|
19 filenames = ['*.kv', '*.kivy'] |
|
20 mimetypes = ['application/x-kivy'] |
|
21 tokens = { |
|
22 'root': [ |
|
23 (r'#:.*?$', Comment.Preproc), |
|
24 (r'#.*?$', using(PythonLexer)), |
|
25 (r'\s+', Text), |
|
26 (r'<.+>', Name.Namespace), |
|
27 (r'(\[)(\s*)(.*?)(\s*)(@)', |
|
28 bygroups(Punctuation, Text, Name.Class, Text, Operator), |
|
29 'classList'), |
|
30 (r'[A-Za-z][A-Za-z0-9]*$', Name.Attribute), |
|
31 (r'(.*?)(\s*)(:)(\s*)$', |
|
32 bygroups(Name.Class, Text, Punctuation, Text)), |
|
33 (r'(.*?)(\s*)(:)(\s*)(.*?)$', |
|
34 bygroups(Name.Attribute, Text, Punctuation, Text, |
|
35 using(PythonLexer)))], |
|
36 'classList': [ |
|
37 (r'(,)(\s*)([A-Z][A-Za-z0-9]*)', |
|
38 bygroups(Punctuation, Text, Name.Class)), |
|
39 (r'(\+)(\s*)([A-Z][A-Za-z0-9]*)', |
|
40 bygroups(Operator, Text, Name.Class)), |
|
41 (r'\s+', Text), |
|
42 (r'[A-Z][A-Za-z0-9]*', Name.Class), |
|
43 (r'\]', Punctuation, '#pop')]} |