lib/rouge/lexers/groovy.rb in rouge-3.4.1 vs lib/rouge/lexers/groovy.rb in rouge-3.5.0
- old
+ new
@@ -8,12 +8,10 @@
desc 'The Groovy programming language (http://www.groovy-lang.org/)'
tag 'groovy'
filenames '*.groovy', 'Jenkinsfile'
mimetypes 'text/x-groovy'
- ws = %r((?:\s|//.*?\n|/[*].*?[*]/)+)
-
def self.detect?(text)
return true if text.shebang?(/groovy/)
end
def self.keywords
@@ -41,44 +39,44 @@
@constants ||= Set.new %w(true false null)
end
state :root do
rule %r(^
- (\s*(?:\w[\w\d.\[\]]*\s+)+?) # return arguments
- (\w[\w\d]*) # method name
+ (\s*(?:\w[\w.\[\]]*\s+)+?) # return arguments
+ (\w\w*) # method name
(\s*) (\() # signature start
)x do |m|
delegate self.clone, m[1]
token Name::Function, m[2]
token Text, m[3]
token Operator, m[4]
end
# whitespace
- rule /[^\S\n]+/, Text
+ rule %r/[^\S\n]+/, Text
rule %r(//.*?$), Comment::Single
rule %r(/[*].*?[*]/)m, Comment::Multiline
- rule /@\w[\w\d.]*/, Name::Decorator
- rule /(class|interface|trait)\b/, Keyword::Declaration, :class
- rule /package\b/, Keyword::Namespace, :import
- rule /import\b/, Keyword::Namespace, :import
+ rule %r/@\w[\w.]*/, Name::Decorator
+ rule %r/(class|interface|trait)\b/, Keyword::Declaration, :class
+ rule %r/package\b/, Keyword::Namespace, :import
+ rule %r/import\b/, Keyword::Namespace, :import
# TODO: highlight backslash escapes
- rule /""".*?"""/m, Str::Double
- rule /'''.*?'''/m, Str::Single
+ rule %r/""".*?"""/m, Str::Double
+ rule %r/'''.*?'''/m, Str::Single
- rule /"(\\.|\\\n|.)*?"/, Str::Double
- rule /'(\\.|\\\n|.)*?'/, Str::Single
+ rule %r/"(\\.|\\\n|.)*?"/, Str::Double
+ rule %r/'(\\.|\\\n|.)*?'/, Str::Single
rule %r(\$/(\$.|.)*?/\$)m, Str
rule %r(/(\\.|\\\n|.)*?/), Str
- rule /'\\.'|'[^\\]'|'\\u[0-9a-f]{4}'/, Str::Char
- rule /(\.)([a-zA-Z_][a-zA-Z0-9_]*)/ do
+ rule %r/'\\.'|'[^\\]'|'\\u[0-9a-f]{4}'/, Str::Char
+ rule %r/(\.)([a-zA-Z_][a-zA-Z0-9_]*)/ do
groups Operator, Name::Attribute
end
- rule /[a-zA-Z_][a-zA-Z0-9_]*:/, Name::Label
- rule /[a-zA-Z_\$][a-zA-Z0-9_]*/ do |m|
+ rule %r/[a-zA-Z_][a-zA-Z0-9_]*:/, Name::Label
+ rule %r/[a-zA-Z_\$][a-zA-Z0-9_]*/ do |m|
if self.class.keywords.include? m[0]
token Keyword
elsif self.class.declarations.include? m[0]
token Keyword::Declaration
elsif self.class.types.include? m[0]
@@ -91,23 +89,23 @@
end
rule %r([~^*!%&\[\](){}<>\|+=:;,./?-]), Operator
# numbers
- rule /\d+\.\d+([eE]\d+)?[fd]?/, Num::Float
- rule /0x[0-9a-f]+/, Num::Hex
- rule /[0-9]+L?/, Num::Integer
- rule /\n/, Text
+ rule %r/\d+\.\d+([eE]\d+)?[fd]?/, Num::Float
+ rule %r/0x[0-9a-f]+/, Num::Hex
+ rule %r/[0-9]+L?/, Num::Integer
+ rule %r/\n/, Text
end
state :class do
- rule /\s+/, Text
- rule /\w[\w\d]*/, Name::Class, :pop!
+ rule %r/\s+/, Text
+ rule %r/\w\w*/, Name::Class, :pop!
end
state :import do
- rule /\s+/, Text
- rule /[\w\d.]+[*]?/, Name::Namespace, :pop!
+ rule %r/\s+/, Text
+ rule %r/[\w.]+[*]?/, Name::Namespace, :pop!
end
end
end
end