--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ProjectKivy/KivyLexer.py Wed Jun 12 18:50:51 2013 +0200 @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2013 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""""" +Pygments lexer for the Kivy language +""" + +from pygments.lexer import RegexLexer, bygroups, using +from pygments.lexers.agile import PythonLexer +from pygments.token import * + +__all__ = ['KivyLexer'] + +class KivyLexer(RegexLexer): + name = 'Kivy' + aliases = ['kivy', 'kv'] + filenames = ['*.kv', '*.kivy'] + mimetypes = ['application/x-kivy'] + tokens = { + 'root': [ + (r'#:.*?$', Comment.Preproc), + (r'#.*?$', using(PythonLexer)), + (r'\s+', Text), + (r'<.+>', Name.Namespace), + (r'(\[)(\s*)(.*?)(\s*)(@)', + bygroups(Punctuation, Text, Name.Class, Text, Operator), + 'classList'), + (r'[A-Za-z][A-Za-z0-9]*$', Name.Attribute), + (r'(.*?)(\s*)(:)(\s*)$', + bygroups(Name.Class, Text, Punctuation, Text)), + (r'(.*?)(\s*)(:)(\s*)(.*?)$', + bygroups(Name.Attribute, Text, Punctuation, Text, + using(PythonLexer)))], + 'classList': [ + (r'(,)(\s*)([A-Z][A-Za-z0-9]*)', + bygroups(Punctuation, Text, Name.Class)), + (r'(\+)(\s*)([A-Z][A-Za-z0-9]*)', + bygroups(Operator, Text, Name.Class)), + (r'\s+', Text), + (r'[A-Z][A-Za-z0-9]*', Name.Class), + (r'\]', Punctuation, '#pop')]}