rouge_ecl 0.0.1 → 1.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 +7 -9
- data/lib/rouge/cli.rb +2 -36
- data/lib/rouge/guessers/glob_mapping.rb +6 -3
- data/lib/rouge/guessers/modeline.rb +3 -4
- data/lib/rouge/guessers/source.rb +16 -6
- data/lib/rouge/lexer.rb +11 -20
- data/lib/rouge/lexers/apiblueprint.rb +4 -0
- data/lib/rouge/lexers/awk.rb +2 -2
- data/lib/rouge/lexers/biml.rb +2 -2
- data/lib/rouge/lexers/c.rb +6 -1
- data/lib/rouge/lexers/coffeescript.rb +2 -2
- data/lib/rouge/lexers/coq.rb +4 -0
- data/lib/rouge/lexers/diff.rb +4 -4
- data/lib/rouge/lexers/digdag.rb +4 -0
- data/lib/rouge/lexers/ecl.rb +32 -20
- data/lib/rouge/lexers/erb.rb +4 -0
- data/lib/rouge/lexers/erlang.rb +4 -0
- data/lib/rouge/lexers/factor.rb +2 -2
- data/lib/rouge/lexers/fsharp.rb +1 -1
- data/lib/rouge/lexers/gherkin.rb +2 -2
- data/lib/rouge/lexers/go.rb +4 -0
- data/lib/rouge/lexers/groovy.rb +2 -2
- data/lib/rouge/lexers/haml.rb +4 -0
- data/lib/rouge/lexers/haskell.rb +5 -4
- data/lib/rouge/lexers/html.rb +5 -6
- data/lib/rouge/lexers/idlang.rb +6 -0
- data/lib/rouge/lexers/ini.rb +4 -0
- data/lib/rouge/lexers/io.rb +2 -2
- data/lib/rouge/lexers/javascript.rb +2 -2
- data/lib/rouge/lexers/julia.rb +2 -2
- data/lib/rouge/lexers/kotlin.rb +15 -10
- data/lib/rouge/lexers/lasso.rb +6 -3
- data/lib/rouge/lexers/llvm.rb +4 -0
- data/lib/rouge/lexers/lua.rb +2 -2
- data/lib/rouge/lexers/make.rb +4 -0
- data/lib/rouge/lexers/matlab.rb +4 -0
- data/lib/rouge/lexers/moonscript.rb +2 -2
- data/lib/rouge/lexers/mosel.rb +3 -3
- data/lib/rouge/lexers/nasm.rb +5 -0
- data/lib/rouge/lexers/objective_c.rb +14 -0
- data/lib/rouge/lexers/perl.rb +4 -3
- data/lib/rouge/lexers/php.rb +6 -6
- data/lib/rouge/lexers/plist.rb +4 -0
- data/lib/rouge/lexers/powershell.rb +1 -1
- data/lib/rouge/lexers/praat.rb +2 -2
- data/lib/rouge/lexers/prolog.rb +5 -0
- data/lib/rouge/lexers/properties.rb +4 -0
- data/lib/rouge/lexers/puppet.rb +3 -3
- data/lib/rouge/lexers/python.rb +2 -3
- data/lib/rouge/lexers/q.rb +4 -0
- data/lib/rouge/lexers/r.rb +2 -2
- data/lib/rouge/lexers/racket.rb +4 -5
- data/lib/rouge/lexers/ruby.rb +3 -3
- data/lib/rouge/lexers/rust.rb +4 -4
- data/lib/rouge/lexers/sass.rb +3 -3
- data/lib/rouge/lexers/scheme.rb +2 -2
- data/lib/rouge/lexers/scss.rb +2 -2
- data/lib/rouge/lexers/sed.rb +2 -2
- data/lib/rouge/lexers/shell.rb +9 -18
- data/lib/rouge/lexers/smarty.rb +11 -0
- data/lib/rouge/lexers/sml.rb +4 -0
- data/lib/rouge/lexers/swift.rb +1 -21
- data/lib/rouge/lexers/tap.rb +4 -0
- data/lib/rouge/lexers/tcl.rb +4 -4
- data/lib/rouge/lexers/tex.rb +2 -2
- data/lib/rouge/lexers/toml.rb +4 -0
- data/lib/rouge/lexers/tulip.rb +3 -2
- data/lib/rouge/lexers/turtle.rb +14 -5
- data/lib/rouge/lexers/vue.rb +6 -4
- data/lib/rouge/lexers/wollok.rb +4 -0
- data/lib/rouge/lexers/xml.rb +6 -4
- data/lib/rouge/lexers/yaml.rb +2 -2
- data/lib/rouge/version.rb +1 -1
- data/rouge.gemspec +1 -6
- metadata +4 -13
- data/lib/rouge/demos/ecl +0 -1
- data/lib/rouge/demos/elm +0 -4
- data/lib/rouge/demos/hack +0 -5
- data/lib/rouge/guessers/disambiguation.rb +0 -101
- data/lib/rouge/guessers/util.rb +0 -32
- data/lib/rouge/lexers/elm.rb +0 -89
- data/lib/rouge/lexers/hack.rb +0 -48
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/fsharp.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.analyze_text(text)
|
|
16
|
+
return 1 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,6 +16,10 @@ 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
|
+
|
|
19
23
|
option 'filters[filter_name]', 'Mapping of lexers to use for haml :filters'
|
|
20
24
|
attr_reader :filters
|
|
21
25
|
# @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.analyze_text(text)
|
|
15
|
+
return 1 if text.shebang?('runhaskell')
|
|
16
16
|
end
|
|
17
17
|
|
|
18
18
|
reserved = %w(
|
|
@@ -55,6 +55,7 @@ module Rouge
|
|
|
55
55
|
|
|
56
56
|
rule /\bimport\b/, Keyword::Reserved, :import
|
|
57
57
|
rule /\bmodule\b/, Keyword::Reserved, :module
|
|
58
|
+
rule /\berror\b/, Name::Exception
|
|
58
59
|
rule /\b(?:#{reserved.join('|')})\b/, Keyword::Reserved
|
|
59
60
|
# not sure why, but ^ doesn't work here
|
|
60
61
|
# rule /^[_a-z][\w']*/, Name::Function
|
|
@@ -147,7 +148,7 @@ module Rouge
|
|
|
147
148
|
state :character do
|
|
148
149
|
rule /\\/ do
|
|
149
150
|
token Str::Escape
|
|
150
|
-
|
|
151
|
+
push :character_end
|
|
151
152
|
push :escape
|
|
152
153
|
end
|
|
153
154
|
|
|
@@ -173,7 +174,7 @@ module Rouge
|
|
|
173
174
|
rule /\^[\]\[A-Z@\^_]/, Str::Escape, :pop!
|
|
174
175
|
rule /#{ascii.join('|')}/, Str::Escape, :pop!
|
|
175
176
|
rule /o[0-7]+/i, Str::Escape, :pop!
|
|
176
|
-
rule /x[\da-f]
|
|
177
|
+
rule /x[\da-f]/i, Str::Escape, :pop!
|
|
177
178
|
rule /\d+/, Str::Escape, :pop!
|
|
178
179
|
rule /\s+\\/, Str::Escape, :pop!
|
|
179
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.analyze_text(text)
|
|
13
|
+
return 1 if text.doctype?(/\bhtml\b/i)
|
|
14
|
+
return 1 if text =~ /<\s*html\b/
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
start do
|
|
@@ -37,7 +37,6 @@ module Rouge
|
|
|
37
37
|
rule /<\s*style\s*/m do
|
|
38
38
|
token Name::Tag
|
|
39
39
|
@css.reset!
|
|
40
|
-
@lang = @css
|
|
41
40
|
push :style_content
|
|
42
41
|
push :tag
|
|
43
42
|
end
|
|
@@ -125,13 +124,13 @@ module Rouge
|
|
|
125
124
|
|
|
126
125
|
state :style_content do
|
|
127
126
|
rule /[^<]+/ do
|
|
128
|
-
delegate @
|
|
127
|
+
delegate @css
|
|
129
128
|
end
|
|
130
129
|
|
|
131
130
|
rule %r(<\s*/\s*style\s*>)m, Name::Tag, :pop!
|
|
132
131
|
|
|
133
132
|
rule /</ do
|
|
134
|
-
delegate @
|
|
133
|
+
delegate @css
|
|
135
134
|
end
|
|
136
135
|
end
|
|
137
136
|
end
|
data/lib/rouge/lexers/idlang.rb
CHANGED
|
@@ -10,6 +10,12 @@ 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
|
+
|
|
13
19
|
name = /[_A-Z]\w*/i
|
|
14
20
|
kind_param = /(\d+|#{name})/
|
|
15
21
|
exponent = /[dDeE][+-]\d+/
|
data/lib/rouge/lexers/ini.rb
CHANGED
data/lib/rouge/lexers/io.rb
CHANGED
|
@@ -14,11 +14,11 @@ module Rouge
|
|
|
14
14
|
|
|
15
15
|
tag 'javascript'
|
|
16
16
|
aliases 'js'
|
|
17
|
-
filenames '*.js'
|
|
17
|
+
filenames '*.js'
|
|
18
18
|
mimetypes 'application/javascript', 'application/x-javascript',
|
|
19
19
|
'text/javascript', 'text/x-javascript'
|
|
20
20
|
|
|
21
|
-
def self.
|
|
21
|
+
def self.analyze_text(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,10 +3,8 @@
|
|
|
3
3
|
module Rouge
|
|
4
4
|
module Lexers
|
|
5
5
|
class Kotlin < RegexLexer
|
|
6
|
-
# https://kotlinlang.org/docs/reference/grammar.html
|
|
7
|
-
|
|
8
6
|
title "Kotlin"
|
|
9
|
-
desc "Kotlin
|
|
7
|
+
desc "Kotlin <http://kotlinlang.org>"
|
|
10
8
|
|
|
11
9
|
tag 'kotlin'
|
|
12
10
|
filenames '*.kt'
|
|
@@ -31,7 +29,7 @@ module Rouge
|
|
|
31
29
|
rule %r'^\s*\[.*?\]', Name::Attribute
|
|
32
30
|
rule %r'[^\S\n]+', Text
|
|
33
31
|
rule %r'\\\n', Text # line continuation
|
|
34
|
-
rule %r'
|
|
32
|
+
rule %r'//.*?\n', Comment::Single
|
|
35
33
|
rule %r'/[*].*?[*]/'m, Comment::Multiline
|
|
36
34
|
rule %r'\n', Text
|
|
37
35
|
rule %r'::|!!|\?[:.]', Operator
|
|
@@ -43,23 +41,26 @@ module Rouge
|
|
|
43
41
|
rule %r'"(\\\\|\\"|[^"\n])*["\n]'m, Str
|
|
44
42
|
rule %r"'\\.'|'[^\\]'", Str::Char
|
|
45
43
|
rule %r"[0-9](\.[0-9]+)?([eE][+-][0-9]+)?[flFL]?|0[xX][0-9a-fA-F]+[Ll]?", Num
|
|
46
|
-
rule %r'
|
|
44
|
+
rule %r'(companion)(\s+)(object)' do
|
|
47
45
|
groups Keyword, Text, Keyword
|
|
48
46
|
end
|
|
49
|
-
rule %r'
|
|
47
|
+
rule %r'(class|data\s+class|interface|object)(\s+)' do
|
|
50
48
|
groups Keyword::Declaration, Text
|
|
51
49
|
push :class
|
|
52
50
|
end
|
|
53
|
-
rule %r'
|
|
51
|
+
rule %r'(package|import)(\s+)' do
|
|
54
52
|
groups Keyword, Text
|
|
55
53
|
push :package
|
|
56
54
|
end
|
|
57
|
-
rule %r'
|
|
55
|
+
rule %r'(val|var)(\s+)' do
|
|
58
56
|
groups Keyword::Declaration, Text
|
|
59
57
|
push :property
|
|
60
58
|
end
|
|
61
|
-
rule %r
|
|
62
|
-
|
|
59
|
+
rule %r'(fun)(\s+)' do
|
|
60
|
+
groups Keyword, Text
|
|
61
|
+
push :function
|
|
62
|
+
end
|
|
63
|
+
rule /(?:#{keywords.join('|')})\b/, Keyword
|
|
63
64
|
rule id, Name
|
|
64
65
|
end
|
|
65
66
|
|
|
@@ -74,6 +75,10 @@ module Rouge
|
|
|
74
75
|
state :property do
|
|
75
76
|
rule id, Name::Property, :pop!
|
|
76
77
|
end
|
|
78
|
+
|
|
79
|
+
state :function do
|
|
80
|
+
rule id, Name::Function, :pop!
|
|
81
|
+
end
|
|
77
82
|
end
|
|
78
83
|
end
|
|
79
84
|
end
|
data/lib/rouge/lexers/lasso.rb
CHANGED
|
@@ -14,9 +14,12 @@ 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
|
-
|
|
17
|
+
def self.analyze_text(text)
|
|
18
|
+
rv = 0.0
|
|
19
|
+
rv += 1 if text.shebang?('lasso9')
|
|
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
|
|
20
23
|
end
|
|
21
24
|
|
|
22
25
|
def initialize(*)
|
data/lib/rouge/lexers/llvm.rb
CHANGED
data/lib/rouge/lexers/lua.rb
CHANGED
data/lib/rouge/lexers/make.rb
CHANGED
|
@@ -10,6 +10,10 @@ 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
|
+
|
|
13
17
|
bsd_special = %w(
|
|
14
18
|
include undef error warning if else elif endif for endfor
|
|
15
19
|
)
|
data/lib/rouge/lexers/matlab.rb
CHANGED
|
@@ -10,6 +10,10 @@ 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
|
+
|
|
13
17
|
def self.keywords
|
|
14
18
|
@keywords = Set.new %w(
|
|
15
19
|
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.analyze_text(text)
|
|
16
|
+
return 1 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,6 +29,20 @@ 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
|
+
|
|
32
46
|
id = /[a-z$_][a-z0-9$_]*/i
|
|
33
47
|
|
|
34
48
|
prepend :statements do
|
data/lib/rouge/lexers/perl.rb
CHANGED
|
@@ -12,8 +12,9 @@ module Rouge
|
|
|
12
12
|
filenames '*.pl', '*.pm'
|
|
13
13
|
mimetypes 'text/x-perl', 'application/x-perl'
|
|
14
14
|
|
|
15
|
-
def self.
|
|
16
|
-
return
|
|
15
|
+
def self.analyze_text(text)
|
|
16
|
+
return 1 if text.shebang? 'perl'
|
|
17
|
+
return 0.4 if text.include? 'my $'
|
|
17
18
|
end
|
|
18
19
|
|
|
19
20
|
keywords = %w(
|
|
@@ -104,7 +105,6 @@ module Rouge
|
|
|
104
105
|
rule /__END__\b/, Comment::Preproc, :end_part
|
|
105
106
|
rule /\$\^[ADEFHILMOPSTWX]/, Name::Variable::Global
|
|
106
107
|
rule /\$[\\"'\[\]&`+*.,;=%~?@$!<>(^\|\/-](?!\w)/, Name::Variable::Global
|
|
107
|
-
rule /[-+\/*%=<>&^\|!\\~]=?/, Operator
|
|
108
108
|
rule /[$@%#]+/, Name::Variable, :varname
|
|
109
109
|
|
|
110
110
|
rule /0_?[0-7]+(_[0-7]+)*/, Num::Oct
|
|
@@ -129,6 +129,7 @@ module Rouge
|
|
|
129
129
|
rule /sub\s+/, Keyword, :funcname
|
|
130
130
|
rule /\[\]|\*\*|::|<<|>>|>=|<=|<=>|={3}|!=|=~|!~|&&?|\|\||\.{1,3}/,
|
|
131
131
|
Operator
|
|
132
|
+
rule /[-+\/*%=<>&^\|!\\~]=?/, Operator
|
|
132
133
|
rule /[()\[\]:;,<>\/?{}]/, Punctuation
|
|
133
134
|
rule(/(?=\w)/) { push :name }
|
|
134
135
|
end
|