coderay 1.0.0.598.pre → 1.0.0.738.pre
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/coderay +1 -1
- data/lib/coderay.rb +38 -32
- data/lib/coderay/duo.rb +1 -54
- data/lib/coderay/encoder.rb +31 -33
- data/lib/coderay/encoders/_map.rb +4 -2
- data/lib/coderay/encoders/comment_filter.rb +0 -61
- data/lib/coderay/encoders/count.rb +2 -23
- data/lib/coderay/encoders/debug.rb +11 -60
- data/lib/coderay/encoders/filter.rb +0 -46
- data/lib/coderay/encoders/html.rb +83 -91
- data/lib/coderay/encoders/html/css.rb +1 -6
- data/lib/coderay/encoders/html/numbering.rb +18 -21
- data/lib/coderay/encoders/html/output.rb +10 -52
- data/lib/coderay/encoders/json.rb +19 -39
- data/lib/coderay/encoders/lines_of_code.rb +7 -52
- data/lib/coderay/encoders/null.rb +6 -13
- data/lib/coderay/encoders/statistic.rb +30 -93
- data/lib/coderay/encoders/terminal.rb +3 -4
- data/lib/coderay/encoders/text.rb +1 -23
- data/lib/coderay/encoders/token_kind_filter.rb +0 -58
- data/lib/coderay/helpers/file_type.rb +119 -240
- data/lib/coderay/helpers/gzip.rb +41 -0
- data/lib/coderay/helpers/plugin.rb +237 -307
- data/lib/coderay/scanner.rb +112 -88
- data/lib/coderay/scanners/_map.rb +3 -3
- data/lib/coderay/scanners/c.rb +7 -7
- data/lib/coderay/scanners/clojure.rb +204 -0
- data/lib/coderay/scanners/css.rb +10 -20
- data/lib/coderay/scanners/debug.rb +9 -55
- data/lib/coderay/scanners/diff.rb +21 -4
- data/lib/coderay/scanners/html.rb +65 -18
- data/lib/coderay/scanners/java.rb +3 -2
- data/lib/coderay/scanners/java_script.rb +3 -3
- data/lib/coderay/scanners/json.rb +7 -6
- data/lib/coderay/scanners/php.rb +2 -1
- data/lib/coderay/scanners/rhtml.rb +6 -2
- data/lib/coderay/scanners/ruby.rb +193 -193
- data/lib/coderay/scanners/ruby/patterns.rb +15 -82
- data/lib/coderay/scanners/ruby/string_state.rb +71 -0
- data/lib/coderay/scanners/sql.rb +1 -1
- data/lib/coderay/scanners/yaml.rb +4 -2
- data/lib/coderay/styles/_map.rb +2 -2
- data/lib/coderay/styles/alpha.rb +48 -38
- data/lib/coderay/styles/cycnus.rb +2 -1
- data/lib/coderay/token_kinds.rb +88 -86
- data/lib/coderay/tokens.rb +88 -112
- data/test/functional/basic.rb +184 -5
- data/test/functional/examples.rb +4 -4
- data/test/functional/for_redcloth.rb +3 -2
- data/test/functional/suite.rb +7 -6
- metadata +11 -24
- data/lib/coderay/helpers/gzip_simple.rb +0 -123
- data/test/functional/load_plugin_scanner.rb +0 -11
- data/test/functional/vhdl.rb +0 -126
- data/test/functional/word_list.rb +0 -79
@@ -65,7 +65,6 @@ module Scanners
|
|
65
65
|
QUOTE_TO_TYPE.default = :string
|
66
66
|
|
67
67
|
REGEXP_MODIFIERS = /[mousenix]*/
|
68
|
-
REGEXP_SYMBOLS = /[|?*+(){}\[\].^$]/
|
69
68
|
|
70
69
|
DECIMAL = /\d+(?:_\d+)*/
|
71
70
|
OCTAL = /0_?[0-7]+(?:_[0-7]+)*/
|
@@ -91,7 +90,7 @@ module Scanners
|
|
91
90
|
[abefnrstv]
|
92
91
|
| [0-7]{1,3}
|
93
92
|
| x[0-9A-Fa-f]{1,2}
|
94
|
-
|
|
93
|
+
| .
|
95
94
|
/mx
|
96
95
|
|
97
96
|
CONTROL_META_ESCAPE = /
|
@@ -157,86 +156,20 @@ module Scanners
|
|
157
156
|
while elsif if not return
|
158
157
|
yield
|
159
158
|
])
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
'
|
165
|
-
'
|
166
|
-
|
167
|
-
|
168
|
-
'
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
class StringState < Struct.new :type, :interpreted, :delim, :heredoc,
|
174
|
-
:opening_paren, :paren_depth, :pattern, :next_state
|
175
|
-
|
176
|
-
CLOSING_PAREN = Hash[ *%w[
|
177
|
-
( )
|
178
|
-
[ ]
|
179
|
-
< >
|
180
|
-
{ }
|
181
|
-
] ]
|
182
|
-
|
183
|
-
CLOSING_PAREN.each { |k,v| k.freeze; v.freeze } # debug, if I try to change it with <<
|
184
|
-
OPENING_PAREN = CLOSING_PAREN.invert
|
185
|
-
|
186
|
-
STRING_PATTERN = Hash.new do |h, k|
|
187
|
-
delim, interpreted = *k
|
188
|
-
delim_pattern = Regexp.escape(delim.dup) # dup: workaround for old Ruby
|
189
|
-
if closing_paren = CLOSING_PAREN[delim]
|
190
|
-
delim_pattern = delim_pattern[0..-1] if defined? JRUBY_VERSION # JRuby fix
|
191
|
-
delim_pattern << Regexp.escape(closing_paren)
|
192
|
-
end
|
193
|
-
delim_pattern << '\\\\' unless delim == '\\'
|
194
|
-
|
195
|
-
special_escapes =
|
196
|
-
case interpreted
|
197
|
-
when :regexp_symbols
|
198
|
-
'| ' + REGEXP_SYMBOLS.source
|
199
|
-
when :words
|
200
|
-
'| \s'
|
201
|
-
end
|
202
|
-
|
203
|
-
h[k] =
|
204
|
-
if interpreted and not delim == '#'
|
205
|
-
/ (?= [#{delim_pattern}] | \# [{$@] #{special_escapes} ) /mx
|
206
|
-
else
|
207
|
-
/ (?= [#{delim_pattern}] #{special_escapes} ) /mx
|
208
|
-
end
|
209
|
-
end
|
210
|
-
|
211
|
-
HEREDOC_PATTERN = Hash.new do |h, k|
|
212
|
-
delim, interpreted, indented = *k
|
213
|
-
delim_pattern = Regexp.escape(delim.dup) # dup: workaround for old Ruby
|
214
|
-
delim_pattern = / \n #{ '(?>[\ \t]*)' if indented } #{ Regexp.new delim_pattern } $ /x
|
215
|
-
h[k] =
|
216
|
-
if interpreted
|
217
|
-
/ (?= #{delim_pattern}() | \\ | \# [{$@] ) /mx # $1 set == end of heredoc
|
218
|
-
else
|
219
|
-
/ (?= #{delim_pattern}() | \\ ) /mx
|
220
|
-
end
|
221
|
-
end
|
222
|
-
|
223
|
-
def initialize kind, interpreted, delim, heredoc = false
|
224
|
-
if heredoc
|
225
|
-
pattern = HEREDOC_PATTERN[ [delim, interpreted, heredoc == :indented] ]
|
226
|
-
delim = nil
|
227
|
-
else
|
228
|
-
pattern = STRING_PATTERN[ [delim, interpreted] ]
|
229
|
-
if closing_paren = CLOSING_PAREN[delim]
|
230
|
-
opening_paren = delim
|
231
|
-
delim = closing_paren
|
232
|
-
paren_depth = 1
|
233
|
-
end
|
234
|
-
end
|
235
|
-
super kind, interpreted, delim, heredoc, opening_paren, paren_depth, pattern, :initial
|
236
|
-
end
|
237
|
-
end unless defined? StringState
|
238
|
-
|
159
|
+
|
160
|
+
FANCY_STRING_START = / % ( [QqrsWwx] | (?![a-zA-Z0-9]) ) ([^a-zA-Z0-9]) /x
|
161
|
+
FANCY_STRING_KIND = Hash.new(:string).merge({
|
162
|
+
'r' => :regexp,
|
163
|
+
's' => :symbol,
|
164
|
+
'x' => :shell,
|
165
|
+
})
|
166
|
+
FANCY_STRING_INTERPRETED = Hash.new(true).merge({
|
167
|
+
'q' => false,
|
168
|
+
's' => false,
|
169
|
+
'w' => false,
|
170
|
+
})
|
171
|
+
|
239
172
|
end
|
240
|
-
|
173
|
+
|
241
174
|
end
|
242
175
|
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module CodeRay
|
3
|
+
module Scanners
|
4
|
+
|
5
|
+
class Ruby
|
6
|
+
|
7
|
+
class StringState < Struct.new :type, :interpreted, :delim, :heredoc,
|
8
|
+
:opening_paren, :paren_depth, :pattern, :next_state # :nodoc: all
|
9
|
+
|
10
|
+
CLOSING_PAREN = Hash[ *%w[
|
11
|
+
( )
|
12
|
+
[ ]
|
13
|
+
< >
|
14
|
+
{ }
|
15
|
+
] ].each { |k,v| k.freeze; v.freeze } # debug, if I try to change it with <<
|
16
|
+
|
17
|
+
STRING_PATTERN = Hash.new do |h, k|
|
18
|
+
delim, interpreted = *k
|
19
|
+
# delim = delim.dup # workaround for old Ruby
|
20
|
+
delim_pattern = Regexp.escape(delim)
|
21
|
+
if closing_paren = CLOSING_PAREN[delim]
|
22
|
+
delim_pattern << Regexp.escape(closing_paren)
|
23
|
+
end
|
24
|
+
delim_pattern << '\\\\' unless delim == '\\'
|
25
|
+
|
26
|
+
# special_escapes =
|
27
|
+
# case interpreted
|
28
|
+
# when :regexp_symbols
|
29
|
+
# '| [|?*+(){}\[\].^$]'
|
30
|
+
# end
|
31
|
+
|
32
|
+
h[k] =
|
33
|
+
if interpreted && delim != '#'
|
34
|
+
/ (?= [#{delim_pattern}] | \# [{$@] ) /mx
|
35
|
+
else
|
36
|
+
/ (?= [#{delim_pattern}] ) /mx
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def initialize kind, interpreted, delim, heredoc = false
|
41
|
+
if heredoc
|
42
|
+
pattern = heredoc_pattern delim, interpreted, heredoc == :indented
|
43
|
+
delim = nil
|
44
|
+
else
|
45
|
+
pattern = STRING_PATTERN[ [delim, interpreted] ]
|
46
|
+
if closing_paren = CLOSING_PAREN[delim]
|
47
|
+
opening_paren = delim
|
48
|
+
delim = closing_paren
|
49
|
+
paren_depth = 1
|
50
|
+
end
|
51
|
+
end
|
52
|
+
super kind, interpreted, delim, heredoc, opening_paren, paren_depth, pattern, :initial
|
53
|
+
end
|
54
|
+
|
55
|
+
def heredoc_pattern delim, interpreted, indented
|
56
|
+
# delim = delim.dup # workaround for old Ruby
|
57
|
+
delim_pattern = Regexp.escape(delim)
|
58
|
+
delim_pattern = / \n #{ '(?>[ \t]*)' if indented } #{ Regexp.new delim_pattern } $ /x
|
59
|
+
if interpreted
|
60
|
+
/ (?= #{delim_pattern}() | \\ | \# [{$@] ) /mx # $1 set == end of heredoc
|
61
|
+
else
|
62
|
+
/ (?= #{delim_pattern}() | \\ ) /mx
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
69
|
+
|
70
|
+
end
|
71
|
+
end
|
data/lib/coderay/scanners/sql.rb
CHANGED
@@ -64,7 +64,7 @@ module CodeRay module Scanners
|
|
64
64
|
if match = scan(/ \s+ | \\\n /x)
|
65
65
|
encoder.text_token match, :space
|
66
66
|
|
67
|
-
elsif match = scan(
|
67
|
+
elsif match = scan(/(?:--\s?|#).*/)
|
68
68
|
encoder.text_token match, :comment
|
69
69
|
|
70
70
|
elsif match = scan(%r( /\* (!)? (?: .*? \*/ | .* ) )mx)
|
@@ -60,9 +60,11 @@ module Scanners
|
|
60
60
|
encoder.end_group :string
|
61
61
|
next
|
62
62
|
when match = scan(/(?![!"*&]).+?(?=$|\s+#)/)
|
63
|
-
encoder.
|
63
|
+
encoder.begin_group :string
|
64
|
+
encoder.text_token match, :content
|
64
65
|
string_indent = key_indent || column(pos - match.size - 1)
|
65
|
-
encoder.text_token matched, :
|
66
|
+
encoder.text_token matched, :content if scan(/(?:\n+ {#{string_indent + 1}}.*)+/)
|
67
|
+
encoder.end_group :string
|
66
68
|
next
|
67
69
|
end
|
68
70
|
|
data/lib/coderay/styles/_map.rb
CHANGED
data/lib/coderay/styles/alpha.rb
CHANGED
@@ -6,19 +6,20 @@ module Styles
|
|
6
6
|
|
7
7
|
register_for :alpha
|
8
8
|
|
9
|
-
code_background = '
|
10
|
-
numbers_background = '
|
9
|
+
code_background = 'hsl(0,0%,95%)'
|
10
|
+
numbers_background = 'hsl(180,65%,90%)'
|
11
11
|
border_color = 'silver'
|
12
|
-
normal_color = '
|
12
|
+
normal_color = 'black'
|
13
13
|
|
14
14
|
CSS_MAIN_STYLES = <<-MAIN # :nodoc:
|
15
15
|
.CodeRay {
|
16
16
|
background-color: #{code_background};
|
17
17
|
border: 1px solid #{border_color};
|
18
|
-
font-family: 'Courier New', 'Terminal', monospace;
|
19
18
|
color: #{normal_color};
|
20
19
|
}
|
21
|
-
.CodeRay pre {
|
20
|
+
.CodeRay pre {
|
21
|
+
margin: 0px;
|
22
|
+
}
|
22
23
|
|
23
24
|
span.CodeRay { white-space: pre; border: 0px; padding: 2px; }
|
24
25
|
|
@@ -29,88 +30,97 @@ table.CodeRay td { padding: 2px 4px; vertical-align: top; }
|
|
29
30
|
background-color: #{numbers_background};
|
30
31
|
color: gray;
|
31
32
|
text-align: right;
|
33
|
+
-moz-user-select: none;
|
34
|
+
-webkit-user-select: none;
|
35
|
+
}
|
36
|
+
.CodeRay .line_numbers a, .CodeRay .no a {
|
37
|
+
background-color: #{numbers_background} !important;
|
38
|
+
color: gray !important;
|
39
|
+
text-decoration: none !important;
|
32
40
|
}
|
33
|
-
.CodeRay .line_numbers a:target, .CodeRay .no a:target { color: blue; }
|
34
|
-
.CodeRay .line_numbers .highlighted, .CodeRay .no .highlighted { color: red; }
|
41
|
+
.CodeRay .line_numbers a:target, .CodeRay .no a:target { color: blue !important; }
|
42
|
+
.CodeRay .line_numbers .highlighted, .CodeRay .no .highlighted { color: red !important; }
|
43
|
+
.CodeRay .line_numbers .highlighted a, .CodeRay .no .highlighted a { color: red !important; }
|
35
44
|
.CodeRay .no { padding: 0px 4px; }
|
45
|
+
.CodeRay .line { display: block; float: left; width: 100%; }
|
36
46
|
.CodeRay .code { width: 100%; }
|
37
47
|
.CodeRay .code pre { overflow: auto; }
|
38
48
|
MAIN
|
39
49
|
|
40
50
|
TOKEN_COLORS = <<-'TOKENS'
|
41
|
-
.debug { color:white !
|
51
|
+
.debug { color: white !important; background: blue !important; }
|
42
52
|
|
43
53
|
.an { color:#007 }
|
44
54
|
.at { color:#f08 }
|
45
55
|
.av { color:#700 }
|
46
|
-
.bi { color:#509
|
47
|
-
.c { color:#888
|
48
|
-
.c .dl { color:#444
|
49
|
-
.c .ch { color:#444
|
56
|
+
.bi { color:#509 }
|
57
|
+
.c { color:#888 }
|
58
|
+
.c .dl { color:#444 }
|
59
|
+
.c .ch { color:#444 }
|
50
60
|
|
51
61
|
.ch { color:#04D }
|
52
62
|
.ch .k { color:#04D }
|
53
63
|
.ch .dl { color:#039 }
|
54
64
|
|
55
65
|
.cl { color:#B06; font-weight:bold }
|
56
|
-
.cm { color:#A08
|
66
|
+
.cm { color:#A08 }
|
57
67
|
.co { color:#036; font-weight:bold }
|
58
68
|
.cr { color:#0A0 }
|
59
69
|
.cv { color:#369 }
|
60
|
-
.de { color:#B0B
|
70
|
+
.de { color:#B0B }
|
61
71
|
.df { color:#099; font-weight:bold }
|
62
72
|
.di { color:#088; font-weight:bold }
|
63
73
|
.dl { color:black }
|
64
74
|
.do { color:#970 }
|
65
75
|
.dt { color:#34b }
|
66
76
|
.ds { color:#D42; font-weight:bold }
|
67
|
-
.e { color:#666
|
77
|
+
.e { color:#666 }
|
68
78
|
.en { color:#800; font-weight:bold }
|
69
79
|
.er { color:#F00; background-color:#FAA }
|
70
80
|
.ex { color:#C00; font-weight:bold }
|
71
|
-
.fl { color:#60E
|
81
|
+
.fl { color:#60E }
|
72
82
|
.fu { color:#06B; font-weight:bold }
|
73
|
-
.gv { color:#d70
|
74
|
-
.hx { color:#
|
75
|
-
.i { color:#00D
|
83
|
+
.gv { color:#d70 }
|
84
|
+
.hx { color:#02b }
|
85
|
+
.i { color:#00D }
|
76
86
|
.ic { color:#B44; font-weight:bold }
|
77
87
|
|
78
88
|
.il { background-color: hsla(0,0%,0%,0.1); color: black }
|
79
|
-
.
|
80
|
-
.idl { font-weight: bold; background-color: hsla(0,0%,0%,0.1); color: #666; }
|
89
|
+
.idl { font-weight: bold; color: #666 }
|
81
90
|
|
82
|
-
.im { color:#f00
|
91
|
+
.im { color:#f00 }
|
83
92
|
.in { color:#B2B; font-weight:bold }
|
84
93
|
.iv { color:#33B }
|
85
94
|
.la { color:#970; font-weight:bold }
|
86
95
|
.lv { color:#963 }
|
87
96
|
.ns { color:#707; font-weight:bold }
|
88
|
-
.oc { color:#40E
|
97
|
+
.oc { color:#40E }
|
89
98
|
.op { }
|
90
|
-
.pc { color:#
|
99
|
+
.pc { color:#069 }
|
91
100
|
.pd { color:#369; font-weight:bold }
|
92
|
-
.pp { color:#579
|
101
|
+
.pp { color:#579 }
|
93
102
|
.ps { color:#00C; font-weight:bold }
|
94
103
|
.pt { color:#074; font-weight:bold }
|
95
|
-
.r
|
104
|
+
.r { color:#080; font-weight:bold }
|
105
|
+
.kw { color:#080; font-weight:bold }
|
96
106
|
|
97
|
-
.ke { color: #
|
98
|
-
.ke .dl { color: #
|
99
|
-
.ke .ch { color: #
|
107
|
+
.ke { color: #606 }
|
108
|
+
.ke .dl { color: #404 }
|
109
|
+
.ke .ch { color: #60f }
|
100
110
|
.vl { color: #088; }
|
101
111
|
|
102
|
-
.rx { background-color:hsla(300,100%,50%,0.
|
112
|
+
.rx { background-color:hsla(300,100%,50%,0.09); }
|
103
113
|
.rx .k { color:#808 }
|
104
114
|
.rx .dl { color:#404 }
|
105
115
|
.rx .mod { color:#C2C }
|
106
|
-
.rx .fu { color:#404; font-weight: bold }
|
107
116
|
|
108
|
-
.s { background-color:hsla(0,100%,50%,0.
|
109
|
-
.s .k { color: #D20
|
110
|
-
.s .ch { color: #b0b
|
111
|
-
.s .dl { color: #710
|
117
|
+
.s { background-color:hsla(0,100%,50%,0.08); }
|
118
|
+
.s .k { color: #D20 }
|
119
|
+
.s .ch { color: #b0b }
|
120
|
+
.s .dl { color: #710 }
|
121
|
+
.s .mod { color: #E40 }
|
112
122
|
|
113
|
-
.sh { background-color:hsla(120,100%,50%,0.
|
123
|
+
.sh { background-color:hsla(120,100%,50%,0.09); }
|
114
124
|
.sh .k { color:#2B2 }
|
115
125
|
.sh .dl { color:#161 }
|
116
126
|
|
@@ -135,8 +145,8 @@ table.CodeRay td { padding: 2px 4px; vertical-align: top; }
|
|
135
145
|
|
136
146
|
.ins .ins { color: #080; background:transparent; font-weight:bold }
|
137
147
|
.del .del { color: #800; background:transparent; font-weight:bold }
|
138
|
-
.chg .chg { color: #66f
|
139
|
-
.head .head { color: #f4f
|
148
|
+
.chg .chg { color: #66f }
|
149
|
+
.head .head { color: #f4f }
|
140
150
|
TOKENS
|
141
151
|
|
142
152
|
end
|
@@ -32,12 +32,13 @@ table.CodeRay td { padding: 2px 4px; vertical-align: top; }
|
|
32
32
|
}
|
33
33
|
.CodeRay .line_numbers .highlighted, .CodeRay .no .highlighted { color: red; }
|
34
34
|
.CodeRay .no { padding: 0px 4px; }
|
35
|
+
.CodeRay .line { display: block; float: left; width: 100%; }
|
35
36
|
.CodeRay .code { width: 100%; }
|
36
37
|
.CodeRay .code pre { overflow: auto; }
|
37
38
|
MAIN
|
38
39
|
|
39
40
|
TOKEN_COLORS = <<-'TOKENS'
|
40
|
-
.debug { color:white !
|
41
|
+
.debug { color: white !important; background: blue !important; }
|
41
42
|
|
42
43
|
.an { color:#007 }
|
43
44
|
.at { color:#f08 }
|
data/lib/coderay/token_kinds.rb
CHANGED
@@ -1,89 +1,91 @@
|
|
1
1
|
module CodeRay
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
:NO_HIGHLIGHT
|
8
|
-
end
|
9
|
-
end
|
10
|
-
AbbreviationForKind.update with = { # :nodoc:
|
11
|
-
:annotation => 'at',
|
12
|
-
:attribute_name => 'an',
|
13
|
-
:attribute_value => 'av',
|
14
|
-
:bin => 'bi',
|
15
|
-
:char => 'ch',
|
16
|
-
:class => 'cl',
|
17
|
-
:class_variable => 'cv',
|
18
|
-
:color => 'cr',
|
19
|
-
:comment => 'c',
|
20
|
-
:complex => 'cm',
|
21
|
-
:constant => 'co',
|
22
|
-
:content => 'k',
|
23
|
-
:decorator => 'de',
|
24
|
-
:definition => 'df',
|
25
|
-
:delimiter => 'dl',
|
26
|
-
:directive => 'di',
|
27
|
-
:doc => 'do',
|
28
|
-
:doctype => 'dt',
|
29
|
-
:doc_string => 'ds',
|
30
|
-
:entity => 'en',
|
31
|
-
:error => 'er',
|
32
|
-
:escape => 'e',
|
33
|
-
:exception => 'ex',
|
34
|
-
:filename => 'filename',
|
35
|
-
:float => 'fl',
|
36
|
-
:function => 'fu',
|
37
|
-
:global_variable => 'gv',
|
38
|
-
:hex => 'hx',
|
39
|
-
:imaginary => 'cm',
|
40
|
-
:important => 'im',
|
41
|
-
:include => 'ic',
|
42
|
-
:inline => 'il',
|
43
|
-
:inline_delimiter => 'idl',
|
44
|
-
:instance_variable => 'iv',
|
45
|
-
:integer => 'i',
|
46
|
-
:interpreted => 'in',
|
47
|
-
:key => 'ke',
|
48
|
-
:keyword => 'kw',
|
49
|
-
:label => 'la',
|
50
|
-
:local_variable => 'lv',
|
51
|
-
:modifier => 'mod',
|
52
|
-
:namespace => 'ns',
|
53
|
-
:oct => 'oc',
|
54
|
-
:predefined => 'pd',
|
55
|
-
:preprocessor => 'pp',
|
56
|
-
:pre_constant => 'pc',
|
57
|
-
:pre_type => 'pt',
|
58
|
-
:pseudo_class => 'ps',
|
59
|
-
:regexp => 'rx',
|
60
|
-
:reserved => 'r',
|
61
|
-
:shell => 'sh',
|
62
|
-
:string => 's',
|
63
|
-
:symbol => 'sy',
|
64
|
-
:tag => 'ta',
|
65
|
-
:tag_special => 'ts',
|
66
|
-
:type => 'ty',
|
67
|
-
:value => 'vl',
|
68
|
-
:variable => 'v',
|
69
|
-
|
70
|
-
:insert => 'ins',
|
71
|
-
:delete => 'del',
|
72
|
-
:change => 'chg',
|
73
|
-
:head => 'head',
|
74
|
-
|
75
|
-
:eyecatcher => 'eye',
|
76
|
-
|
77
|
-
:ident => :NO_HIGHLIGHT, # 'id'
|
78
|
-
#:operator => 'op',
|
79
|
-
:operator => :NO_HIGHLIGHT, # 'op'
|
80
|
-
:space => :NO_HIGHLIGHT, # 'sp'
|
81
|
-
:plain => :NO_HIGHLIGHT,
|
82
|
-
}
|
83
|
-
AbbreviationForKind[:method] = AbbreviationForKind[:function]
|
84
|
-
AbbreviationForKind[:nesting_delimiter] = AbbreviationForKind[:delimiter]
|
85
|
-
AbbreviationForKind[:escape] = AbbreviationForKind[:delimiter]
|
86
|
-
AbbreviationForKind[:docstring] = AbbreviationForKind[:comment]
|
87
|
-
#AbbreviationForKind.default = AbbreviationForKind[:error] or raise 'no class found for :error!'
|
2
|
+
|
3
|
+
# A Hash of all known token kinds and their associated CSS classes.
|
4
|
+
TokenKinds = Hash.new do |h, k|
|
5
|
+
warn 'Undefined Token kind: %p' % [k] if $CODERAY_DEBUG
|
6
|
+
false
|
88
7
|
end
|
8
|
+
|
9
|
+
# speedup
|
10
|
+
TokenKinds.compare_by_identity if TokenKinds.respond_to? :compare_by_identity
|
11
|
+
|
12
|
+
TokenKinds.update with = { # :nodoc:
|
13
|
+
:annotation => 'at',
|
14
|
+
:attribute_name => 'an',
|
15
|
+
:attribute_value => 'av',
|
16
|
+
:bin => 'bi',
|
17
|
+
:char => 'ch',
|
18
|
+
:class => 'cl',
|
19
|
+
:class_variable => 'cv',
|
20
|
+
:color => 'cr',
|
21
|
+
:comment => 'c',
|
22
|
+
:complex => 'cm',
|
23
|
+
:constant => 'co',
|
24
|
+
:content => 'k',
|
25
|
+
:decorator => 'de',
|
26
|
+
:definition => 'df',
|
27
|
+
:delimiter => 'dl',
|
28
|
+
:directive => 'di',
|
29
|
+
:doc => 'do',
|
30
|
+
:doctype => 'dt',
|
31
|
+
:doc_string => 'ds',
|
32
|
+
:entity => 'en',
|
33
|
+
:error => 'er',
|
34
|
+
:escape => 'e',
|
35
|
+
:exception => 'ex',
|
36
|
+
:filename => 'filename',
|
37
|
+
:float => 'fl',
|
38
|
+
:function => 'fu',
|
39
|
+
:global_variable => 'gv',
|
40
|
+
:hex => 'hx',
|
41
|
+
:imaginary => 'cm',
|
42
|
+
:important => 'im',
|
43
|
+
:include => 'ic',
|
44
|
+
:inline => 'il',
|
45
|
+
:inline_delimiter => 'idl',
|
46
|
+
:instance_variable => 'iv',
|
47
|
+
:integer => 'i',
|
48
|
+
:interpreted => 'in',
|
49
|
+
:key => 'ke',
|
50
|
+
:keyword => 'kw',
|
51
|
+
:label => 'la',
|
52
|
+
:local_variable => 'lv',
|
53
|
+
:modifier => 'mod',
|
54
|
+
:namespace => 'ns',
|
55
|
+
:oct => 'oc',
|
56
|
+
:predefined => 'pd',
|
57
|
+
:preprocessor => 'pp',
|
58
|
+
:pre_constant => 'pc', # FIXME: rename to :predefined_constant
|
59
|
+
:pre_type => 'pt', # FIXME: rename to :predefined_type
|
60
|
+
:pseudo_class => 'ps',
|
61
|
+
:regexp => 'rx',
|
62
|
+
:reserved => 'r',
|
63
|
+
:shell => 'sh',
|
64
|
+
:string => 's',
|
65
|
+
:symbol => 'sy',
|
66
|
+
:tag => 'ta',
|
67
|
+
:tag_special => 'ts',
|
68
|
+
:type => 'ty',
|
69
|
+
:value => 'vl',
|
70
|
+
:variable => 'v',
|
71
|
+
|
72
|
+
:insert => 'ins',
|
73
|
+
:delete => 'del',
|
74
|
+
:change => 'chg',
|
75
|
+
:head => 'head',
|
76
|
+
|
77
|
+
:eyecatcher => 'eye',
|
78
|
+
|
79
|
+
:ident => false, # 'id'
|
80
|
+
:operator => false, # 'op'
|
81
|
+
|
82
|
+
:space => false, # 'sp'
|
83
|
+
:plain => false,
|
84
|
+
}
|
85
|
+
|
86
|
+
TokenKinds[:method] = TokenKinds[:function]
|
87
|
+
TokenKinds[:escape] = TokenKinds[:delimiter]
|
88
|
+
TokenKinds[:docstring] = TokenKinds[:comment]
|
89
|
+
|
90
|
+
TokenKinds.freeze
|
89
91
|
end
|