rouge 2.2.1 → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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