rouge 2.2.1 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +4 -4
- data/lib/rouge.rb +9 -7
- data/lib/rouge/cli.rb +36 -2
- data/lib/rouge/guessers/disambiguation.rb +88 -0
- data/lib/rouge/guessers/glob_mapping.rb +3 -6
- data/lib/rouge/guessers/modeline.rb +4 -3
- data/lib/rouge/guessers/source.rb +6 -16
- data/lib/rouge/guessers/util.rb +32 -0
- data/lib/rouge/lexer.rb +20 -11
- data/lib/rouge/lexers/apiblueprint.rb +0 -4
- data/lib/rouge/lexers/awk.rb +2 -2
- data/lib/rouge/lexers/biml.rb +2 -2
- data/lib/rouge/lexers/c.rb +0 -5
- data/lib/rouge/lexers/coffeescript.rb +2 -2
- data/lib/rouge/lexers/coq.rb +0 -4
- data/lib/rouge/lexers/diff.rb +4 -4
- data/lib/rouge/lexers/digdag.rb +0 -4
- data/lib/rouge/lexers/erb.rb +0 -4
- data/lib/rouge/lexers/erlang.rb +0 -4
- data/lib/rouge/lexers/factor.rb +2 -2
- data/lib/rouge/lexers/gherkin.rb +2 -2
- data/lib/rouge/lexers/go.rb +0 -4
- data/lib/rouge/lexers/groovy.rb +2 -2
- data/lib/rouge/lexers/haml.rb +0 -4
- data/lib/rouge/lexers/haskell.rb +4 -4
- data/lib/rouge/lexers/html.rb +3 -3
- data/lib/rouge/lexers/idlang.rb +0 -6
- data/lib/rouge/lexers/ini.rb +0 -4
- data/lib/rouge/lexers/io.rb +2 -2
- data/lib/rouge/lexers/javascript.rb +1 -1
- data/lib/rouge/lexers/julia.rb +2 -2
- data/lib/rouge/lexers/kotlin.rb +9 -14
- data/lib/rouge/lexers/lasso.rb +3 -6
- data/lib/rouge/lexers/llvm.rb +0 -4
- data/lib/rouge/lexers/lua.rb +2 -2
- data/lib/rouge/lexers/make.rb +0 -4
- data/lib/rouge/lexers/matlab.rb +0 -4
- data/lib/rouge/lexers/moonscript.rb +2 -2
- data/lib/rouge/lexers/mosel.rb +3 -3
- data/lib/rouge/lexers/nasm.rb +0 -5
- data/lib/rouge/lexers/objective_c.rb +0 -14
- data/lib/rouge/lexers/perl.rb +2 -3
- data/lib/rouge/lexers/php.rb +2 -4
- data/lib/rouge/lexers/plist.rb +0 -4
- data/lib/rouge/lexers/praat.rb +2 -2
- data/lib/rouge/lexers/prolog.rb +0 -5
- data/lib/rouge/lexers/properties.rb +0 -4
- data/lib/rouge/lexers/puppet.rb +3 -3
- data/lib/rouge/lexers/python.rb +2 -2
- data/lib/rouge/lexers/q.rb +0 -4
- data/lib/rouge/lexers/r.rb +2 -2
- data/lib/rouge/lexers/racket.rb +5 -4
- data/lib/rouge/lexers/ruby.rb +2 -2
- data/lib/rouge/lexers/rust.rb +2 -2
- data/lib/rouge/lexers/sed.rb +2 -2
- data/lib/rouge/lexers/shell.rb +2 -2
- data/lib/rouge/lexers/smarty.rb +0 -11
- data/lib/rouge/lexers/sml.rb +0 -4
- data/lib/rouge/lexers/tap.rb +0 -4
- data/lib/rouge/lexers/tcl.rb +4 -4
- data/lib/rouge/lexers/tex.rb +2 -2
- data/lib/rouge/lexers/toml.rb +0 -4
- data/lib/rouge/lexers/tulip.rb +2 -3
- data/lib/rouge/lexers/turtle.rb +5 -14
- data/lib/rouge/lexers/vue.rb +0 -4
- data/lib/rouge/lexers/wollok.rb +0 -4
- data/lib/rouge/lexers/xml.rb +4 -6
- data/lib/rouge/lexers/yaml.rb +2 -2
- data/lib/rouge/version.rb +1 -1
- data/rouge.gemspec +1 -0
- metadata +6 -4
data/lib/rouge/lexers/c.rb
CHANGED
@@ -11,8 +11,8 @@ module Rouge
|
|
11
11
|
title "CoffeeScript"
|
12
12
|
desc 'The Coffeescript programming language (coffeescript.org)'
|
13
13
|
|
14
|
-
def self.
|
15
|
-
return
|
14
|
+
def self.detect?(text)
|
15
|
+
return true if text.shebang? 'coffee'
|
16
16
|
end
|
17
17
|
|
18
18
|
def self.keywords
|
data/lib/rouge/lexers/coq.rb
CHANGED
data/lib/rouge/lexers/diff.rb
CHANGED
@@ -9,10 +9,10 @@ module Rouge
|
|
9
9
|
filenames '*.diff', '*.patch'
|
10
10
|
mimetypes 'text/x-diff', 'text/x-patch'
|
11
11
|
|
12
|
-
def self.
|
13
|
-
return
|
14
|
-
return
|
15
|
-
return
|
12
|
+
def self.detect?(text)
|
13
|
+
return true if text.start_with?('Index: ')
|
14
|
+
return true if text =~ %r(\Adiff[^\n]*?\ba/[^\n]*\bb/)
|
15
|
+
return true if text =~ /(---|[+][+][+]).*?\n(---|[+][+][+])/
|
16
16
|
end
|
17
17
|
|
18
18
|
state :root do
|
data/lib/rouge/lexers/digdag.rb
CHANGED
data/lib/rouge/lexers/erb.rb
CHANGED
data/lib/rouge/lexers/erlang.rb
CHANGED
data/lib/rouge/lexers/factor.rb
CHANGED
data/lib/rouge/lexers/gherkin.rb
CHANGED
@@ -12,8 +12,8 @@ module Rouge
|
|
12
12
|
filenames '*.feature'
|
13
13
|
mimetypes 'text/x-gherkin'
|
14
14
|
|
15
|
-
def self.
|
16
|
-
return
|
15
|
+
def self.detect?(text)
|
16
|
+
return true if text.shebang? 'cucumber'
|
17
17
|
end
|
18
18
|
|
19
19
|
# self-modifying method that loads the keywords file
|
data/lib/rouge/lexers/go.rb
CHANGED
data/lib/rouge/lexers/groovy.rb
CHANGED
data/lib/rouge/lexers/haml.rb
CHANGED
@@ -16,10 +16,6 @@ module Rouge
|
|
16
16
|
filenames '*.haml'
|
17
17
|
mimetypes 'text/x-haml'
|
18
18
|
|
19
|
-
def self.analyze_text(text)
|
20
|
-
return 0.1 if text.start_with? '!!!'
|
21
|
-
end
|
22
|
-
|
23
19
|
option 'filters[filter_name]', 'Mapping of lexers to use for haml :filters'
|
24
20
|
attr_reader :filters
|
25
21
|
# @option opts :filters
|
data/lib/rouge/lexers/haskell.rb
CHANGED
@@ -11,8 +11,8 @@ module Rouge
|
|
11
11
|
filenames '*.hs'
|
12
12
|
mimetypes 'text/x-haskell'
|
13
13
|
|
14
|
-
def self.
|
15
|
-
return
|
14
|
+
def self.detect?(text)
|
15
|
+
return true if text.shebang?('runhaskell')
|
16
16
|
end
|
17
17
|
|
18
18
|
reserved = %w(
|
@@ -148,7 +148,7 @@ module Rouge
|
|
148
148
|
state :character do
|
149
149
|
rule /\\/ do
|
150
150
|
token Str::Escape
|
151
|
-
|
151
|
+
goto :character_end
|
152
152
|
push :escape
|
153
153
|
end
|
154
154
|
|
@@ -174,7 +174,7 @@ module Rouge
|
|
174
174
|
rule /\^[\]\[A-Z@\^_]/, Str::Escape, :pop!
|
175
175
|
rule /#{ascii.join('|')}/, Str::Escape, :pop!
|
176
176
|
rule /o[0-7]+/i, Str::Escape, :pop!
|
177
|
-
rule /x[\da-f]
|
177
|
+
rule /x[\da-f]+/i, Str::Escape, :pop!
|
178
178
|
rule /\d+/, Str::Escape, :pop!
|
179
179
|
rule /\s+\\/, Str::Escape, :pop!
|
180
180
|
end
|
data/lib/rouge/lexers/html.rb
CHANGED
@@ -9,9 +9,9 @@ module Rouge
|
|
9
9
|
filenames '*.htm', '*.html', '*.xhtml'
|
10
10
|
mimetypes 'text/html', 'application/xhtml+xml'
|
11
11
|
|
12
|
-
def self.
|
13
|
-
return
|
14
|
-
return
|
12
|
+
def self.detect?(text)
|
13
|
+
return true if text.doctype?(/\bhtml\b/i)
|
14
|
+
return true if text =~ /<\s*html\b/
|
15
15
|
end
|
16
16
|
|
17
17
|
start do
|
data/lib/rouge/lexers/idlang.rb
CHANGED
@@ -10,12 +10,6 @@ module Rouge
|
|
10
10
|
tag 'idlang'
|
11
11
|
filenames '*.idl'
|
12
12
|
|
13
|
-
def self.analyze_text(text)
|
14
|
-
# Does there exist a statement that starts with 'pro' or
|
15
|
-
# 'function'?
|
16
|
-
return 0.4 if text =~ /^\s+(pro|function)\z/
|
17
|
-
end
|
18
|
-
|
19
13
|
name = /[_A-Z]\w*/i
|
20
14
|
kind_param = /(\d+|#{name})/
|
21
15
|
exponent = /[dDeE][+-]\d+/
|
data/lib/rouge/lexers/ini.rb
CHANGED
data/lib/rouge/lexers/io.rb
CHANGED
@@ -18,7 +18,7 @@ module Rouge
|
|
18
18
|
mimetypes 'application/javascript', 'application/x-javascript',
|
19
19
|
'text/javascript', 'text/x-javascript'
|
20
20
|
|
21
|
-
def self.
|
21
|
+
def self.detect?(text)
|
22
22
|
return 1 if text.shebang?('node')
|
23
23
|
return 1 if text.shebang?('jsc')
|
24
24
|
# TODO: rhino, spidermonkey, etc
|
data/lib/rouge/lexers/julia.rb
CHANGED
data/lib/rouge/lexers/kotlin.rb
CHANGED
@@ -3,8 +3,10 @@
|
|
3
3
|
module Rouge
|
4
4
|
module Lexers
|
5
5
|
class Kotlin < RegexLexer
|
6
|
+
# https://kotlinlang.org/docs/reference/grammar.html
|
7
|
+
|
6
8
|
title "Kotlin"
|
7
|
-
desc "Kotlin
|
9
|
+
desc "Kotlin Programming Language (http://kotlinlang.org)"
|
8
10
|
|
9
11
|
tag 'kotlin'
|
10
12
|
filenames '*.kt'
|
@@ -41,26 +43,23 @@ module Rouge
|
|
41
43
|
rule %r'"(\\\\|\\"|[^"\n])*["\n]'m, Str
|
42
44
|
rule %r"'\\.'|'[^\\]'", Str::Char
|
43
45
|
rule %r"[0-9](\.[0-9]+)?([eE][+-][0-9]+)?[flFL]?|0[xX][0-9a-fA-F]+[Ll]?", Num
|
44
|
-
rule %r'(companion)(\s+)(object)' do
|
46
|
+
rule %r'\b(companion)(\s+)(object)\b' do
|
45
47
|
groups Keyword, Text, Keyword
|
46
48
|
end
|
47
|
-
rule %r'(class|data\s+class|interface|object)(\s+)' do
|
49
|
+
rule %r'\b(class|data\s+class|interface|object)(\s+)' do
|
48
50
|
groups Keyword::Declaration, Text
|
49
51
|
push :class
|
50
52
|
end
|
51
|
-
rule %r'(package|import)(\s+)' do
|
53
|
+
rule %r'\b(package|import)(\s+)' do
|
52
54
|
groups Keyword, Text
|
53
55
|
push :package
|
54
56
|
end
|
55
|
-
rule %r'(val|var)(\s+)' do
|
57
|
+
rule %r'\b(val|var)(\s+)' do
|
56
58
|
groups Keyword::Declaration, Text
|
57
59
|
push :property
|
58
60
|
end
|
59
|
-
rule %r
|
60
|
-
|
61
|
-
push :function
|
62
|
-
end
|
63
|
-
rule /(?:#{keywords.join('|')})\b/, Keyword
|
61
|
+
rule %r/\bfun\b/, Keyword
|
62
|
+
rule /\b(?:#{keywords.join('|')})\b/, Keyword
|
64
63
|
rule id, Name
|
65
64
|
end
|
66
65
|
|
@@ -75,10 +74,6 @@ module Rouge
|
|
75
74
|
state :property do
|
76
75
|
rule id, Name::Property, :pop!
|
77
76
|
end
|
78
|
-
|
79
|
-
state :function do
|
80
|
-
rule id, Name::Function, :pop!
|
81
|
-
end
|
82
77
|
end
|
83
78
|
end
|
84
79
|
end
|
data/lib/rouge/lexers/lasso.rb
CHANGED
@@ -14,12 +14,9 @@ module Rouge
|
|
14
14
|
|
15
15
|
option :start_inline, 'Whether to start inline instead of requiring <?lasso or ['
|
16
16
|
|
17
|
-
def self.
|
18
|
-
|
19
|
-
|
20
|
-
rv += 0.4 if text =~ /<\?(lasso(script)?|=)|no_square_brackets|noprocess/i
|
21
|
-
rv += 0.2 if text =~ /define(_tag|_type|\s)/i
|
22
|
-
return rv
|
17
|
+
def self.detect?(text)
|
18
|
+
return true if text.shebang?('lasso9')
|
19
|
+
return true if text =~ /\A.*?<\?(lasso(script)?|=)/
|
23
20
|
end
|
24
21
|
|
25
22
|
def initialize(*)
|
data/lib/rouge/lexers/llvm.rb
CHANGED
data/lib/rouge/lexers/lua.rb
CHANGED
data/lib/rouge/lexers/make.rb
CHANGED
@@ -10,10 +10,6 @@ module Rouge
|
|
10
10
|
filenames '*.make', 'Makefile', 'makefile', 'Makefile.*', 'GNUmakefile'
|
11
11
|
mimetypes 'text/x-makefile'
|
12
12
|
|
13
|
-
def self.analyze_text(text)
|
14
|
-
return 0.6 if text =~ /^\.PHONY:/
|
15
|
-
end
|
16
|
-
|
17
13
|
bsd_special = %w(
|
18
14
|
include undef error warning if else elif endif for endfor
|
19
15
|
)
|
data/lib/rouge/lexers/matlab.rb
CHANGED
@@ -10,10 +10,6 @@ module Rouge
|
|
10
10
|
filenames '*.m'
|
11
11
|
mimetypes 'text/x-matlab', 'application/x-matlab'
|
12
12
|
|
13
|
-
def self.analyze_text(text)
|
14
|
-
return 0.4 if text =~ /^\s*% / # % comments are a dead giveaway
|
15
|
-
end
|
16
|
-
|
17
13
|
def self.keywords
|
18
14
|
@keywords = Set.new %w(
|
19
15
|
break case catch classdef continue else elseif end for function
|
data/lib/rouge/lexers/mosel.rb
CHANGED
@@ -11,9 +11,9 @@ module Rouge
|
|
11
11
|
filenames '*.mos'
|
12
12
|
|
13
13
|
mimetypes 'text/x-mosel'
|
14
|
-
|
15
|
-
def self.
|
16
|
-
return
|
14
|
+
|
15
|
+
def self.detect?(text)
|
16
|
+
return true if text =~ /^\s*(model|package)\s+/
|
17
17
|
end
|
18
18
|
|
19
19
|
id = /[a-zA-Z_][a-zA-Z0-9_]*/
|
data/lib/rouge/lexers/nasm.rb
CHANGED
@@ -29,20 +29,6 @@ module Rouge
|
|
29
29
|
@builtins ||= %w(YES NO nil)
|
30
30
|
end
|
31
31
|
|
32
|
-
def self.analyze_text(text)
|
33
|
-
return 1 if text =~ /@(end|implementation|protocol|property)\b/
|
34
|
-
|
35
|
-
id = /[a-z$_][a-z0-9$_]*/i
|
36
|
-
return 0.4 if text =~ %r(
|
37
|
-
\[ \s* #{id} \s+
|
38
|
-
(?:
|
39
|
-
#{id} \s* \]
|
40
|
-
| #{id}? :
|
41
|
-
)
|
42
|
-
)x
|
43
|
-
return 0.4 if text.include? '@"'
|
44
|
-
end
|
45
|
-
|
46
32
|
id = /[a-z$_][a-z0-9$_]*/i
|
47
33
|
|
48
34
|
prepend :statements do
|
data/lib/rouge/lexers/perl.rb
CHANGED
@@ -12,9 +12,8 @@ module Rouge
|
|
12
12
|
filenames '*.pl', '*.pm'
|
13
13
|
mimetypes 'text/x-perl', 'application/x-perl'
|
14
14
|
|
15
|
-
def self.
|
16
|
-
return
|
17
|
-
return 0.4 if text.include? 'my $'
|
15
|
+
def self.detect?(text)
|
16
|
+
return true if text.shebang? 'perl'
|
18
17
|
end
|
19
18
|
|
20
19
|
keywords = %w(
|
data/lib/rouge/lexers/php.rb
CHANGED