Initial version of DataSpecLexer

This commit is contained in:
str4d
2013-06-12 01:29:36 +00:00
parent 6b2c7e7013
commit 2bb4def009
2 changed files with 40 additions and 2 deletions

33
i2p2www/lexers.py Normal file
View File

@ -0,0 +1,33 @@
from pygments.lexer import RegexLexer, bygroups
from pygments.token import *
class DataSpecLexer(RegexLexer):
name = 'DataSpec'
aliases = ['dataspec']
filenames = []
tokens = {
'root': [
(r'(\s*)(\+-)', bygroups(Text, Text), 'boundary'),
(r'(\s+)([\+|])', bygroups(Text, Text), 'content'),
(r'~', Generic.Strong, 'content'),
(r'(\s*)(\w+)(\s)(::)(\s)', bygroups(Text, Name.Tag, Text, Operator, Text), 'definition'),
],
'boundary': [
(r'---\+$', Text, '#pop'),
(r'(//)(-\+)?$', bygroups(Generic.Strong, Text), '#pop'),
(r'---\+-', Text),
(r'(//)(-\+-)', bygroups(Generic.Strong, Text)),
],
'content': [
(r'(\s*)([\+|])$', bygroups(Text, Text), '#pop'),
(r'(\s*)(~)$', bygroups(Text, Generic.Strong), '#pop'),
(r'(\s*)(\w+)', bygroups(Text, Name.Tag)),
(r'(\s*)(\|)', bygroups(Text, Text)),
],
'definition': [
(r'(\s*)(\w+)(\s)(::)(\s)', bygroups(Text, Name.Tag, Text, Operator, Text)),
(r'(\s*)((?:[A-Z][a-z]+)+)', bygroups(Text, Name.Class)),
(r'(\s*)(\w+)', bygroups(Text, Comment)),
],
}