summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Hoelz <rob@hoelz.ro>2012-12-18 18:52:53 +0100
committerRob Hoelz <rob@hoelz.ro>2012-12-18 18:52:53 +0100
commit8afa8bc84b8b631c7e88d98e02e88def6ab9b20e (patch)
tree9b157d6190285d7012a005285aec64a703d65638
parent33b11aa673efe7d697841758682170e991cbd8ed (diff)
downloadpygments-8afa8bc84b8b631c7e88d98e02e88def6ab9b20e.tar.gz
Add *extremely* basic Perl6 lexer
It handles comments, and poorly
-rw-r--r--pygments/lexers/_mapping.py1
-rw-r--r--pygments/lexers/agile.py27
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