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.

Files changed (139) hide show
  1. data.tar.gz.sig +0 -0
  2. data/.autotest +3 -1
  3. data/History.txt +68 -0
  4. data/LICENSE.txt +57 -0
  5. data/Manifest.txt +37 -19
  6. data/README.txt +2 -12
  7. data/Rakefile +12 -12
  8. data/bin/rdoc +4 -4
  9. data/lib/rdoc.rb +32 -9
  10. data/lib/rdoc/alias.rb +2 -2
  11. data/lib/rdoc/any_method.rb +108 -16
  12. data/lib/rdoc/attr.rb +87 -1
  13. data/lib/rdoc/class_module.rb +131 -5
  14. data/lib/rdoc/code_object.rb +28 -5
  15. data/lib/rdoc/constant.rb +22 -0
  16. data/lib/rdoc/context.rb +80 -37
  17. data/lib/rdoc/gauntlet.rb +48 -0
  18. data/lib/rdoc/generator/darkfish.rb +25 -23
  19. data/lib/rdoc/generator/markup.rb +6 -29
  20. data/lib/rdoc/generator/ri.rb +39 -189
  21. data/lib/rdoc/generator/template/darkfish/classpage.rhtml +17 -1
  22. data/lib/rdoc/generator/template/darkfish/filepage.rhtml +10 -0
  23. data/lib/rdoc/generator/template/darkfish/images/brick.png +0 -0
  24. data/lib/rdoc/generator/template/darkfish/images/brick_link.png +0 -0
  25. data/lib/rdoc/generator/template/darkfish/images/bullet_black.png +0 -0
  26. data/lib/rdoc/generator/template/darkfish/images/bullet_toggle_minus.png +0 -0
  27. data/lib/rdoc/generator/template/darkfish/images/bullet_toggle_plus.png +0 -0
  28. data/lib/rdoc/generator/template/darkfish/images/date.png +0 -0
  29. data/lib/rdoc/generator/template/darkfish/images/find.png +0 -0
  30. data/lib/rdoc/generator/template/darkfish/images/package.png +0 -0
  31. data/lib/rdoc/generator/template/darkfish/images/page_green.png +0 -0
  32. data/lib/rdoc/generator/template/darkfish/images/page_white_text.png +0 -0
  33. data/lib/rdoc/generator/template/darkfish/images/page_white_width.png +0 -0
  34. data/lib/rdoc/generator/template/darkfish/images/plugin.png +0 -0
  35. data/lib/rdoc/generator/template/darkfish/images/ruby.png +0 -0
  36. data/lib/rdoc/generator/template/darkfish/images/tag_green.png +0 -0
  37. data/lib/rdoc/generator/template/darkfish/images/wrench.png +0 -0
  38. data/lib/rdoc/generator/template/darkfish/images/wrench_orange.png +0 -0
  39. data/lib/rdoc/generator/template/darkfish/images/zoom.png +0 -0
  40. data/lib/rdoc/generator/template/darkfish/index.rhtml +2 -2
  41. data/lib/rdoc/generator/template/darkfish/rdoc.css +38 -33
  42. data/lib/rdoc/include.rb +22 -0
  43. data/lib/rdoc/markup.rb +10 -262
  44. data/lib/rdoc/markup/attribute_manager.rb +57 -50
  45. data/lib/rdoc/markup/blank_line.rb +19 -0
  46. data/lib/rdoc/markup/document.rb +72 -0
  47. data/lib/rdoc/markup/formatter.rb +118 -0
  48. data/lib/rdoc/markup/formatter_test_case.rb +341 -0
  49. data/lib/rdoc/markup/heading.rb +17 -0
  50. data/lib/rdoc/markup/inline.rb +6 -5
  51. data/lib/rdoc/markup/list.rb +78 -0
  52. data/lib/rdoc/markup/list_item.rb +83 -0
  53. data/lib/rdoc/markup/paragraph.rb +66 -0
  54. data/lib/rdoc/markup/parser.rb +528 -0
  55. data/lib/rdoc/markup/rule.rb +17 -0
  56. data/lib/rdoc/markup/to_ansi.rb +72 -0
  57. data/lib/rdoc/markup/to_bs.rb +74 -0
  58. data/lib/rdoc/markup/to_html.rb +106 -172
  59. data/lib/rdoc/markup/to_html_crossref.rb +10 -4
  60. data/lib/rdoc/markup/to_rdoc.rb +243 -0
  61. data/lib/rdoc/markup/to_test.rb +27 -16
  62. data/lib/rdoc/markup/verbatim.rb +42 -0
  63. data/lib/rdoc/normal_class.rb +38 -1
  64. data/lib/rdoc/normal_module.rb +38 -8
  65. data/lib/rdoc/options.rb +39 -151
  66. data/lib/rdoc/parser.rb +36 -18
  67. data/lib/rdoc/parser/c.rb +102 -109
  68. data/lib/rdoc/parser/ruby.rb +359 -1662
  69. data/lib/rdoc/parser/ruby_tools.rb +157 -0
  70. data/lib/rdoc/parser/simple.rb +0 -2
  71. data/lib/rdoc/rdoc.rb +142 -82
  72. data/lib/rdoc/ri.rb +10 -0
  73. data/lib/rdoc/ri/driver.rb +674 -444
  74. data/lib/rdoc/ri/formatter.rb +2 -651
  75. data/lib/rdoc/ri/paths.rb +70 -45
  76. data/lib/rdoc/ri/store.rb +248 -0
  77. data/lib/rdoc/ruby_lex.rb +1284 -0
  78. data/lib/rdoc/ruby_token.rb +416 -0
  79. data/lib/rdoc/single_class.rb +5 -0
  80. data/lib/rdoc/stats.rb +152 -83
  81. data/lib/rdoc/task.rb +27 -49
  82. data/lib/rdoc/text.rb +130 -0
  83. data/lib/rdoc/tokenstream.rb +28 -9
  84. data/lib/rdoc/top_level.rb +49 -43
  85. data/test/hidden.zip.txt +1 -0
  86. data/test/test_attribute_manager.rb +9 -16
  87. data/test/test_rdoc_any_method.rb +23 -0
  88. data/test/test_rdoc_attr.rb +40 -0
  89. data/test/test_rdoc_class_module.rb +100 -0
  90. data/test/test_rdoc_code_object.rb +18 -2
  91. data/test/test_rdoc_context.rb +41 -0
  92. data/test/test_rdoc_generator_ri.rb +56 -0
  93. data/test/test_rdoc_markup.rb +21 -610
  94. data/test/test_rdoc_markup_attribute_manager.rb +14 -17
  95. data/test/test_rdoc_markup_document.rb +51 -0
  96. data/test/test_rdoc_markup_paragraph.rb +27 -0
  97. data/test/test_rdoc_markup_parser.rb +1327 -0
  98. data/test/test_rdoc_markup_to_ansi.rb +426 -0
  99. data/test/test_rdoc_markup_to_bs.rb +443 -0
  100. data/test/test_rdoc_markup_to_html.rb +183 -18
  101. data/test/test_rdoc_markup_to_html_crossref.rb +1 -3
  102. data/test/test_rdoc_markup_to_rdoc.rb +426 -0
  103. data/test/test_rdoc_normal_class.rb +17 -0
  104. data/test/test_rdoc_normal_module.rb +6 -6
  105. data/test/test_rdoc_options.rb +41 -0
  106. data/test/test_rdoc_parser.rb +66 -13
  107. data/test/test_rdoc_parser_c.rb +93 -38
  108. data/test/test_rdoc_parser_perl.rb +2 -3
  109. data/test/test_rdoc_parser_ruby.rb +291 -28
  110. data/test/test_rdoc_parser_simple.rb +48 -0
  111. data/test/test_rdoc_rdoc.rb +66 -0
  112. data/test/test_rdoc_ri_driver.rb +752 -38
  113. data/test/test_rdoc_ri_paths.rb +39 -0
  114. data/test/test_rdoc_ri_store.rb +309 -0
  115. data/test/test_rdoc_text.rb +157 -0
  116. data/test/test_rdoc_top_level.rb +35 -9
  117. data/test/xref_data.rb +9 -1
  118. data/test/xref_test_case.rb +8 -3
  119. metadata +110 -38
  120. metadata.gz.sig +0 -0
  121. data/lib/rdoc/cache.rb +0 -41
  122. data/lib/rdoc/diagram.rb +0 -340
  123. data/lib/rdoc/dot.rb +0 -249
  124. data/lib/rdoc/markup/fragments.rb +0 -377
  125. data/lib/rdoc/markup/lines.rb +0 -156
  126. data/lib/rdoc/markup/to_flow.rb +0 -211
  127. data/lib/rdoc/markup/to_latex.rb +0 -328
  128. data/lib/rdoc/markup/to_texinfo.rb +0 -73
  129. data/lib/rdoc/ri/cache.rb +0 -187
  130. data/lib/rdoc/ri/descriptions.rb +0 -156
  131. data/lib/rdoc/ri/display.rb +0 -340
  132. data/lib/rdoc/ri/reader.rb +0 -106
  133. data/lib/rdoc/ri/util.rb +0 -79
  134. data/lib/rdoc/ri/writer.rb +0 -68
  135. data/test/test_rdoc_ri_attribute_formatter.rb +0 -44
  136. data/test/test_rdoc_ri_default_display.rb +0 -302
  137. data/test/test_rdoc_ri_formatter.rb +0 -320
  138. data/test/test_rdoc_ri_html_formatter.rb +0 -141
  139. 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 "##\n# my attr\n", foo.comment
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 "##\n# my attr\n", foo.comment
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 "##\n# my attr\n", bar.comment
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 "##\n# my attr\n", foo.comment
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 "##\n# my attr\n", bar.comment
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 "##\n# my method\n", foo.comment
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 "##\n# my method\n", foo.comment
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 "##\n# my method\n", foo.comment
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 "##\n# my method\n", foo.comment
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 comment, foo.comment
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 comment, foo.comment
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 comment, foo.comment
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 comment, foo.comment
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 comment, foo.comment
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, 1, 1, nil, ''),
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 comment, foo.comment
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, 1, 1, nil, "# File #{@top_level.absolute_name}, line 1"),
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 "##\n# my method\n", foo.comment
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 "##\n# my method\n", foo.comment
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 "##\n# my method\n", foo.comment
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 comment, foo.comment
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 comment, foo.comment
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 comment, foo.comment
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, 1, 1, nil, "# File #{@top_level.absolute_name}, line 1"),
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 comment, bar.comment
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 == 2 then
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