lib/rouge/lexers/javascript.rb in rouge-4.0.1 vs lib/rouge/lexers/javascript.rb in rouge-4.1.0
- old
+ new
@@ -175,10 +175,25 @@
rule %r/(\@)(\w+)?/ do
groups Punctuation, Name::Decorator
push :expr_start
end
+ rule %r/(class)((?:\s|\\\s)+)/ do
+ groups Keyword::Declaration, Text
+ push :classname
+ end
+
+ rule %r/([\p{Nl}$_]*\p{Lu}[\p{Word}]*)[ \t]*(?=(\(.*\)))/m, Name::Class
+
+ rule %r/(function)((?:\s|\\\s)+)(#{id})/ do
+ groups Keyword::Declaration, Text, Name::Function
+ end
+
+ rule %r/function(?=(\(.*\)))/, Keyword::Declaration # For anonymous functions
+
+ rule %r/(#{id})[ \t]*(?=(\(.*\)))/m, Name::Function
+
rule %r/[{}]/, Punctuation, :statement
rule id do |m|
if self.class.keywords.include? m[0]
token Keyword
@@ -216,9 +231,17 @@
state :sq do
rule %r/\\[\\nrt']?/, Str::Escape
rule %r/[^\\']+/, Str::Single
rule %r/'/, Str::Delimiter, :pop!
+ end
+
+ state :classname do
+ rule %r/(#{id})((?:\s|\\\s)+)(extends)((?:\s|\\\s)+)/ do
+ groups Name::Class, Text, Keyword::Declaration, Text
+ end
+
+ rule id, Name::Class, :pop!
end
# braced parts that aren't object literals
state :statement do
rule %r/case\b/ do