rdoc 2.4.3 → 2.5
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of rdoc might be problematic. Click here for more details.
- data.tar.gz.sig +0 -0
- data/.autotest +3 -1
- data/History.txt +68 -0
- data/LICENSE.txt +57 -0
- data/Manifest.txt +37 -19
- data/README.txt +2 -12
- data/Rakefile +12 -12
- data/bin/rdoc +4 -4
- data/lib/rdoc.rb +32 -9
- data/lib/rdoc/alias.rb +2 -2
- data/lib/rdoc/any_method.rb +108 -16
- data/lib/rdoc/attr.rb +87 -1
- data/lib/rdoc/class_module.rb +131 -5
- data/lib/rdoc/code_object.rb +28 -5
- data/lib/rdoc/constant.rb +22 -0
- data/lib/rdoc/context.rb +80 -37
- data/lib/rdoc/gauntlet.rb +48 -0
- data/lib/rdoc/generator/darkfish.rb +25 -23
- data/lib/rdoc/generator/markup.rb +6 -29
- data/lib/rdoc/generator/ri.rb +39 -189
- data/lib/rdoc/generator/template/darkfish/classpage.rhtml +17 -1
- data/lib/rdoc/generator/template/darkfish/filepage.rhtml +10 -0
- data/lib/rdoc/generator/template/darkfish/images/brick.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/brick_link.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/bullet_black.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/bullet_toggle_minus.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/bullet_toggle_plus.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/date.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/find.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/package.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/page_green.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/page_white_text.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/page_white_width.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/plugin.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/ruby.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/tag_green.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/wrench.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/wrench_orange.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/zoom.png +0 -0
- data/lib/rdoc/generator/template/darkfish/index.rhtml +2 -2
- data/lib/rdoc/generator/template/darkfish/rdoc.css +38 -33
- data/lib/rdoc/include.rb +22 -0
- data/lib/rdoc/markup.rb +10 -262
- data/lib/rdoc/markup/attribute_manager.rb +57 -50
- data/lib/rdoc/markup/blank_line.rb +19 -0
- data/lib/rdoc/markup/document.rb +72 -0
- data/lib/rdoc/markup/formatter.rb +118 -0
- data/lib/rdoc/markup/formatter_test_case.rb +341 -0
- data/lib/rdoc/markup/heading.rb +17 -0
- data/lib/rdoc/markup/inline.rb +6 -5
- data/lib/rdoc/markup/list.rb +78 -0
- data/lib/rdoc/markup/list_item.rb +83 -0
- data/lib/rdoc/markup/paragraph.rb +66 -0
- data/lib/rdoc/markup/parser.rb +528 -0
- data/lib/rdoc/markup/rule.rb +17 -0
- data/lib/rdoc/markup/to_ansi.rb +72 -0
- data/lib/rdoc/markup/to_bs.rb +74 -0
- data/lib/rdoc/markup/to_html.rb +106 -172
- data/lib/rdoc/markup/to_html_crossref.rb +10 -4
- data/lib/rdoc/markup/to_rdoc.rb +243 -0
- data/lib/rdoc/markup/to_test.rb +27 -16
- data/lib/rdoc/markup/verbatim.rb +42 -0
- data/lib/rdoc/normal_class.rb +38 -1
- data/lib/rdoc/normal_module.rb +38 -8
- data/lib/rdoc/options.rb +39 -151
- data/lib/rdoc/parser.rb +36 -18
- data/lib/rdoc/parser/c.rb +102 -109
- data/lib/rdoc/parser/ruby.rb +359 -1662
- data/lib/rdoc/parser/ruby_tools.rb +157 -0
- data/lib/rdoc/parser/simple.rb +0 -2
- data/lib/rdoc/rdoc.rb +142 -82
- data/lib/rdoc/ri.rb +10 -0
- data/lib/rdoc/ri/driver.rb +674 -444
- data/lib/rdoc/ri/formatter.rb +2 -651
- data/lib/rdoc/ri/paths.rb +70 -45
- data/lib/rdoc/ri/store.rb +248 -0
- data/lib/rdoc/ruby_lex.rb +1284 -0
- data/lib/rdoc/ruby_token.rb +416 -0
- data/lib/rdoc/single_class.rb +5 -0
- data/lib/rdoc/stats.rb +152 -83
- data/lib/rdoc/task.rb +27 -49
- data/lib/rdoc/text.rb +130 -0
- data/lib/rdoc/tokenstream.rb +28 -9
- data/lib/rdoc/top_level.rb +49 -43
- data/test/hidden.zip.txt +1 -0
- data/test/test_attribute_manager.rb +9 -16
- data/test/test_rdoc_any_method.rb +23 -0
- data/test/test_rdoc_attr.rb +40 -0
- data/test/test_rdoc_class_module.rb +100 -0
- data/test/test_rdoc_code_object.rb +18 -2
- data/test/test_rdoc_context.rb +41 -0
- data/test/test_rdoc_generator_ri.rb +56 -0
- data/test/test_rdoc_markup.rb +21 -610
- data/test/test_rdoc_markup_attribute_manager.rb +14 -17
- data/test/test_rdoc_markup_document.rb +51 -0
- data/test/test_rdoc_markup_paragraph.rb +27 -0
- data/test/test_rdoc_markup_parser.rb +1327 -0
- data/test/test_rdoc_markup_to_ansi.rb +426 -0
- data/test/test_rdoc_markup_to_bs.rb +443 -0
- data/test/test_rdoc_markup_to_html.rb +183 -18
- data/test/test_rdoc_markup_to_html_crossref.rb +1 -3
- data/test/test_rdoc_markup_to_rdoc.rb +426 -0
- data/test/test_rdoc_normal_class.rb +17 -0
- data/test/test_rdoc_normal_module.rb +6 -6
- data/test/test_rdoc_options.rb +41 -0
- data/test/test_rdoc_parser.rb +66 -13
- data/test/test_rdoc_parser_c.rb +93 -38
- data/test/test_rdoc_parser_perl.rb +2 -3
- data/test/test_rdoc_parser_ruby.rb +291 -28
- data/test/test_rdoc_parser_simple.rb +48 -0
- data/test/test_rdoc_rdoc.rb +66 -0
- data/test/test_rdoc_ri_driver.rb +752 -38
- data/test/test_rdoc_ri_paths.rb +39 -0
- data/test/test_rdoc_ri_store.rb +309 -0
- data/test/test_rdoc_text.rb +157 -0
- data/test/test_rdoc_top_level.rb +35 -9
- data/test/xref_data.rb +9 -1
- data/test/xref_test_case.rb +8 -3
- metadata +110 -38
- metadata.gz.sig +0 -0
- data/lib/rdoc/cache.rb +0 -41
- data/lib/rdoc/diagram.rb +0 -340
- data/lib/rdoc/dot.rb +0 -249
- data/lib/rdoc/markup/fragments.rb +0 -377
- data/lib/rdoc/markup/lines.rb +0 -156
- data/lib/rdoc/markup/to_flow.rb +0 -211
- data/lib/rdoc/markup/to_latex.rb +0 -328
- data/lib/rdoc/markup/to_texinfo.rb +0 -73
- data/lib/rdoc/ri/cache.rb +0 -187
- data/lib/rdoc/ri/descriptions.rb +0 -156
- data/lib/rdoc/ri/display.rb +0 -340
- data/lib/rdoc/ri/reader.rb +0 -106
- data/lib/rdoc/ri/util.rb +0 -79
- data/lib/rdoc/ri/writer.rb +0 -68
- data/test/test_rdoc_ri_attribute_formatter.rb +0 -44
- data/test/test_rdoc_ri_default_display.rb +0 -302
- data/test/test_rdoc_ri_formatter.rb +0 -320
- data/test/test_rdoc_ri_html_formatter.rb +0 -141
- data/test/test_rdoc_ri_overstrike_formatter.rb +0 -71
@@ -1,3 +1,5 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
1
3
|
require 'stringio'
|
2
4
|
require 'tempfile'
|
3
5
|
require 'rubygems'
|
@@ -158,6 +160,35 @@ class TestRDocParserRuby < MiniTest::Unit::TestCase
|
|
158
160
|
assert_equal 'hi', @options.title
|
159
161
|
end
|
160
162
|
|
163
|
+
def test_parse_alias
|
164
|
+
klass = RDoc::NormalClass.new 'Foo'
|
165
|
+
klass.parent = @top_level
|
166
|
+
|
167
|
+
util_parser "alias :next= :bar"
|
168
|
+
|
169
|
+
tk = @parser.get_tk
|
170
|
+
|
171
|
+
alas = @parser.parse_alias klass, RDoc::Parser::Ruby::NORMAL, tk, 'comment'
|
172
|
+
|
173
|
+
assert_equal 'bar', alas.old_name
|
174
|
+
assert_equal 'next=', alas.new_name
|
175
|
+
assert_equal klass, alas.parent
|
176
|
+
assert_equal 'comment', alas.comment
|
177
|
+
end
|
178
|
+
|
179
|
+
def test_parse_alias_meta
|
180
|
+
klass = RDoc::NormalClass.new 'Foo'
|
181
|
+
klass.parent = @top_level
|
182
|
+
|
183
|
+
util_parser "alias m.chop m"
|
184
|
+
|
185
|
+
tk = @parser.get_tk
|
186
|
+
|
187
|
+
alas = @parser.parse_alias klass, RDoc::Parser::Ruby::NORMAL, tk, 'comment'
|
188
|
+
|
189
|
+
assert_nil alas
|
190
|
+
end
|
191
|
+
|
161
192
|
def test_parse_attr
|
162
193
|
klass = RDoc::NormalClass.new 'Foo'
|
163
194
|
klass.parent = @top_level
|
@@ -174,7 +205,7 @@ class TestRDocParserRuby < MiniTest::Unit::TestCase
|
|
174
205
|
|
175
206
|
foo = klass.attributes.first
|
176
207
|
assert_equal 'foo', foo.name
|
177
|
-
assert_equal
|
208
|
+
assert_equal 'my attr', foo.comment
|
178
209
|
end
|
179
210
|
|
180
211
|
def test_parse_attr_accessor
|
@@ -194,12 +225,12 @@ class TestRDocParserRuby < MiniTest::Unit::TestCase
|
|
194
225
|
foo = klass.attributes.first
|
195
226
|
assert_equal 'foo', foo.name
|
196
227
|
assert_equal 'RW', foo.rw
|
197
|
-
assert_equal
|
228
|
+
assert_equal 'my attr', foo.comment
|
198
229
|
|
199
230
|
bar = klass.attributes.last
|
200
231
|
assert_equal 'bar', bar.name
|
201
232
|
assert_equal 'RW', bar.rw
|
202
|
-
assert_equal
|
233
|
+
assert_equal 'my attr', bar.comment
|
203
234
|
end
|
204
235
|
|
205
236
|
def test_parse_attr_accessor_writer
|
@@ -219,12 +250,12 @@ class TestRDocParserRuby < MiniTest::Unit::TestCase
|
|
219
250
|
foo = klass.attributes.first
|
220
251
|
assert_equal 'foo', foo.name
|
221
252
|
assert_equal 'W', foo.rw
|
222
|
-
assert_equal "
|
253
|
+
assert_equal "my attr", foo.comment
|
223
254
|
|
224
255
|
bar = klass.attributes.last
|
225
256
|
assert_equal 'bar', bar.name
|
226
257
|
assert_equal 'W', bar.rw
|
227
|
-
assert_equal "
|
258
|
+
assert_equal "my attr", bar.comment
|
228
259
|
end
|
229
260
|
|
230
261
|
def test_parse_meta_attr
|
@@ -239,10 +270,11 @@ class TestRDocParserRuby < MiniTest::Unit::TestCase
|
|
239
270
|
|
240
271
|
@parser.parse_meta_attr klass, RDoc::Parser::Ruby::NORMAL, tk, comment
|
241
272
|
|
273
|
+
assert_equal 2, klass.attributes.length
|
242
274
|
foo = klass.attributes.first
|
243
275
|
assert_equal 'foo', foo.name
|
244
276
|
assert_equal 'RW', foo.rw
|
245
|
-
assert_equal "
|
277
|
+
assert_equal "my method", foo.comment
|
246
278
|
end
|
247
279
|
|
248
280
|
def test_parse_meta_attr_accessor
|
@@ -257,10 +289,30 @@ class TestRDocParserRuby < MiniTest::Unit::TestCase
|
|
257
289
|
|
258
290
|
@parser.parse_meta_attr klass, RDoc::Parser::Ruby::NORMAL, tk, comment
|
259
291
|
|
292
|
+
assert_equal 2, klass.attributes.length
|
260
293
|
foo = klass.attributes.first
|
261
294
|
assert_equal 'foo', foo.name
|
262
295
|
assert_equal 'RW', foo.rw
|
263
|
-
assert_equal
|
296
|
+
assert_equal 'my method', foo.comment
|
297
|
+
end
|
298
|
+
|
299
|
+
def test_parse_meta_attr_named
|
300
|
+
klass = RDoc::NormalClass.new 'Foo'
|
301
|
+
klass.parent = @top_level
|
302
|
+
|
303
|
+
comment = "##\n# :attr: foo\n# my method\n"
|
304
|
+
|
305
|
+
util_parser "add_my_method :foo, :bar"
|
306
|
+
|
307
|
+
tk = @parser.get_tk
|
308
|
+
|
309
|
+
@parser.parse_meta_attr klass, RDoc::Parser::Ruby::NORMAL, tk, comment
|
310
|
+
|
311
|
+
assert_equal 1, klass.attributes.length
|
312
|
+
foo = klass.attributes.first
|
313
|
+
assert_equal 'foo', foo.name
|
314
|
+
assert_equal 'RW', foo.rw
|
315
|
+
assert_equal 'my method', foo.comment
|
264
316
|
end
|
265
317
|
|
266
318
|
def test_parse_meta_attr_reader
|
@@ -278,7 +330,7 @@ class TestRDocParserRuby < MiniTest::Unit::TestCase
|
|
278
330
|
foo = klass.attributes.first
|
279
331
|
assert_equal 'foo', foo.name
|
280
332
|
assert_equal 'R', foo.rw
|
281
|
-
assert_equal
|
333
|
+
assert_equal 'my method', foo.comment
|
282
334
|
end
|
283
335
|
|
284
336
|
def test_parse_meta_attr_writer
|
@@ -296,7 +348,7 @@ class TestRDocParserRuby < MiniTest::Unit::TestCase
|
|
296
348
|
foo = klass.attributes.first
|
297
349
|
assert_equal 'foo', foo.name
|
298
350
|
assert_equal 'W', foo.rw
|
299
|
-
assert_equal "
|
351
|
+
assert_equal "my method", foo.comment
|
300
352
|
end
|
301
353
|
|
302
354
|
def test_parse_class
|
@@ -310,7 +362,27 @@ class TestRDocParserRuby < MiniTest::Unit::TestCase
|
|
310
362
|
|
311
363
|
foo = @top_level.classes.first
|
312
364
|
assert_equal 'Foo', foo.full_name
|
313
|
-
assert_equal
|
365
|
+
assert_equal 'my method', foo.comment
|
366
|
+
end
|
367
|
+
|
368
|
+
def test_parse_class_ghost_method
|
369
|
+
util_parser <<-CLASS
|
370
|
+
class Foo
|
371
|
+
##
|
372
|
+
# :method: blah
|
373
|
+
# my method
|
374
|
+
end
|
375
|
+
CLASS
|
376
|
+
|
377
|
+
tk = @parser.get_tk
|
378
|
+
|
379
|
+
@parser.parse_class @top_level, RDoc::Parser::Ruby::NORMAL, tk, ''
|
380
|
+
|
381
|
+
foo = @top_level.classes.first
|
382
|
+
assert_equal 'Foo', foo.full_name
|
383
|
+
|
384
|
+
blah = foo.method_list.first
|
385
|
+
assert_equal 'Foo#blah', blah.full_name
|
314
386
|
end
|
315
387
|
|
316
388
|
def test_parse_class_nested_superclass
|
@@ -338,7 +410,38 @@ class TestRDocParserRuby < MiniTest::Unit::TestCase
|
|
338
410
|
|
339
411
|
foo = @top_level.modules.first
|
340
412
|
assert_equal 'Foo', foo.full_name
|
341
|
-
assert_equal
|
413
|
+
assert_equal 'my module', foo.comment
|
414
|
+
end
|
415
|
+
|
416
|
+
def test_parse_class_colon3
|
417
|
+
code = <<-CODE
|
418
|
+
class A
|
419
|
+
class ::B
|
420
|
+
end
|
421
|
+
end
|
422
|
+
CODE
|
423
|
+
|
424
|
+
util_parser code
|
425
|
+
|
426
|
+
@parser.parse_class @top_level, false, @parser.get_tk, ''
|
427
|
+
|
428
|
+
assert_equal %w[A B], RDoc::TopLevel.classes.map { |c| c.full_name }
|
429
|
+
end
|
430
|
+
|
431
|
+
def test_parse_class_single
|
432
|
+
code = <<-CODE
|
433
|
+
class A
|
434
|
+
class << B
|
435
|
+
end
|
436
|
+
end
|
437
|
+
CODE
|
438
|
+
|
439
|
+
util_parser code
|
440
|
+
|
441
|
+
@parser.parse_class @top_level, false, @parser.get_tk, ''
|
442
|
+
|
443
|
+
assert_equal %w[A], RDoc::TopLevel.classes.map { |c| c.full_name }
|
444
|
+
assert_equal %w[A::B], RDoc::TopLevel.modules.map { |c| c.full_name }
|
342
445
|
end
|
343
446
|
|
344
447
|
def test_parse_class_mistaken_for_module
|
@@ -422,7 +525,7 @@ EOF
|
|
422
525
|
|
423
526
|
foo = @top_level.modules.first
|
424
527
|
assert_equal 'Foo', foo.full_name
|
425
|
-
assert_equal
|
528
|
+
assert_equal 'Weirdly named module', foo.comment
|
426
529
|
|
427
530
|
helper = foo.classes.first
|
428
531
|
assert_equal 'Foo::Helper', helper.full_name
|
@@ -443,7 +546,7 @@ EOF
|
|
443
546
|
foo = klass.attributes.first
|
444
547
|
assert_equal 'foo', foo.name
|
445
548
|
assert_equal 'RW', foo.rw
|
446
|
-
assert_equal
|
549
|
+
assert_equal 'my attr', foo.comment
|
447
550
|
|
448
551
|
assert_equal nil, foo.viewer
|
449
552
|
assert_equal true, foo.document_children
|
@@ -470,7 +573,7 @@ EOF
|
|
470
573
|
|
471
574
|
foo = klass.method_list.first
|
472
575
|
assert_equal 'foo', foo.name
|
473
|
-
assert_equal
|
576
|
+
assert_equal 'my method', foo.comment
|
474
577
|
|
475
578
|
assert_equal [], foo.aliases
|
476
579
|
assert_equal nil, foo.block_params
|
@@ -492,12 +595,42 @@ EOF
|
|
492
595
|
stream = [
|
493
596
|
tk(:COMMENT, 1, 1, nil, "# File #{@top_level.absolute_name}, line 1"),
|
494
597
|
RDoc::Parser::Ruby::NEWLINE_TOKEN,
|
495
|
-
tk(:SPACE,
|
598
|
+
tk(:SPACE, 1, 1, nil, ''),
|
496
599
|
]
|
497
600
|
|
498
601
|
assert_equal stream, foo.token_stream
|
499
602
|
end
|
500
603
|
|
604
|
+
def test_parse_constant_alias
|
605
|
+
klass = RDoc::NormalClass.new 'Foo'
|
606
|
+
klass.parent = @top_level
|
607
|
+
cB = klass.add_class RDoc::NormalClass, 'B'
|
608
|
+
|
609
|
+
util_parser "A = B"
|
610
|
+
|
611
|
+
tk = @parser.get_tk
|
612
|
+
|
613
|
+
@parser.parse_constant klass, tk, ''
|
614
|
+
|
615
|
+
assert_equal cB, klass.find_module_named('A')
|
616
|
+
end
|
617
|
+
|
618
|
+
def test_parse_constant_alias_same_name
|
619
|
+
foo = @top_level.add_class RDoc::NormalClass, 'Foo'
|
620
|
+
top_bar = @top_level.add_class RDoc::NormalClass, 'Bar'
|
621
|
+
bar = foo.add_class RDoc::NormalClass, 'Bar'
|
622
|
+
|
623
|
+
assert RDoc::TopLevel.find_class_or_module('::Bar')
|
624
|
+
|
625
|
+
util_parser "A = ::Bar"
|
626
|
+
|
627
|
+
tk = @parser.get_tk
|
628
|
+
|
629
|
+
@parser.parse_constant foo, tk, ''
|
630
|
+
|
631
|
+
assert_equal top_bar, bar.find_module_named('A')
|
632
|
+
end
|
633
|
+
|
501
634
|
def test_parse_meta_method
|
502
635
|
klass = RDoc::NormalClass.new 'Foo'
|
503
636
|
klass.parent = @top_level
|
@@ -512,7 +645,7 @@ EOF
|
|
512
645
|
|
513
646
|
foo = klass.method_list.first
|
514
647
|
assert_equal 'foo', foo.name
|
515
|
-
assert_equal
|
648
|
+
assert_equal 'my method', foo.comment
|
516
649
|
|
517
650
|
assert_equal [], foo.aliases
|
518
651
|
assert_equal nil, foo.block_params
|
@@ -532,7 +665,7 @@ EOF
|
|
532
665
|
assert_equal klass.current_section, foo.section
|
533
666
|
|
534
667
|
stream = [
|
535
|
-
tk(:COMMENT,
|
668
|
+
tk(:COMMENT, 1, 1, nil, "# File #{@top_level.absolute_name}, line 1"),
|
536
669
|
RDoc::Parser::Ruby::NEWLINE_TOKEN,
|
537
670
|
tk(:SPACE, 1, 1, nil, ''),
|
538
671
|
tk(:IDENTIFIER, 1, 0, 'add_my_method', 'add_my_method'),
|
@@ -561,7 +694,7 @@ EOF
|
|
561
694
|
|
562
695
|
foo = klass.method_list.first
|
563
696
|
assert_equal 'woo_hoo!', foo.name
|
564
|
-
assert_equal
|
697
|
+
assert_equal 'my method', foo.comment
|
565
698
|
end
|
566
699
|
|
567
700
|
def test_parse_meta_method_singleton
|
@@ -579,7 +712,7 @@ EOF
|
|
579
712
|
foo = klass.method_list.first
|
580
713
|
assert_equal 'foo', foo.name
|
581
714
|
assert_equal true, foo.singleton, 'singleton method'
|
582
|
-
assert_equal
|
715
|
+
assert_equal 'my method', foo.comment
|
583
716
|
end
|
584
717
|
|
585
718
|
def test_parse_meta_method_singleton_name
|
@@ -597,7 +730,7 @@ EOF
|
|
597
730
|
foo = klass.method_list.first
|
598
731
|
assert_equal 'woo_hoo!', foo.name
|
599
732
|
assert_equal true, foo.singleton, 'singleton method'
|
600
|
-
assert_equal
|
733
|
+
assert_equal 'my method', foo.comment
|
601
734
|
end
|
602
735
|
|
603
736
|
def test_parse_meta_method_string_name
|
@@ -612,7 +745,7 @@ EOF
|
|
612
745
|
|
613
746
|
foo = klass.method_list.first
|
614
747
|
assert_equal 'foo', foo.name
|
615
|
-
assert_equal
|
748
|
+
assert_equal 'my method', foo.comment
|
616
749
|
end
|
617
750
|
|
618
751
|
def test_parse_meta_method_unknown
|
@@ -627,7 +760,7 @@ EOF
|
|
627
760
|
|
628
761
|
foo = klass.method_list.first
|
629
762
|
assert_equal 'unknown', foo.name
|
630
|
-
assert_equal
|
763
|
+
assert_equal 'my method', foo.comment
|
631
764
|
end
|
632
765
|
|
633
766
|
def test_parse_method
|
@@ -644,7 +777,7 @@ EOF
|
|
644
777
|
|
645
778
|
foo = klass.method_list.first
|
646
779
|
assert_equal 'foo', foo.name
|
647
|
-
assert_equal
|
780
|
+
assert_equal 'my method', foo.comment
|
648
781
|
|
649
782
|
assert_equal [], foo.aliases
|
650
783
|
assert_equal nil, foo.block_params
|
@@ -664,7 +797,7 @@ EOF
|
|
664
797
|
assert_equal klass.current_section, foo.section
|
665
798
|
|
666
799
|
stream = [
|
667
|
-
tk(:COMMENT,
|
800
|
+
tk(:COMMENT, 1, 1, nil, "# File #{@top_level.absolute_name}, line 1"),
|
668
801
|
RDoc::Parser::Ruby::NEWLINE_TOKEN,
|
669
802
|
tk(:SPACE, 1, 1, nil, ''),
|
670
803
|
tk(:DEF, 1, 0, 'def', 'def'),
|
@@ -682,6 +815,39 @@ EOF
|
|
682
815
|
assert_equal stream, foo.token_stream
|
683
816
|
end
|
684
817
|
|
818
|
+
def test_parse_method_alias
|
819
|
+
klass = RDoc::NormalClass.new 'Foo'
|
820
|
+
klass.parent = @top_level
|
821
|
+
|
822
|
+
util_parser "def m() alias a b; end"
|
823
|
+
|
824
|
+
tk = @parser.get_tk
|
825
|
+
|
826
|
+
@parser.parse_method klass, RDoc::Parser::Ruby::NORMAL, tk, ''
|
827
|
+
|
828
|
+
assert klass.aliases.empty?
|
829
|
+
end
|
830
|
+
|
831
|
+
def test_parse_method_utf8
|
832
|
+
klass = RDoc::NormalClass.new 'Foo'
|
833
|
+
klass.parent = @top_level
|
834
|
+
|
835
|
+
comment = "##\n# my method\n"
|
836
|
+
|
837
|
+
method = "def ω() end"
|
838
|
+
|
839
|
+
assert_equal Encoding::UTF_8, method.encoding if defined? ::Encoding
|
840
|
+
|
841
|
+
util_parser method
|
842
|
+
|
843
|
+
tk = @parser.get_tk
|
844
|
+
|
845
|
+
@parser.parse_method klass, RDoc::Parser::Ruby::NORMAL, tk, comment
|
846
|
+
|
847
|
+
omega = klass.method_list.first
|
848
|
+
assert_equal "def \317\211", omega.text
|
849
|
+
end
|
850
|
+
|
685
851
|
def test_parse_method_funky
|
686
852
|
klass = RDoc::NormalClass.new 'Foo'
|
687
853
|
klass.parent = @top_level
|
@@ -697,6 +863,32 @@ EOF
|
|
697
863
|
assert klass.method_list.empty?
|
698
864
|
end
|
699
865
|
|
866
|
+
def test_parse_method_internal_ivar
|
867
|
+
klass = RDoc::NormalClass.new 'Foo'
|
868
|
+
klass.parent = @top_level
|
869
|
+
|
870
|
+
util_parser "def foo() def @blah.bar() end end"
|
871
|
+
|
872
|
+
tk = @parser.get_tk
|
873
|
+
|
874
|
+
@parser.parse_method klass, RDoc::Parser::Ruby::NORMAL, tk, ''
|
875
|
+
|
876
|
+
assert_equal 1, klass.method_list.length
|
877
|
+
end
|
878
|
+
|
879
|
+
def test_parse_method_internal_lvar
|
880
|
+
klass = RDoc::NormalClass.new 'Foo'
|
881
|
+
klass.parent = @top_level
|
882
|
+
|
883
|
+
util_parser "def foo() def blah.bar() end end"
|
884
|
+
|
885
|
+
tk = @parser.get_tk
|
886
|
+
|
887
|
+
@parser.parse_method klass, RDoc::Parser::Ruby::NORMAL, tk, ''
|
888
|
+
|
889
|
+
assert_equal 1, klass.method_list.length
|
890
|
+
end
|
891
|
+
|
700
892
|
def test_parse_method_no_parens
|
701
893
|
klass = RDoc::NormalClass.new 'Foo'
|
702
894
|
klass.parent = @top_level
|
@@ -762,6 +954,21 @@ EOF
|
|
762
954
|
assert_equal 'Object#foo', foo.full_name
|
763
955
|
end
|
764
956
|
|
957
|
+
def test_parse_method_toplevel_class
|
958
|
+
klass = @top_level
|
959
|
+
|
960
|
+
util_parser "def Object.foo arg1, arg2\nend"
|
961
|
+
|
962
|
+
tk = @parser.get_tk
|
963
|
+
|
964
|
+
@parser.parse_method klass, RDoc::Parser::Ruby::NORMAL, tk, ''
|
965
|
+
|
966
|
+
object = RDoc::TopLevel.find_class_named 'Object'
|
967
|
+
|
968
|
+
foo = object.method_list.first
|
969
|
+
assert_equal 'Object::foo', foo.full_name
|
970
|
+
end
|
971
|
+
|
765
972
|
def test_parse_statements_class_if
|
766
973
|
comment = "##\n# my method\n"
|
767
974
|
|
@@ -798,7 +1005,7 @@ end
|
|
798
1005
|
|
799
1006
|
bar = foo.classes.first
|
800
1007
|
assert_equal 'Foo::Bar', bar.full_name, 'class Foo::Bar'
|
801
|
-
assert_equal
|
1008
|
+
assert_equal 'my method', bar.comment
|
802
1009
|
end
|
803
1010
|
|
804
1011
|
def test_parse_statements_identifier_meta_method
|
@@ -1003,14 +1210,70 @@ EOF
|
|
1003
1210
|
assert_equal 1, @top_level.requires.length
|
1004
1211
|
end
|
1005
1212
|
|
1213
|
+
def test_parse_top_level_statements_alias_method
|
1214
|
+
content = <<-CONTENT
|
1215
|
+
class A
|
1216
|
+
alias_method :a, :[] unless c
|
1217
|
+
end
|
1218
|
+
|
1219
|
+
B = A
|
1220
|
+
|
1221
|
+
class C
|
1222
|
+
end
|
1223
|
+
CONTENT
|
1224
|
+
|
1225
|
+
util_parser content
|
1226
|
+
|
1227
|
+
@parser.parse_statements @top_level
|
1228
|
+
end
|
1229
|
+
|
1230
|
+
def test_sanity_integer
|
1231
|
+
util_parser '1'
|
1232
|
+
assert_equal '1', @parser.get_tk.text
|
1233
|
+
|
1234
|
+
util_parser '1.0'
|
1235
|
+
assert_equal '1.0', @parser.get_tk.text
|
1236
|
+
end
|
1237
|
+
|
1238
|
+
def test_sanity_interpolation
|
1239
|
+
last_tk = nil
|
1240
|
+
util_parser 'class A; B = "#{c}"; end'
|
1241
|
+
|
1242
|
+
while tk = @parser.get_tk do last_tk = tk end
|
1243
|
+
|
1244
|
+
assert_equal "\n", last_tk.text
|
1245
|
+
end
|
1246
|
+
|
1247
|
+
# If you're writing code like this you're doing it wrong
|
1248
|
+
|
1249
|
+
def x_test_sanity_interpolation_crazy
|
1250
|
+
last_tk = nil
|
1251
|
+
util_parser '"#{"#{"a")}" if b}"'
|
1252
|
+
|
1253
|
+
assert_equal RDoc::RubyToken::TkDSTRING, tk.class
|
1254
|
+
assert_equal RDoc::RubyToken::TkNL, @parser.get_tk.class
|
1255
|
+
end
|
1256
|
+
|
1257
|
+
def test_sanity_interpolation_format
|
1258
|
+
util_parser '"#{stftime("%m-%d")}"'
|
1259
|
+
|
1260
|
+
while tk = @parser.get_tk do end
|
1261
|
+
end
|
1262
|
+
|
1263
|
+
def test_sanity_symbol_interpolation
|
1264
|
+
util_parser ':"#{bar}="'
|
1265
|
+
|
1266
|
+
while tk = @parser.get_tk do end
|
1267
|
+
end
|
1268
|
+
|
1006
1269
|
def tk(klass, line, char, name, text)
|
1007
1270
|
klass = RDoc::RubyToken.const_get "Tk#{klass.to_s.upcase}"
|
1008
1271
|
|
1009
|
-
token = if klass.instance_method(:initialize).arity ==
|
1272
|
+
token = if klass.instance_method(:initialize).arity == 3 then
|
1010
1273
|
raise ArgumentError, "name not used for #{klass}" unless name.nil?
|
1011
|
-
klass.new line, char
|
1274
|
+
klass.new nil, line, char
|
1012
1275
|
else
|
1013
|
-
klass.new line, char, name
|
1276
|
+
klass.new nil, line, char, name
|
1014
1277
|
end
|
1015
1278
|
|
1016
1279
|
token.set_text text
|