ProjectKivy/KivyLexer.py

changeset 1
371cfb479eb6
child 3
b7e3e3b131ea
--- /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')]}

eric ide

mercurial