diff options
author | Miikka Salminen <miikka.salminen@gmail.com> | 2015-03-07 22:30:17 +0200 |
---|---|---|
committer | Miikka Salminen <miikka.salminen@gmail.com> | 2015-03-07 22:30:17 +0200 |
commit | b55a3a9f79dc14c146a11aa32230624469ff874b (patch) | |
tree | 280cc94008825cf08ee03f6455682a27025d974a | |
parent | 50c6950c7fa48cce73af6072b35f40608a158306 (diff) | |
download | pygments-b55a3a9f79dc14c146a11aa32230624469ff874b.tar.gz |
Added a new token type Comment.Hashbang with its documentation, and a support for it in Javascript, Perl, Python, Ruby and Bash lexers.
-rw-r--r-- | doc/docs/tokens.rst | 4 | ||||
-rw-r--r-- | pygments/lexers/javascript.py | 2 | ||||
-rw-r--r-- | pygments/lexers/perl.py | 1 | ||||
-rw-r--r-- | pygments/lexers/python.py | 3 | ||||
-rw-r--r-- | pygments/lexers/ruby.py | 1 | ||||
-rw-r--r-- | pygments/lexers/shell.py | 3 | ||||
-rw-r--r-- | pygments/token.py | 1 |
7 files changed, 12 insertions, 3 deletions
diff --git a/doc/docs/tokens.rst b/doc/docs/tokens.rst index 194eb70f..6455a501 100644 --- a/doc/docs/tokens.rst +++ b/doc/docs/tokens.rst @@ -297,6 +297,10 @@ Comments `Comment` Token type for any comment. +`Comment.Hashbang` + Token type for hashbang comments (i.e. first lines of files that start with + ``#!``). + `Comment.Multiline` Token type for multiline comments. diff --git a/pygments/lexers/javascript.py b/pygments/lexers/javascript.py index fa7dca41..aed8438e 100644 --- a/pygments/lexers/javascript.py +++ b/pygments/lexers/javascript.py @@ -60,7 +60,7 @@ class JavascriptLexer(RegexLexer): (r'\n', Text, '#pop') ], 'root': [ - (r'\A#! ?/.*?\n', Comment), # shebang lines are recognized by node.js + (r'\A#! ?/.*?\n', Comment.Hashbang), # recognized by node.js (r'^(?=\s|/|<!--)', Text, 'slashstartsregex'), include('commentsandwhitespace'), (r'\+\+|--|~|&&|\?|:|\|\||\\(?=\n)|' diff --git a/pygments/lexers/perl.py b/pygments/lexers/perl.py index 7e70b3ee..b78963d0 100644 --- a/pygments/lexers/perl.py +++ b/pygments/lexers/perl.py @@ -46,6 +46,7 @@ class PerlLexer(RegexLexer): (r'\$(\\\\|\\[^\\]|[^\\$])*\$[egimosx]*', String.Regex, '#pop'), ], 'root': [ + (r'\A\#!.+?$', Comment.Hashbang), (r'\#.*?$', Comment.Single), (r'^=[a-zA-Z0-9]+\s+.*?\n=cut', Comment.Multiline), (words(( diff --git a/pygments/lexers/python.py b/pygments/lexers/python.py index 3c1aff56..e0da29f6 100644 --- a/pygments/lexers/python.py +++ b/pygments/lexers/python.py @@ -41,7 +41,8 @@ class PythonLexer(RegexLexer): (r'^(\s*)([rRuU]{,2}"""(?:.|\n)*?""")', bygroups(Text, String.Doc)), (r"^(\s*)([rRuU]{,2}'''(?:.|\n)*?''')", bygroups(Text, String.Doc)), (r'[^\S\n]+', Text), - (r'#.*$', Comment), + (r'\A#!.+$', Comment.Hashbang), + (r'#.*$', Comment.Single), (r'[]{}:(),;[]', Punctuation), (r'\\\n', Text), (r'\\', Text), diff --git a/pygments/lexers/ruby.py b/pygments/lexers/ruby.py index 943fd715..5c30439e 100644 --- a/pygments/lexers/ruby.py +++ b/pygments/lexers/ruby.py @@ -190,6 +190,7 @@ class RubyLexer(ExtendedRegexLexer): tokens = { 'root': [ + (r'\A#!.+?$', Comment.Hashbang), (r'#.*?$', Comment.Single), (r'=begin\s.*?\n=end.*?$', Comment.Multiline), # keywords diff --git a/pygments/lexers/shell.py b/pygments/lexers/shell.py index 810ee7da..a9c1e6b9 100644 --- a/pygments/lexers/shell.py +++ b/pygments/lexers/shell.py @@ -60,7 +60,8 @@ class BashLexer(RegexLexer): r'shopt|source|suspend|test|time|times|trap|true|type|typeset|' r'ulimit|umask|unalias|unset|wait)\s*\b(?!\.)', Name.Builtin), - (r'#.*\n', Comment), + (r'\A#!.+\n', Comment.Hashbang), + (r'#.*\n', Comment.Single), (r'\\[\w\W]', String.Escape), (r'(\b\w+)(\s*)(=)', bygroups(Name.Variable, Text, Operator)), (r'[\[\]{}()=]', Operator), diff --git a/pygments/token.py b/pygments/token.py index e5eadf0d..bfdfc114 100644 --- a/pygments/token.py +++ b/pygments/token.py @@ -179,6 +179,7 @@ STANDARD_TYPES = { Punctuation: 'p', Comment: 'c', + Comment.Hashbang: 'ch', Comment.Multiline: 'cm', Comment.Preproc: 'cp', Comment.Single: 'c1', |