coderay 1.0.0.598.pre → 1.0.0.738.pre
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.
- 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
data/lib/coderay/tokens.rb
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
module CodeRay
|
2
|
-
|
2
|
+
|
3
|
+
# GZip library for writing and reading token dumps.
|
4
|
+
autoload :GZip, 'coderay/helpers/gzip'
|
5
|
+
|
3
6
|
# = Tokens TODO: Rewrite!
|
4
7
|
#
|
5
8
|
# The Tokens class represents a list of tokens returnd from
|
@@ -62,21 +65,21 @@ module CodeRay
|
|
62
65
|
# options are passed to the encoder.
|
63
66
|
def encode encoder, options = {}
|
64
67
|
unless encoder.is_a? Encoders::Encoder
|
65
|
-
|
68
|
+
if encoder.respond_to? :to_sym
|
66
69
|
encoder_class = Encoders[encoder]
|
67
70
|
end
|
68
71
|
encoder = encoder_class.new options
|
69
72
|
end
|
70
73
|
encoder.encode_tokens self, options
|
71
74
|
end
|
72
|
-
|
75
|
+
|
73
76
|
# Turn into a string using Encoders::Text.
|
74
77
|
#
|
75
78
|
# +options+ are passed to the encoder if given.
|
76
|
-
def to_s
|
77
|
-
encode
|
79
|
+
def to_s
|
80
|
+
encode CodeRay::Encoders::Encoder.new
|
78
81
|
end
|
79
|
-
|
82
|
+
|
80
83
|
# Redirects unknown methods to encoder calls.
|
81
84
|
#
|
82
85
|
# For example, if you call +tokens.html+, the HTML encoder
|
@@ -104,27 +107,27 @@ module CodeRay
|
|
104
107
|
# joined in one comment token by the Scanner.
|
105
108
|
def optimize
|
106
109
|
raise NotImplementedError, 'Tokens#optimize needs to be rewritten.'
|
107
|
-
last_kind = last_text = nil
|
108
|
-
new = self.class.new
|
109
|
-
for text, kind in self
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
end
|
124
|
-
new << [last_text, last_kind] if last_kind
|
125
|
-
new
|
110
|
+
# last_kind = last_text = nil
|
111
|
+
# new = self.class.new
|
112
|
+
# for text, kind in self
|
113
|
+
# if text.is_a? String
|
114
|
+
# if kind == last_kind
|
115
|
+
# last_text << text
|
116
|
+
# else
|
117
|
+
# new << [last_text, last_kind] if last_kind
|
118
|
+
# last_text = text
|
119
|
+
# last_kind = kind
|
120
|
+
# end
|
121
|
+
# else
|
122
|
+
# new << [last_text, last_kind] if last_kind
|
123
|
+
# last_kind = last_text = nil
|
124
|
+
# new << [text, kind]
|
125
|
+
# end
|
126
|
+
# end
|
127
|
+
# new << [last_text, last_kind] if last_kind
|
128
|
+
# new
|
126
129
|
end
|
127
|
-
|
130
|
+
|
128
131
|
# Compact the object itself; see optimize.
|
129
132
|
def optimize!
|
130
133
|
replace optimize
|
@@ -135,30 +138,30 @@ module CodeRay
|
|
135
138
|
# TODO: Test this!
|
136
139
|
def fix
|
137
140
|
raise NotImplementedError, 'Tokens#fix needs to be rewritten.'
|
138
|
-
tokens = self.class.new
|
139
|
-
# Check token nesting using a stack of kinds.
|
140
|
-
opened = []
|
141
|
-
for type, kind in self
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
end
|
159
|
-
# Close remaining opened tokens
|
160
|
-
tokens << token while token = opened.pop
|
161
|
-
tokens
|
141
|
+
# tokens = self.class.new
|
142
|
+
# # Check token nesting using a stack of kinds.
|
143
|
+
# opened = []
|
144
|
+
# for type, kind in self
|
145
|
+
# case type
|
146
|
+
# when :begin_group
|
147
|
+
# opened.push [:begin_group, kind]
|
148
|
+
# when :begin_line
|
149
|
+
# opened.push [:end_line, kind]
|
150
|
+
# when :end_group, :end_line
|
151
|
+
# expected = opened.pop
|
152
|
+
# if [type, kind] != expected
|
153
|
+
# # Unexpected end; decide what to do based on the kind:
|
154
|
+
# # - token was never opened: delete the end (just skip it)
|
155
|
+
# next unless opened.rindex expected
|
156
|
+
# # - token was opened earlier: also close tokens in between
|
157
|
+
# tokens << token until (token = opened.pop) == expected
|
158
|
+
# end
|
159
|
+
# end
|
160
|
+
# tokens << [type, kind]
|
161
|
+
# end
|
162
|
+
# # Close remaining opened tokens
|
163
|
+
# tokens << token while token = opened.pop
|
164
|
+
# tokens
|
162
165
|
end
|
163
166
|
|
164
167
|
def fix!
|
@@ -177,7 +180,7 @@ module CodeRay
|
|
177
180
|
def split_into_lines
|
178
181
|
raise NotImplementedError
|
179
182
|
end
|
180
|
-
|
183
|
+
|
181
184
|
def split_into_lines!
|
182
185
|
replace split_into_lines
|
183
186
|
end
|
@@ -239,19 +242,19 @@ module CodeRay
|
|
239
242
|
when :end_group, :end_line
|
240
243
|
opened.pop
|
241
244
|
else
|
242
|
-
raise 'Unknown token action: %p, kind = %p' % [content, item]
|
245
|
+
raise ArgumentError, 'Unknown token action: %p, kind = %p' % [content, item]
|
243
246
|
end
|
244
247
|
part << content << item
|
245
248
|
content = nil
|
246
249
|
else
|
247
|
-
raise '
|
250
|
+
raise ArgumentError, 'Token input junk: %p, kind = %p' % [content, item]
|
248
251
|
end
|
249
252
|
end
|
250
253
|
parts << part
|
251
254
|
parts << Tokens.new while parts.size < sizes.size
|
252
255
|
parts
|
253
256
|
end
|
254
|
-
|
257
|
+
|
255
258
|
# Dumps the object into a String that can be saved
|
256
259
|
# in files or databases.
|
257
260
|
#
|
@@ -268,9 +271,8 @@ module CodeRay
|
|
268
271
|
#
|
269
272
|
# See GZip module.
|
270
273
|
def dump gzip_level = 7
|
271
|
-
require 'coderay/helpers/gzip_simple'
|
272
274
|
dump = Marshal.dump self
|
273
|
-
dump =
|
275
|
+
dump = GZip.gzip dump, gzip_level
|
274
276
|
dump.extend Undumping
|
275
277
|
end
|
276
278
|
|
@@ -278,7 +280,7 @@ module CodeRay
|
|
278
280
|
def count
|
279
281
|
size / 2
|
280
282
|
end
|
281
|
-
|
283
|
+
|
282
284
|
# Include this module to give an object an #undump
|
283
285
|
# method.
|
284
286
|
#
|
@@ -289,70 +291,44 @@ module CodeRay
|
|
289
291
|
Tokens.load self
|
290
292
|
end
|
291
293
|
end
|
292
|
-
|
294
|
+
|
293
295
|
# Undump the object using Marshal.load, then
|
294
296
|
# unzip it using GZip.gunzip.
|
295
297
|
#
|
296
298
|
# The result is commonly a Tokens object, but
|
297
299
|
# this is not guaranteed.
|
298
300
|
def Tokens.load dump
|
299
|
-
|
300
|
-
dump = dump.gunzip
|
301
|
+
dump = GZip.gunzip dump
|
301
302
|
@dump = Marshal.load dump
|
302
303
|
end
|
303
|
-
|
304
|
-
alias text_token push
|
305
|
-
def begin_group kind; push :begin_group, kind end
|
306
|
-
def end_group kind; push :end_group, kind end
|
307
|
-
def begin_line kind; push :begin_line, kind end
|
308
|
-
def end_line kind; push :end_line, kind end
|
309
|
-
alias tokens concat
|
310
304
|
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
def test_adding_tokens
|
336
|
-
tokens = CodeRay::Tokens.new
|
337
|
-
assert_nothing_raised do
|
338
|
-
tokens.text_token 'string', :type
|
339
|
-
tokens.text_token '()', :operator
|
340
|
-
end
|
341
|
-
assert_equal tokens.size, 4
|
342
|
-
assert_equal tokens.count, 2
|
343
|
-
end
|
344
|
-
|
345
|
-
def test_dump_undump
|
346
|
-
tokens = CodeRay::Tokens.new
|
347
|
-
assert_nothing_raised do
|
348
|
-
tokens.text_token 'string', :type
|
349
|
-
tokens.text_token '()', :operator
|
350
|
-
end
|
351
|
-
tokens2 = nil
|
352
|
-
assert_nothing_raised do
|
353
|
-
tokens2 = tokens.dump.undump
|
305
|
+
if defined?(RUBY_ENGINE) && RUBY_ENGINE['rbx']
|
306
|
+
#:nocov:
|
307
|
+
def text_token text, kind
|
308
|
+
self << text << kind
|
309
|
+
end
|
310
|
+
def begin_group kind
|
311
|
+
self << :begin_group << kind
|
312
|
+
end
|
313
|
+
def end_group kind
|
314
|
+
self << :end_group << kind
|
315
|
+
end
|
316
|
+
def begin_line kind
|
317
|
+
self << :begin_line << kind
|
318
|
+
end
|
319
|
+
def end_line kind
|
320
|
+
self << :end_line << kind
|
321
|
+
end
|
322
|
+
#:nocov:
|
323
|
+
else
|
324
|
+
alias text_token push
|
325
|
+
def begin_group kind; push :begin_group, kind end
|
326
|
+
def end_group kind; push :end_group, kind end
|
327
|
+
def begin_line kind; push :begin_line, kind end
|
328
|
+
def end_line kind; push :end_line, kind end
|
354
329
|
end
|
355
|
-
|
330
|
+
alias tokens concat
|
331
|
+
|
356
332
|
end
|
357
333
|
|
358
|
-
end
|
334
|
+
end
|
data/test/functional/basic.rb
CHANGED
@@ -1,8 +1,21 @@
|
|
1
|
+
# encoding: utf-8
|
1
2
|
require 'test/unit'
|
2
3
|
require 'coderay'
|
3
4
|
|
4
5
|
class BasicTest < Test::Unit::TestCase
|
5
6
|
|
7
|
+
def assert_warning expected_warning
|
8
|
+
require 'stringio'
|
9
|
+
oldstderr = $stderr
|
10
|
+
$stderr = StringIO.new
|
11
|
+
yield
|
12
|
+
$stderr.rewind
|
13
|
+
given_warning = $stderr.read.chomp
|
14
|
+
assert_equal expected_warning, given_warning
|
15
|
+
ensure
|
16
|
+
$stderr = oldstderr
|
17
|
+
end
|
18
|
+
|
6
19
|
def test_version
|
7
20
|
assert_nothing_raised do
|
8
21
|
assert_match(/\A\d\.\d\.\d\z/, CodeRay::VERSION)
|
@@ -34,16 +47,40 @@ class BasicTest < Test::Unit::TestCase
|
|
34
47
|
end
|
35
48
|
end
|
36
49
|
|
50
|
+
def test_scan_file
|
51
|
+
CodeRay.scan_file __FILE__
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_encode
|
55
|
+
assert_equal 1, CodeRay.encode('test', :python, :count)
|
56
|
+
end
|
57
|
+
|
58
|
+
def test_encode_tokens
|
59
|
+
assert_equal 1, CodeRay.encode_tokens(CodeRay::Tokens['test', :string], :count)
|
60
|
+
end
|
61
|
+
|
62
|
+
def test_encode_file
|
63
|
+
assert_equal File.read(__FILE__), CodeRay.encode_file(__FILE__, :text)
|
64
|
+
end
|
65
|
+
|
66
|
+
def test_highlight
|
67
|
+
assert_match '<div class="code"><pre>test</pre></div>', CodeRay.highlight('test', :python)
|
68
|
+
end
|
69
|
+
|
70
|
+
def test_highlight_file
|
71
|
+
assert_match "require <span class=\"s\"><span class=\"dl\">'</span><span class=\"k\">test/unit</span><span class=\"dl\">'</span></span>\n", CodeRay.highlight_file(__FILE__)
|
72
|
+
end
|
73
|
+
|
37
74
|
def test_duo
|
38
75
|
assert_equal(RUBY_TEST_CODE,
|
39
|
-
CodeRay::Duo[:plain, :
|
76
|
+
CodeRay::Duo[:plain, :text].highlight(RUBY_TEST_CODE))
|
40
77
|
assert_equal(RUBY_TEST_CODE,
|
41
|
-
CodeRay::Duo[:plain => :
|
78
|
+
CodeRay::Duo[:plain => :text].highlight(RUBY_TEST_CODE))
|
42
79
|
end
|
43
80
|
|
44
81
|
def test_duo_stream
|
45
82
|
assert_equal(RUBY_TEST_CODE,
|
46
|
-
CodeRay::Duo[:plain, :
|
83
|
+
CodeRay::Duo[:plain, :text].highlight(RUBY_TEST_CODE, :stream => true))
|
47
84
|
end
|
48
85
|
|
49
86
|
def test_comment_filter
|
@@ -107,12 +144,154 @@ more code # and another comment, in-line.
|
|
107
144
|
|
108
145
|
def test_list_of_encoders
|
109
146
|
assert_kind_of(Array, CodeRay::Encoders.list)
|
110
|
-
assert CodeRay::Encoders.list.include?(
|
147
|
+
assert CodeRay::Encoders.list.include?(:count)
|
111
148
|
end
|
112
149
|
|
113
150
|
def test_list_of_scanners
|
114
151
|
assert_kind_of(Array, CodeRay::Scanners.list)
|
115
|
-
assert CodeRay::Scanners.list.include?(
|
152
|
+
assert CodeRay::Scanners.list.include?(:plaintext)
|
153
|
+
end
|
154
|
+
|
155
|
+
def test_token_kinds
|
156
|
+
assert_kind_of Hash, CodeRay::TokenKinds
|
157
|
+
for kind, css_class in CodeRay::TokenKinds
|
158
|
+
assert_kind_of Symbol, kind
|
159
|
+
if css_class != false
|
160
|
+
assert_kind_of String, css_class, "TokenKinds[%p] == %p" % [kind, css_class]
|
161
|
+
end
|
162
|
+
end
|
163
|
+
assert_equal 'r', CodeRay::TokenKinds[:reserved]
|
164
|
+
assert_equal false, CodeRay::TokenKinds[:shibboleet]
|
165
|
+
end
|
166
|
+
|
167
|
+
class Milk < CodeRay::Encoders::Encoder
|
168
|
+
FILE_EXTENSION = 'cocoa'
|
169
|
+
end
|
170
|
+
|
171
|
+
class HoneyBee < CodeRay::Encoders::Encoder
|
172
|
+
end
|
173
|
+
|
174
|
+
def test_encoder_file_extension
|
175
|
+
assert_nothing_raised do
|
176
|
+
assert_equal 'html', CodeRay::Encoders::HTML::FILE_EXTENSION
|
177
|
+
assert_equal 'cocoa', Milk::FILE_EXTENSION
|
178
|
+
assert_equal 'cocoa', Milk.new.file_extension
|
179
|
+
assert_equal 'honeybee', HoneyBee::FILE_EXTENSION
|
180
|
+
assert_equal 'honeybee', HoneyBee.new.file_extension
|
181
|
+
end
|
182
|
+
assert_raise NameError do
|
183
|
+
HoneyBee::MISSING_CONSTANT
|
184
|
+
end
|
185
|
+
end
|
186
|
+
|
187
|
+
def test_encoder_tokens
|
188
|
+
encoder = CodeRay::Encoders::Encoder.new
|
189
|
+
encoder.send :setup, {}
|
190
|
+
assert_raise(ArgumentError) { encoder.token :strange, '' }
|
191
|
+
encoder.token 'test', :debug
|
192
|
+
end
|
193
|
+
|
194
|
+
def test_encoder_deprecated_interface
|
195
|
+
encoder = CodeRay::Encoders::Encoder.new
|
196
|
+
encoder.send :setup, {}
|
197
|
+
assert_warning 'Using old Tokens#<< interface.' do
|
198
|
+
encoder << ['test', :content]
|
199
|
+
end
|
200
|
+
assert_raise ArgumentError do
|
201
|
+
encoder << [:strange, :input]
|
202
|
+
end
|
203
|
+
assert_raise ArgumentError do
|
204
|
+
encoder.encode_tokens [['test', :token]]
|
205
|
+
end
|
206
|
+
end
|
207
|
+
|
208
|
+
def encoder_token_interface_deprecation_warning_given
|
209
|
+
CodeRay::Encoders::Encoder.send :class_variable_get, :@@CODERAY_TOKEN_INTERFACE_DEPRECATION_WARNING_GIVEN
|
210
|
+
end
|
211
|
+
|
212
|
+
def test_scanner_file_extension
|
213
|
+
assert_equal 'rb', CodeRay::Scanners::Ruby.file_extension
|
214
|
+
assert_equal 'rb', CodeRay::Scanners::Ruby.new.file_extension
|
215
|
+
assert_equal 'java', CodeRay::Scanners::Java.file_extension
|
216
|
+
assert_equal 'java', CodeRay::Scanners::Java.new.file_extension
|
217
|
+
end
|
218
|
+
|
219
|
+
def test_scanner_lang
|
220
|
+
assert_equal :ruby, CodeRay::Scanners::Ruby.lang
|
221
|
+
assert_equal :ruby, CodeRay::Scanners::Ruby.new.lang
|
222
|
+
assert_equal :java, CodeRay::Scanners::Java.lang
|
223
|
+
assert_equal :java, CodeRay::Scanners::Java.new.lang
|
224
|
+
end
|
225
|
+
|
226
|
+
def test_scanner_tokenize
|
227
|
+
assert_equal ['foo', :plain], CodeRay::Scanners::Plain.new.tokenize('foo')
|
228
|
+
assert_equal [['foo', :plain], ['bar', :plain]], CodeRay::Scanners::Plain.new.tokenize(['foo', 'bar'])
|
229
|
+
assert_raise ArgumentError do
|
230
|
+
CodeRay::Scanners::Plain.new.tokenize 42
|
231
|
+
end
|
232
|
+
end
|
233
|
+
|
234
|
+
def test_scanner_tokens
|
235
|
+
scanner = CodeRay::Scanners::Plain.new
|
236
|
+
scanner.tokenize('foo')
|
237
|
+
assert_equal ['foo', :plain], scanner.tokens
|
238
|
+
scanner.string = ''
|
239
|
+
assert_equal ['', :plain], scanner.tokens
|
240
|
+
end
|
241
|
+
|
242
|
+
def test_scanner_line_and_column
|
243
|
+
scanner = CodeRay::Scanners::Plain.new "foo\nbär+quux"
|
244
|
+
assert_equal 0, scanner.pos
|
245
|
+
assert_equal 1, scanner.line
|
246
|
+
assert_equal 0, scanner.column
|
247
|
+
scanner.scan(/foo\nbär/)
|
248
|
+
assert_equal 8, scanner.pos
|
249
|
+
assert_equal 2, scanner.line
|
250
|
+
assert_equal 5, scanner.column
|
251
|
+
end
|
252
|
+
|
253
|
+
def test_scanner_use_subclasses
|
254
|
+
assert_raise NotImplementedError do
|
255
|
+
CodeRay::Scanners::Scanner.new
|
256
|
+
end
|
257
|
+
end
|
258
|
+
|
259
|
+
class InvalidScanner < CodeRay::Scanners::Scanner
|
260
|
+
end
|
261
|
+
|
262
|
+
def test_scanner_scan_tokens
|
263
|
+
assert_raise NotImplementedError do
|
264
|
+
InvalidScanner.new.tokenize ''
|
265
|
+
end
|
266
|
+
end
|
267
|
+
|
268
|
+
class RaisingScanner < CodeRay::Scanners::Scanner
|
269
|
+
def scan_tokens encoder, options
|
270
|
+
raise_inspect 'message', [], :initial
|
271
|
+
end
|
272
|
+
end
|
273
|
+
|
274
|
+
def test_scanner_raise_inspect
|
275
|
+
assert_raise CodeRay::Scanners::Scanner::ScanError do
|
276
|
+
RaisingScanner.new.tokenize ''
|
277
|
+
end
|
278
|
+
end
|
279
|
+
|
280
|
+
def test_scan_a_frozen_string
|
281
|
+
assert_nothing_raised do
|
282
|
+
CodeRay.scan RUBY_VERSION, :ruby
|
283
|
+
CodeRay.scan RUBY_VERSION, :plain
|
284
|
+
end
|
285
|
+
end
|
286
|
+
|
287
|
+
def test_scan_a_non_string
|
288
|
+
assert_nothing_raised do
|
289
|
+
CodeRay.scan 42, :ruby
|
290
|
+
CodeRay.scan nil, :ruby
|
291
|
+
CodeRay.scan self, :ruby
|
292
|
+
CodeRay.encode ENV.to_hash, :ruby, :page
|
293
|
+
CodeRay.highlight CodeRay, :plain
|
294
|
+
end
|
116
295
|
end
|
117
296
|
|
118
297
|
end
|