diff options
author | gentoo90 <gentoo90@gmail.com> | 2012-11-11 16:05:05 +0200 |
---|---|---|
committer | gentoo90 <gentoo90@gmail.com> | 2012-11-11 16:05:05 +0200 |
commit | d144306bcd3d067b4ae1aa6ce69782e0f2946bfd (patch) | |
tree | bbeb7f856bc2bb03c4ea7e8e590d1f11a08e7ad4 | |
parent | bc1fea9cf1220e27625e0ec33c8ef9d81e8987dc (diff) | |
download | pygments-d144306bcd3d067b4ae1aa6ce69782e0f2946bfd.tar.gz |
Add RPM *.spec files lexer
-rw-r--r-- | pygments/lexers/_mapping.py | 1 | ||||
-rw-r--r-- | pygments/lexers/other.py | 59 |
2 files changed, 59 insertions, 1 deletions
diff --git a/pygments/lexers/_mapping.py b/pygments/lexers/_mapping.py index 0eca2682..1581c74e 100644 --- a/pygments/lexers/_mapping.py +++ b/pygments/lexers/_mapping.py @@ -225,6 +225,7 @@ LEXERS = { 'RebolLexer': ('pygments.lexers.other', 'REBOL', ('rebol',), ('*.r', '*.r3'), ('text/x-rebol',)), 'RedcodeLexer': ('pygments.lexers.other', 'Redcode', ('redcode',), ('*.cw',), ()), 'RhtmlLexer': ('pygments.lexers.templates', 'RHTML', ('rhtml', 'html+erb', 'html+ruby'), ('*.rhtml',), ('text/html+ruby',)), + 'RPMSpecLexer': ('pygments.lexers.other', 'RPMSpec', ('spec'), ('*.spec',), ('text/x-rpm-spec',)), 'RstLexer': ('pygments.lexers.text', 'reStructuredText', ('rst', 'rest', 'restructuredtext'), ('*.rst', '*.rest'), ('text/x-rst', 'text/prs.fallenstein.rst')), 'RubyConsoleLexer': ('pygments.lexers.agile', 'Ruby irb session', ('rbcon', 'irb'), (), ('text/x-ruby-shellsession',)), 'RubyLexer': ('pygments.lexers.agile', 'Ruby', ('rb', 'ruby', 'duby'), ('*.rb', '*.rbw', 'Rakefile', '*.rake', '*.gemspec', '*.rbx', '*.duby'), ('text/x-ruby', 'application/x-ruby')), diff --git a/pygments/lexers/other.py b/pygments/lexers/other.py index 8dfb3145..08486748 100644 --- a/pygments/lexers/other.py +++ b/pygments/lexers/other.py @@ -32,7 +32,7 @@ __all__ = ['BrainfuckLexer', 'BefungeLexer', 'RedcodeLexer', 'MOOCodeLexer', 'AutohotkeyLexer', 'GoodDataCLLexer', 'MaqlLexer', 'ProtoBufLexer', 'HybrisLexer', 'AwkLexer', 'Cfengine3Lexer', 'SnobolLexer', 'ECLLexer', 'UrbiscriptLexer', 'OpenEdgeLexer', 'BroLexer', - 'MscgenLexer', 'KconfigLexer', 'VGLLexer', 'SourcePawnLexer'] + 'MscgenLexer', 'KconfigLexer', 'VGLLexer', 'SourcePawnLexer', 'RPMSpecLexer'] class ECLLexer(RegexLexer): @@ -3158,3 +3158,60 @@ class SourcePawnLexer(RegexLexer): elif value in self._functions: tokens = Name.Builtin yield index, token, value + + +class RPMSpecLexer(RegexLexer): + name = 'RPMSpec' + aliases = ['spec'] + filenames = ['*.spec'] + mimetypes = ['text/x-rpm-spec'] + + tokens = { + 'root': [ + (r'#.*\n', Comment), + include('rpm'), + ], + 'header': [ + include('rpm'), + (r'\n', Text, '#pop'), + (r'.', Text), + ], + 'description': [ + (r'^%(?:package|prep|build|install|clean|' + r'check|pre[a-z]*|post[a-z]*|trigger[a-z]*|files)', + Name.Decorator, '#pop', 'header'), + (r'\n', Text), + (r'.', Text), + ], + 'changelog': [ + (r'\*.*\n', Generic.Subheading), + (r'^%(?:package|prep|build|install|clean|' + r'check|pre[a-z]*|post[a-z]*|trigger[a-z]*|files)', + Name.Decorator, '#pop', 'header'), + (r'\n', Text), + (r'.', Text), + ], + 'rpm': [ + (r'%define.*\n', Comment.Preproc), + (r'%\{\!\?.*%define.*\}', Comment.Preproc), + (r'^(?:Name|Version|Release|Epoch|Summary|Group|License|Packager|Vendor|Icon|U[Rr][Ll]|' + r'Patch[0-9]*|Source[0-9]*|Requires\(?[a-z]*\)?|[A-Za-z]+Req|' + r'Obsoletes|Provides|Conflicts|Build[A-Za-z]+|[A-Za-z]+Arch|Auto[A-Za-z]+):\s*', + Generic.Heading, 'header'), + (r'^%description', Name.Decorator, 'description'), + (r'^%changelog', Name.Decorator, 'changelog'), + (r'^%(package|prep|build|install|clean|' + r'check|pre[a-z]*|post[a-z]*|trigger[a-z]*|files)', + Name.Decorator, 'header'), + (r'%(?:attr|defattr|dir|doc(?:dir)?|setup|config(?:ure)?|' + r'make(?:install)|ghost|patch[0-9]+|find_lang|exclude|verify)', + Keyword), + (r'%\{?__[a-z_]+\}?', Name.Function), + (r'%\{?_([a-z_]+dir|[a-z_]+path|prefix)\}?', Keyword.Pseudo), + (r'%\{\?[A-Za-z0-9_]+\}', Name.Variable), + (r'\$\{?RPM_[A-Z0-9_]+\}?', Name.Variable.Global), + (r'%\{[a-zA-Z][a-zA-Z0-9_]+\}', Keyword.Constant), + (r'%(ifarch|ifnarch|if|else|elseif|endif)', Keyword.Preproc, 'header'), + (r'.', Text), + ], + } |