ProjectKivy/KivyLexer.py

changeset 1
371cfb479eb6
child 3
b7e3e3b131ea
equal deleted inserted replaced
0:35ccc96239a0 1:371cfb479eb6
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')]}

eric ide

mercurial