diff options
author | Rob Hoelz <rob@hoelz.ro> | 2012-12-18 18:52:53 +0100 |
---|---|---|
committer | Rob Hoelz <rob@hoelz.ro> | 2012-12-18 18:52:53 +0100 |
commit | 8afa8bc84b8b631c7e88d98e02e88def6ab9b20e (patch) | |
tree | 9b157d6190285d7012a005285aec64a703d65638 | |
parent | 33b11aa673efe7d697841758682170e991cbd8ed (diff) | |
download | pygments-8afa8bc84b8b631c7e88d98e02e88def6ab9b20e.tar.gz |
Add *extremely* basic Perl6 lexer
It handles comments, and poorly
-rw-r--r-- | pygments/lexers/_mapping.py | 1 | ||||
-rw-r--r-- | pygments/lexers/agile.py | 27 |
2 files changed, 27 insertions, 1 deletions
diff --git a/pygments/lexers/_mapping.py b/pygments/lexers/_mapping.py index 68dd2660..7885c01a 100644 --- a/pygments/lexers/_mapping.py +++ b/pygments/lexers/_mapping.py @@ -195,6 +195,7 @@ LEXERS = { 'OocLexer': ('pygments.lexers.compiled', 'Ooc', ('ooc',), ('*.ooc',), ('text/x-ooc',)), 'OpaLexer': ('pygments.lexers.functional', 'Opa', ('opa',), ('*.opa',), ('text/x-opa',)), 'OpenEdgeLexer': ('pygments.lexers.other', 'OpenEdge ABL', ('openedge', 'abl', 'progress'), ('*.p', '*.cls'), ('text/x-openedge', 'application/x-openedge')), + 'Perl6Lexer': ('pygments.lexers.agile', 'Perl6', ('perl6', 'pl6'), ('*.pl', '*.pm', '*.nqp', '*.p6'), ('text/x-perl6', 'application/x-perl6')), 'PerlLexer': ('pygments.lexers.agile', 'Perl', ('perl', 'pl'), ('*.pl', '*.pm'), ('text/x-perl', 'application/x-perl')), 'PhpLexer': ('pygments.lexers.web', 'PHP', ('php', 'php3', 'php4', 'php5'), ('*.php', '*.php[345]'), ('text/x-php',)), 'PlPgsqlLexer': ('pygments.lexers.sql', 'PL/pgSQL', ('plpgsql',), (), ('text/x-plpgsql',)), diff --git a/pygments/lexers/agile.py b/pygments/lexers/agile.py index 223873de..6abf0ab7 100644 --- a/pygments/lexers/agile.py +++ b/pygments/lexers/agile.py @@ -23,7 +23,7 @@ __all__ = ['PythonLexer', 'PythonConsoleLexer', 'PythonTracebackLexer', 'Python3Lexer', 'Python3TracebackLexer', 'RubyLexer', 'RubyConsoleLexer', 'PerlLexer', 'LuaLexer', 'MoonScriptLexer', 'CrocLexer', 'MiniDLexer', 'IoLexer', 'TclLexer', 'FactorLexer', - 'FancyLexer', 'DgLexer'] + 'FancyLexer', 'DgLexer', 'Perl6Lexer'] # b/w compatibility from pygments.lexers.functional import SchemeLexer @@ -1913,3 +1913,28 @@ class DgLexer(RegexLexer): (r"'''", String, '#pop') ], } + +class Perl6Lexer(RegexLexer): + """ + For `Perl 6 <http://www.perl6.org>` source code. + """ + + name = 'Perl6' + aliases = ['perl6', 'pl6'] + filenames = ['*.pl', '*.pm', '*.nqp', '*.p6'] # ask #perl6 + mimetypes = ['text/x-perl6', 'application/x-perl6'] # ask #perl6 + flags = re.MULTILINE # default, but I'll probably end up overriding it + tokens = { + 'root' : [ + ( r'[^#]+', Text ), + ( r'#.*$', Comment.Singleline ), + ], + } + + # ↓ this can likely be improved + def analyse_text(text): + if shebang_matches(text, r'perl6|rakudo|niecza'): + return True + if 'use v6' in text: + return 0.91 # 0.01 greater than Perl says for 'my $' + return False |