rdoc 6.1.0 → 6.3.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.
Potentially problematic release.
This version of rdoc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Gemfile +9 -0
- data/README.rdoc +0 -1
- data/Rakefile +12 -4
- data/lib/rdoc.rb +21 -0
- data/lib/rdoc/any_method.rb +52 -7
- data/lib/rdoc/class_module.rb +1 -1
- data/lib/rdoc/comment.rb +12 -1
- data/lib/rdoc/context.rb +10 -2
- data/lib/rdoc/context/section.rb +0 -13
- data/lib/rdoc/cross_reference.rb +4 -4
- data/lib/rdoc/erb_partial.rb +1 -1
- data/lib/rdoc/erbio.rb +2 -2
- data/lib/rdoc/generator/darkfish.rb +9 -9
- data/lib/rdoc/generator/pot.rb +3 -3
- data/lib/rdoc/generator/template/darkfish/_head.rhtml +9 -7
- data/lib/rdoc/generator/template/darkfish/_sidebar_VCS_info.rhtml +2 -2
- data/lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml +2 -2
- data/lib/rdoc/generator/template/darkfish/_sidebar_extends.rhtml +7 -7
- data/lib/rdoc/generator/template/darkfish/_sidebar_in_files.rhtml +2 -2
- data/lib/rdoc/generator/template/darkfish/_sidebar_includes.rhtml +7 -7
- data/lib/rdoc/generator/template/darkfish/_sidebar_installed.rhtml +6 -6
- data/lib/rdoc/generator/template/darkfish/_sidebar_methods.rhtml +5 -5
- data/lib/rdoc/generator/template/darkfish/_sidebar_pages.rhtml +5 -5
- data/lib/rdoc/generator/template/darkfish/_sidebar_parent.rhtml +5 -5
- data/lib/rdoc/generator/template/darkfish/_sidebar_sections.rhtml +4 -4
- data/lib/rdoc/generator/template/darkfish/_sidebar_table_of_contents.rhtml +4 -4
- data/lib/rdoc/generator/template/darkfish/class.rhtml +44 -44
- data/lib/rdoc/generator/template/darkfish/css/rdoc.css +35 -6
- data/lib/rdoc/generator/template/darkfish/index.rhtml +3 -4
- data/lib/rdoc/generator/template/darkfish/js/darkfish.js +22 -99
- data/lib/rdoc/generator/template/darkfish/js/search.js +32 -31
- data/lib/rdoc/generator/template/darkfish/servlet_root.rhtml +15 -16
- data/lib/rdoc/generator/template/darkfish/table_of_contents.rhtml +16 -16
- data/lib/rdoc/generator/template/json_index/js/navigation.js +4 -40
- data/lib/rdoc/generator/template/json_index/js/searcher.js +6 -6
- data/lib/rdoc/i18n.rb +1 -1
- data/lib/rdoc/markdown.kpeg +1 -1
- data/lib/rdoc/markdown.rb +16287 -0
- data/lib/rdoc/markdown/literals.rb +417 -0
- data/lib/rdoc/markup.rb +0 -2
- data/lib/rdoc/markup/formatter.rb +1 -1
- data/lib/rdoc/markup/parser.rb +58 -42
- data/lib/rdoc/markup/pre_process.rb +1 -1
- data/lib/rdoc/markup/regexp_handling.rb +41 -0
- data/lib/rdoc/markup/to_html.rb +19 -6
- data/lib/rdoc/markup/to_html_crossref.rb +18 -6
- data/lib/rdoc/options.rb +23 -5
- data/lib/rdoc/parser.rb +7 -7
- data/lib/rdoc/parser/c.rb +139 -183
- data/lib/rdoc/parser/ripper_state_lex.rb +2 -1
- data/lib/rdoc/parser/ruby.rb +18 -8
- data/lib/rdoc/rd/block_parser.rb +1056 -0
- data/lib/rdoc/rd/inline_parser.rb +1208 -0
- data/lib/rdoc/rdoc.rb +26 -20
- data/lib/rdoc/ri/driver.rb +9 -5
- data/lib/rdoc/ri/paths.rb +3 -17
- data/lib/rdoc/ri/task.rb +1 -1
- data/lib/rdoc/rubygems_hook.rb +2 -2
- data/lib/rdoc/servlet.rb +16 -8
- data/lib/rdoc/store.rb +6 -14
- data/lib/rdoc/task.rb +1 -1
- data/lib/rdoc/text.rb +8 -2
- data/lib/rdoc/token_stream.rb +8 -3
- data/lib/rdoc/tom_doc.rb +6 -7
- data/lib/rdoc/version.rb +1 -1
- data/man/ri.1 +247 -0
- data/rdoc.gemspec +194 -10
- metadata +10 -86
- data/.document +0 -5
- data/.gitignore +0 -14
- data/.travis.yml +0 -21
- data/appveyor.yml +0 -36
- data/lib/rdoc/generator/template/darkfish/js/jquery.js +0 -4
- data/lib/rdoc/markup/formatter_test_case.rb +0 -764
- data/lib/rdoc/markup/text_formatter_test_case.rb +0 -115
| @@ -178,7 +178,7 @@ class RDoc::Markup::PreProcess | |
| 178 178 |  | 
| 179 179 | 
             
                  blankline
         | 
| 180 180 | 
             
                when 'include' then
         | 
| 181 | 
            -
                  filename = param.split.first
         | 
| 181 | 
            +
                  filename = param.split(' ', 2).first
         | 
| 182 182 | 
             
                  include_file filename, prefix, encoding
         | 
| 183 183 | 
             
                when 'main' then
         | 
| 184 184 | 
             
                  @options.main_page = param if @options.respond_to? :main_page
         | 
| @@ -0,0 +1,41 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
            ##
         | 
| 3 | 
            +
            # Hold details of a regexp handling sequence
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            class RDoc::Markup::RegexpHandling
         | 
| 6 | 
            +
             | 
| 7 | 
            +
              ##
         | 
| 8 | 
            +
              # Regexp handling type
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              attr_reader   :type
         | 
| 11 | 
            +
             | 
| 12 | 
            +
              ##
         | 
| 13 | 
            +
              # Regexp handling text
         | 
| 14 | 
            +
             | 
| 15 | 
            +
              attr_accessor :text
         | 
| 16 | 
            +
             | 
| 17 | 
            +
              ##
         | 
| 18 | 
            +
              # Creates a new regexp handling sequence of +type+ with +text+
         | 
| 19 | 
            +
             | 
| 20 | 
            +
              def initialize(type, text)
         | 
| 21 | 
            +
                @type, @text = type, text
         | 
| 22 | 
            +
              end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
              ##
         | 
| 25 | 
            +
              # Regexp handlings are equal when the have the same text and type
         | 
| 26 | 
            +
             | 
| 27 | 
            +
              def ==(o)
         | 
| 28 | 
            +
                self.text == o.text && self.type == o.type
         | 
| 29 | 
            +
              end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
              def inspect # :nodoc:
         | 
| 32 | 
            +
                "#<RDoc::Markup::RegexpHandling:0x%x @type=%p, @text=%p>" % [
         | 
| 33 | 
            +
                  object_id, @type, text.dump]
         | 
| 34 | 
            +
              end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
              def to_s # :nodoc:
         | 
| 37 | 
            +
                "RegexpHandling: type=#{type} text=#{text.dump}"
         | 
| 38 | 
            +
              end
         | 
| 39 | 
            +
             | 
| 40 | 
            +
            end
         | 
| 41 | 
            +
             | 
    
        data/lib/rdoc/markup/to_html.rb
    CHANGED
    
    | @@ -52,12 +52,7 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter | |
| 52 52 | 
             
                @th = nil
         | 
| 53 53 | 
             
                @hard_break = "<br>\n"
         | 
| 54 54 |  | 
| 55 | 
            -
                 | 
| 56 | 
            -
                @markup.add_regexp_handling(/(?:link:|https?:|mailto:|ftp:|irc:|www\.)\S+\w/,
         | 
| 57 | 
            -
                                            :HYPERLINK)
         | 
| 58 | 
            -
             | 
| 59 | 
            -
                add_regexp_handling_RDOCLINK
         | 
| 60 | 
            -
                add_regexp_handling_TIDYLINK
         | 
| 55 | 
            +
                init_regexp_handlings
         | 
| 61 56 |  | 
| 62 57 | 
             
                init_tags
         | 
| 63 58 | 
             
              end
         | 
| @@ -66,6 +61,24 @@ class RDoc::Markup::ToHtml < RDoc::Markup::Formatter | |
| 66 61 | 
             
              #
         | 
| 67 62 | 
             
              # These methods are used by regexp handling markup added by RDoc::Markup#add_regexp_handling.
         | 
| 68 63 |  | 
| 64 | 
            +
              ##
         | 
| 65 | 
            +
              # Adds regexp handlings.
         | 
| 66 | 
            +
             | 
| 67 | 
            +
              def init_regexp_handlings
         | 
| 68 | 
            +
                # external links
         | 
| 69 | 
            +
                @markup.add_regexp_handling(/(?:link:|https?:|mailto:|ftp:|irc:|www\.)\S+\w/,
         | 
| 70 | 
            +
                                            :HYPERLINK)
         | 
| 71 | 
            +
                init_link_notation_regexp_handlings
         | 
| 72 | 
            +
              end
         | 
| 73 | 
            +
             | 
| 74 | 
            +
              ##
         | 
| 75 | 
            +
              # Adds regexp handlings about link notations.
         | 
| 76 | 
            +
             | 
| 77 | 
            +
              def init_link_notation_regexp_handlings
         | 
| 78 | 
            +
                add_regexp_handling_RDOCLINK
         | 
| 79 | 
            +
                add_regexp_handling_TIDYLINK
         | 
| 80 | 
            +
              end
         | 
| 81 | 
            +
             | 
| 69 82 | 
             
              def handle_RDOCLINK url # :nodoc:
         | 
| 70 83 | 
             
                case url
         | 
| 71 84 | 
             
                when /^rdoc-ref:/
         | 
| @@ -39,10 +39,18 @@ class RDoc::Markup::ToHtmlCrossref < RDoc::Markup::ToHtml | |
| 39 39 | 
             
                @hyperlink_all = @options.hyperlink_all
         | 
| 40 40 | 
             
                @show_hash     = @options.show_hash
         | 
| 41 41 |  | 
| 42 | 
            -
                 | 
| 42 | 
            +
                @cross_reference = RDoc::CrossReference.new @context
         | 
| 43 | 
            +
              end
         | 
| 44 | 
            +
             | 
| 45 | 
            +
              def init_link_notation_regexp_handlings
         | 
| 46 | 
            +
                add_regexp_handling_RDOCLINK
         | 
| 47 | 
            +
             | 
| 48 | 
            +
                # The crossref must be linked before tidylink because Klass.method[:sym]
         | 
| 49 | 
            +
                # will be processed as a tidylink first and will be broken.
         | 
| 50 | 
            +
                crossref_re = @options.hyperlink_all ? ALL_CROSSREF_REGEXP : CROSSREF_REGEXP
         | 
| 43 51 | 
             
                @markup.add_regexp_handling crossref_re, :CROSSREF
         | 
| 44 52 |  | 
| 45 | 
            -
                 | 
| 53 | 
            +
                add_regexp_handling_TIDYLINK
         | 
| 46 54 | 
             
              end
         | 
| 47 55 |  | 
| 48 56 | 
             
              ##
         | 
| @@ -54,7 +62,7 @@ class RDoc::Markup::ToHtmlCrossref < RDoc::Markup::ToHtml | |
| 54 62 |  | 
| 55 63 | 
             
                name = name[1..-1] unless @show_hash if name[0, 1] == '#'
         | 
| 56 64 |  | 
| 57 | 
            -
                if name =~ /(.*[^#:])@/
         | 
| 65 | 
            +
                if !(name.end_with?('+@', '-@')) and name =~ /(.*[^#:])@/
         | 
| 58 66 | 
             
                  text ||= "#{CGI.unescape $'} at <code>#{$1}</code>"
         | 
| 59 67 | 
             
                  code = false
         | 
| 60 68 | 
             
                else
         | 
| @@ -130,7 +138,7 @@ class RDoc::Markup::ToHtmlCrossref < RDoc::Markup::ToHtml | |
| 130 138 | 
             
              # Creates an HTML link to +name+ with the given +text+.
         | 
| 131 139 |  | 
| 132 140 | 
             
              def link name, text, code = true
         | 
| 133 | 
            -
                if name =~ /(.*[^#:])@/ | 
| 141 | 
            +
                if !(name.end_with?('+@', '-@')) and name =~ /(.*[^#:])@/
         | 
| 134 142 | 
             
                  name = $1
         | 
| 135 143 | 
             
                  label = $'
         | 
| 136 144 | 
             
                end
         | 
| @@ -144,7 +152,7 @@ class RDoc::Markup::ToHtmlCrossref < RDoc::Markup::ToHtml | |
| 144 152 | 
             
                  path = ref.as_href @from_path
         | 
| 145 153 |  | 
| 146 154 | 
             
                  if code and RDoc::CodeObject === ref and !(RDoc::TopLevel === ref)
         | 
| 147 | 
            -
                    text = "<code>#{text}</code>"
         | 
| 155 | 
            +
                    text = "<code>#{CGI.escapeHTML text}</code>"
         | 
| 148 156 | 
             
                  end
         | 
| 149 157 |  | 
| 150 158 | 
             
                  if path =~ /#/ then
         | 
| @@ -153,7 +161,11 @@ class RDoc::Markup::ToHtmlCrossref < RDoc::Markup::ToHtml | |
| 153 161 | 
             
                        ref.sections.any? { |section| label == section.title } then
         | 
| 154 162 | 
             
                    path << "##{label}"
         | 
| 155 163 | 
             
                  else
         | 
| 156 | 
            -
                     | 
| 164 | 
            +
                    if ref.respond_to?(:aref)
         | 
| 165 | 
            +
                      path << "##{ref.aref}-label-#{label}"
         | 
| 166 | 
            +
                    else
         | 
| 167 | 
            +
                      path << "#label-#{label}"
         | 
| 168 | 
            +
                    end
         | 
| 157 169 | 
             
                  end if label
         | 
| 158 170 |  | 
| 159 171 | 
             
                  "<a href=\"#{path}\">#{text}</a>"
         | 
    
        data/lib/rdoc/options.rb
    CHANGED
    
    | @@ -344,7 +344,10 @@ class RDoc::Options | |
| 344 344 |  | 
| 345 345 | 
             
              def init_ivars # :nodoc:
         | 
| 346 346 | 
             
                @dry_run = false
         | 
| 347 | 
            -
                @exclude = [ | 
| 347 | 
            +
                @exclude = %w[
         | 
| 348 | 
            +
                  ~\z \.orig\z \.rej\z \.bak\z
         | 
| 349 | 
            +
                  \.gemspec\z
         | 
| 350 | 
            +
                ]
         | 
| 348 351 | 
             
                @files = nil
         | 
| 349 352 | 
             
                @force_output = false
         | 
| 350 353 | 
             
                @force_update = true
         | 
| @@ -552,7 +555,13 @@ class RDoc::Options | |
| 552 555 |  | 
| 553 556 | 
             
                @files << @page_dir.to_s
         | 
| 554 557 |  | 
| 555 | 
            -
                page_dir =  | 
| 558 | 
            +
                page_dir = nil
         | 
| 559 | 
            +
                begin
         | 
| 560 | 
            +
                  page_dir = @page_dir.expand_path.relative_path_from @root
         | 
| 561 | 
            +
                rescue ArgumentError
         | 
| 562 | 
            +
                  # On Windows, sometimes crosses different drive letters.
         | 
| 563 | 
            +
                  page_dir = @page_dir.expand_path
         | 
| 564 | 
            +
                end
         | 
| 556 565 |  | 
| 557 566 | 
             
                @page_dir = page_dir
         | 
| 558 567 | 
             
              end
         | 
| @@ -746,7 +755,7 @@ Usage: #{opt.program_name} [options] [names...] | |
| 746 755 |  | 
| 747 756 | 
             
                  opt.on("--[no-]force-update", "-U",
         | 
| 748 757 | 
             
                         "Forces rdoc to scan all sources even if",
         | 
| 749 | 
            -
                         "newer than the flag file.") do |value|
         | 
| 758 | 
            +
                         "no files are newer than the flag file.") do |value|
         | 
| 750 759 | 
             
                    @force_update = value
         | 
| 751 760 | 
             
                  end
         | 
| 752 761 |  | 
| @@ -1151,8 +1160,17 @@ Usage: #{opt.program_name} [options] [names...] | |
| 1151 1160 |  | 
| 1152 1161 | 
             
                path.reject do |item|
         | 
| 1153 1162 | 
             
                  path = Pathname.new(item).expand_path
         | 
| 1154 | 
            -
                   | 
| 1155 | 
            -
                  relative | 
| 1163 | 
            +
                  is_reject = nil
         | 
| 1164 | 
            +
                  relative = nil
         | 
| 1165 | 
            +
                  begin
         | 
| 1166 | 
            +
                    relative = path.relative_path_from(dot).to_s
         | 
| 1167 | 
            +
                  rescue ArgumentError
         | 
| 1168 | 
            +
                    # On Windows, sometimes crosses different drive letters.
         | 
| 1169 | 
            +
                    is_reject = true
         | 
| 1170 | 
            +
                  else
         | 
| 1171 | 
            +
                    is_reject = relative.start_with? '..'
         | 
| 1172 | 
            +
                  end
         | 
| 1173 | 
            +
                  is_reject
         | 
| 1156 1174 | 
             
                end
         | 
| 1157 1175 | 
             
              end
         | 
| 1158 1176 |  | 
    
        data/lib/rdoc/parser.rb
    CHANGED
    
    | @@ -78,7 +78,7 @@ class RDoc::Parser | |
| 78 78 |  | 
| 79 79 | 
             
                return true if s[0, 2] == Marshal.dump('')[0, 2] or s.index("\x00")
         | 
| 80 80 |  | 
| 81 | 
            -
                mode = 'r:utf-8' # default source encoding has been  | 
| 81 | 
            +
                mode = 'r:utf-8' # default source encoding has been changed to utf-8
         | 
| 82 82 | 
             
                s.sub!(/\A#!.*\n/, '')     # assume shebang line isn't longer than 1024.
         | 
| 83 83 | 
             
                encoding = s[/^\s*\#\s*(?:-\*-\s*)?(?:en)?coding:\s*([^\s;]+?)(?:-\*-|[\s;])/, 1]
         | 
| 84 84 | 
             
                mode = "rb:#{encoding}" if encoding
         | 
| @@ -269,9 +269,9 @@ class RDoc::Parser | |
| 269 269 | 
             
            end
         | 
| 270 270 |  | 
| 271 271 | 
             
            # simple must come first in order to show up last in the parsers list
         | 
| 272 | 
            -
             | 
| 273 | 
            -
             | 
| 274 | 
            -
             | 
| 275 | 
            -
             | 
| 276 | 
            -
             | 
| 277 | 
            -
             | 
| 272 | 
            +
            require_relative 'parser/simple'
         | 
| 273 | 
            +
            require_relative 'parser/c'
         | 
| 274 | 
            +
            require_relative 'parser/changelog'
         | 
| 275 | 
            +
            require_relative 'parser/markdown'
         | 
| 276 | 
            +
            require_relative 'parser/rd'
         | 
| 277 | 
            +
            require_relative 'parser/ruby'
         | 
    
        data/lib/rdoc/parser/c.rb
    CHANGED
    
    | @@ -3,15 +3,15 @@ require 'tsort' | |
| 3 3 |  | 
| 4 4 | 
             
            ##
         | 
| 5 5 | 
             
            # RDoc::Parser::C attempts to parse C extension files.  It looks for
         | 
| 6 | 
            -
            # the standard patterns that you find in extensions:  | 
| 7 | 
            -
            # rb_define_method | 
| 6 | 
            +
            # the standard patterns that you find in extensions: +rb_define_class+,
         | 
| 7 | 
            +
            # +rb_define_method+ and so on.  It tries to find the corresponding
         | 
| 8 8 | 
             
            # C source for the methods and extract comments, but if we fail
         | 
| 9 9 | 
             
            # we don't worry too much.
         | 
| 10 10 | 
             
            #
         | 
| 11 11 | 
             
            # The comments associated with a Ruby method are extracted from the C
         | 
| 12 12 | 
             
            # comment block associated with the routine that _implements_ that
         | 
| 13 13 | 
             
            # method, that is to say the method whose name is given in the
         | 
| 14 | 
            -
            #  | 
| 14 | 
            +
            # +rb_define_method+ call. For example, you might write:
         | 
| 15 15 | 
             
            #
         | 
| 16 16 | 
             
            #   /*
         | 
| 17 17 | 
             
            #    * Returns a new array that is a one-dimensional flattening of this
         | 
| @@ -24,8 +24,7 @@ require 'tsort' | |
| 24 24 | 
             
            #    *    a.flatten                 #=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
         | 
| 25 25 | 
             
            #    */
         | 
| 26 26 | 
             
            #    static VALUE
         | 
| 27 | 
            -
            #    rb_ary_flatten(ary)
         | 
| 28 | 
            -
            #        VALUE ary;
         | 
| 27 | 
            +
            #    rb_ary_flatten(VALUE ary)
         | 
| 29 28 | 
             
            #    {
         | 
| 30 29 | 
             
            #        ary = rb_obj_dup(ary);
         | 
| 31 30 | 
             
            #        rb_ary_flatten_bang(ary);
         | 
| @@ -35,16 +34,16 @@ require 'tsort' | |
| 35 34 | 
             
            #    ...
         | 
| 36 35 | 
             
            #
         | 
| 37 36 | 
             
            #    void
         | 
| 38 | 
            -
            #    Init_Array()
         | 
| 37 | 
            +
            #    Init_Array(void)
         | 
| 39 38 | 
             
            #    {
         | 
| 40 39 | 
             
            #      ...
         | 
| 41 40 | 
             
            #      rb_define_method(rb_cArray, "flatten", rb_ary_flatten, 0);
         | 
| 42 41 | 
             
            #
         | 
| 43 | 
            -
            # Here RDoc will determine from the rb_define_method line that there's a
         | 
| 42 | 
            +
            # Here RDoc will determine from the +rb_define_method+ line that there's a
         | 
| 44 43 | 
             
            # method called "flatten" in class Array, and will look for the implementation
         | 
| 45 | 
            -
            # in the method rb_ary_flatten | 
| 44 | 
            +
            # in the method +rb_ary_flatten+. It will then use the comment from that
         | 
| 46 45 | 
             
            # method in the HTML output. This method must be in the same source file
         | 
| 47 | 
            -
            # as the rb_define_method | 
| 46 | 
            +
            # as the +rb_define_method+.
         | 
| 48 47 | 
             
            #
         | 
| 49 48 | 
             
            # The comment blocks may include special directives:
         | 
| 50 49 | 
             
            #
         | 
| @@ -70,15 +69,15 @@ require 'tsort' | |
| 70 69 | 
             
            # [Document-variable: +name+]
         | 
| 71 70 | 
             
            #   Documentation for the named +rb_define_variable+
         | 
| 72 71 | 
             
            #
         | 
| 73 | 
            -
            # [Document-method | 
| 72 | 
            +
            # [Document-method\: +method_name+]
         | 
| 74 73 | 
             
            #   Documentation for the named method.  Use this when the method name is
         | 
| 75 74 | 
             
            #   unambiguous.
         | 
| 76 75 | 
             
            #
         | 
| 77 | 
            -
            # [Document-method | 
| 76 | 
            +
            # [Document-method\: <tt>ClassName::method_name</tt>]
         | 
| 78 77 | 
             
            #   Documentation for a singleton method in the given class.  Use this when
         | 
| 79 78 | 
             
            #   the method name alone is ambiguous.
         | 
| 80 79 | 
             
            #
         | 
| 81 | 
            -
            # [Document-method | 
| 80 | 
            +
            # [Document-method\: <tt>ClassName#method_name</tt>]
         | 
| 82 81 | 
             
            #   Documentation for a instance method in the given class.  Use this when the
         | 
| 83 82 | 
             
            #   method name alone is ambiguous.
         | 
| 84 83 | 
             
            #
         | 
| @@ -210,48 +209,6 @@ class RDoc::Parser::C < RDoc::Parser | |
| 210 209 | 
             
                end
         | 
| 211 210 | 
             
              end
         | 
| 212 211 |  | 
| 213 | 
            -
              ##
         | 
| 214 | 
            -
              # Removes duplicate call-seq entries for methods using the same
         | 
| 215 | 
            -
              # implementation.
         | 
| 216 | 
            -
             | 
| 217 | 
            -
              def deduplicate_call_seq
         | 
| 218 | 
            -
                @methods.each do |var_name, functions|
         | 
| 219 | 
            -
                  class_name = @known_classes[var_name]
         | 
| 220 | 
            -
                  next unless class_name
         | 
| 221 | 
            -
                  class_obj  = find_class var_name, class_name
         | 
| 222 | 
            -
             | 
| 223 | 
            -
                  functions.each_value do |method_names|
         | 
| 224 | 
            -
                    next if method_names.length == 1
         | 
| 225 | 
            -
             | 
| 226 | 
            -
                    method_names.each do |method_name|
         | 
| 227 | 
            -
                      deduplicate_method_name class_obj, method_name
         | 
| 228 | 
            -
                    end
         | 
| 229 | 
            -
                  end
         | 
| 230 | 
            -
                end
         | 
| 231 | 
            -
              end
         | 
| 232 | 
            -
             | 
| 233 | 
            -
              ##
         | 
| 234 | 
            -
              # If two ruby methods share a C implementation (and comment) this
         | 
| 235 | 
            -
              # deduplicates the examples in the call_seq for the method to reduce
         | 
| 236 | 
            -
              # confusion in the output.
         | 
| 237 | 
            -
             | 
| 238 | 
            -
              def deduplicate_method_name class_obj, method_name # :nodoc:
         | 
| 239 | 
            -
                return unless
         | 
| 240 | 
            -
                  method = class_obj.method_list.find { |m| m.name == method_name }
         | 
| 241 | 
            -
                return unless call_seq = method.call_seq
         | 
| 242 | 
            -
             | 
| 243 | 
            -
                method_name = method_name[0, 1] if method_name =~ /\A\[/
         | 
| 244 | 
            -
             | 
| 245 | 
            -
                entries = call_seq.split "\n"
         | 
| 246 | 
            -
             | 
| 247 | 
            -
                matching = entries.select do |entry|
         | 
| 248 | 
            -
                  entry =~ /^\w*\.?#{Regexp.escape method_name}/ or
         | 
| 249 | 
            -
                    entry =~ /\s#{Regexp.escape method_name}\s/
         | 
| 250 | 
            -
                end
         | 
| 251 | 
            -
             | 
| 252 | 
            -
                method.call_seq = matching.join "\n"
         | 
| 253 | 
            -
              end
         | 
| 254 | 
            -
             | 
| 255 212 | 
             
              ##
         | 
| 256 213 | 
             
              # Scans #content for rb_define_alias
         | 
| 257 214 |  | 
| @@ -270,23 +227,29 @@ class RDoc::Parser::C < RDoc::Parser | |
| 270 227 | 
             
                  end
         | 
| 271 228 |  | 
| 272 229 | 
             
                  class_obj = find_class var_name, class_name
         | 
| 273 | 
            -
             | 
| 274 | 
            -
                  al = RDoc::Alias.new '', old_name, new_name, ''
         | 
| 275 | 
            -
                  al.singleton = @singleton_classes.key? var_name
         | 
| 276 | 
            -
             | 
| 277 230 | 
             
                  comment = find_alias_comment var_name, new_name, old_name
         | 
| 278 | 
            -
             | 
| 279 231 | 
             
                  comment.normalize
         | 
| 280 | 
            -
             | 
| 281 | 
            -
             | 
| 282 | 
            -
             | 
| 283 | 
            -
                   | 
| 284 | 
            -
             | 
| 285 | 
            -
                  class_obj.add_alias al
         | 
| 286 | 
            -
                  @stats.add_alias al
         | 
| 232 | 
            +
                  if comment.to_s.empty? and existing_method = class_obj.method_list.find { |m| m.name == old_name}
         | 
| 233 | 
            +
                    comment = existing_method.comment
         | 
| 234 | 
            +
                  end
         | 
| 235 | 
            +
                  add_alias(var_name, class_obj, old_name, new_name, comment)
         | 
| 287 236 | 
             
                end
         | 
| 288 237 | 
             
              end
         | 
| 289 238 |  | 
| 239 | 
            +
              ##
         | 
| 240 | 
            +
              # Add alias, either from a direct alias definition, or from two
         | 
| 241 | 
            +
              # method that reference the same function.
         | 
| 242 | 
            +
             | 
| 243 | 
            +
              def add_alias(var_name, class_obj, old_name, new_name, comment)
         | 
| 244 | 
            +
                al = RDoc::Alias.new '', old_name, new_name, ''
         | 
| 245 | 
            +
                al.singleton = @singleton_classes.key? var_name
         | 
| 246 | 
            +
                al.comment = comment
         | 
| 247 | 
            +
                al.record_location @top_level
         | 
| 248 | 
            +
                class_obj.add_alias al
         | 
| 249 | 
            +
                @stats.add_alias al
         | 
| 250 | 
            +
                al
         | 
| 251 | 
            +
              end
         | 
| 252 | 
            +
             | 
| 290 253 | 
             
              ##
         | 
| 291 254 | 
             
              # Scans #content for rb_attr and rb_define_attr
         | 
| 292 255 |  | 
| @@ -325,12 +288,100 @@ class RDoc::Parser::C < RDoc::Parser | |
| 325 288 | 
             
              # Scans #content for rb_define_class, boot_defclass, rb_define_class_under
         | 
| 326 289 | 
             
              # and rb_singleton_class
         | 
| 327 290 |  | 
| 328 | 
            -
              def  | 
| 329 | 
            -
                do_boot_defclass
         | 
| 330 | 
            -
             | 
| 331 | 
            -
                 | 
| 332 | 
            -
             | 
| 333 | 
            -
             | 
| 291 | 
            +
              def do_classes_and_modules
         | 
| 292 | 
            +
                do_boot_defclass if @file_name == "class.c"
         | 
| 293 | 
            +
             | 
| 294 | 
            +
                @content.scan(
         | 
| 295 | 
            +
                  %r(
         | 
| 296 | 
            +
                    (?<var_name>[\w\.]+)\s* =
         | 
| 297 | 
            +
                    \s*rb_(?:
         | 
| 298 | 
            +
                      define_(?:
         | 
| 299 | 
            +
                        class(?: # rb_define_class(class_name_1, parent_name_1)
         | 
| 300 | 
            +
                          \s*\(
         | 
| 301 | 
            +
                            \s*"(?<class_name_1>\w+)",
         | 
| 302 | 
            +
                            \s*(?<parent_name_1>\w+)\s*
         | 
| 303 | 
            +
                          \)
         | 
| 304 | 
            +
                        |
         | 
| 305 | 
            +
                          _under\s*\( # rb_define_class_under(class_under, class_name2, parent_name2...)
         | 
| 306 | 
            +
                            \s* (?<class_under>\w+),
         | 
| 307 | 
            +
                            \s* "(?<class_name_2>\w+)",
         | 
| 308 | 
            +
                            \s*
         | 
| 309 | 
            +
                            (?:
         | 
| 310 | 
            +
                              (?<parent_name_2>[\w\*\s\(\)\.\->]+) |
         | 
| 311 | 
            +
                              rb_path2class\("(?<path>[\w:]+)"\)
         | 
| 312 | 
            +
                            )
         | 
| 313 | 
            +
                          \s*\)
         | 
| 314 | 
            +
                        )
         | 
| 315 | 
            +
                      |
         | 
| 316 | 
            +
                        module(?: # rb_define_module(module_name_1)
         | 
| 317 | 
            +
                          \s*\(
         | 
| 318 | 
            +
                            \s*"(?<module_name_1>\w+)"\s*
         | 
| 319 | 
            +
                          \)
         | 
| 320 | 
            +
                        |
         | 
| 321 | 
            +
                          _under\s*\( # rb_define_module_under(module_under, module_name_2)
         | 
| 322 | 
            +
                            \s*(?<module_under>\w+),
         | 
| 323 | 
            +
                            \s*"(?<module_name_2>\w+)"
         | 
| 324 | 
            +
                          \s*\)
         | 
| 325 | 
            +
                        )
         | 
| 326 | 
            +
                      )
         | 
| 327 | 
            +
                  |
         | 
| 328 | 
            +
                    struct_define_without_accessor\s*\( # rb_struct_define_without_accessor(class_name_3, parent_name_3, ...)
         | 
| 329 | 
            +
                      \s*"(?<class_name_3>\w+)",
         | 
| 330 | 
            +
                      \s*(?<parent_name_3>\w+),
         | 
| 331 | 
            +
                      \s*\w+,        # Allocation function
         | 
| 332 | 
            +
                      (?:\s*"\w+",)* # Attributes
         | 
| 333 | 
            +
                      \s*NULL
         | 
| 334 | 
            +
                    \)
         | 
| 335 | 
            +
                  |
         | 
| 336 | 
            +
                    singleton_class\s*\( # rb_singleton_class(target_class_name)
         | 
| 337 | 
            +
                      \s*(?<target_class_name>\w+)
         | 
| 338 | 
            +
                    \)
         | 
| 339 | 
            +
                    )
         | 
| 340 | 
            +
                  )mx
         | 
| 341 | 
            +
                ) do
         | 
| 342 | 
            +
                  class_name = $~[:class_name_1]
         | 
| 343 | 
            +
                  type = :class
         | 
| 344 | 
            +
                  if class_name
         | 
| 345 | 
            +
                    # rb_define_class(class_name_1, parent_name_1)
         | 
| 346 | 
            +
                    parent_name = $~[:parent_name_1]
         | 
| 347 | 
            +
                    #under = nil
         | 
| 348 | 
            +
                  else
         | 
| 349 | 
            +
                    class_name = $~[:class_name_2]
         | 
| 350 | 
            +
                    if class_name
         | 
| 351 | 
            +
                      # rb_define_class_under(class_under, class_name2, parent_name2...)
         | 
| 352 | 
            +
                      parent_name = $~[:parent_name_2] || $~[:path]
         | 
| 353 | 
            +
                      under = $~[:class_under]
         | 
| 354 | 
            +
                    else
         | 
| 355 | 
            +
                      class_name = $~[:class_name_3]
         | 
| 356 | 
            +
                      if class_name
         | 
| 357 | 
            +
                        # rb_struct_define_without_accessor(class_name_3, parent_name_3, ...)
         | 
| 358 | 
            +
                        parent_name = $~[:parent_name_3]
         | 
| 359 | 
            +
                        #under = nil
         | 
| 360 | 
            +
                      else
         | 
| 361 | 
            +
                        type = :module
         | 
| 362 | 
            +
                        class_name = $~[:module_name_1]
         | 
| 363 | 
            +
                        #parent_name = nil
         | 
| 364 | 
            +
                        if class_name
         | 
| 365 | 
            +
                          # rb_define_module(module_name_1)
         | 
| 366 | 
            +
                          #under = nil
         | 
| 367 | 
            +
                        else
         | 
| 368 | 
            +
                          class_name = $~[:module_name_2]
         | 
| 369 | 
            +
                          if class_name
         | 
| 370 | 
            +
                            # rb_define_module_under(module_under, module_name_1)
         | 
| 371 | 
            +
                            under = $~[:module_under]
         | 
| 372 | 
            +
                          else
         | 
| 373 | 
            +
                            # rb_singleton_class(target_class_name)
         | 
| 374 | 
            +
                            target_class_name = $~[:target_class_name]
         | 
| 375 | 
            +
                            handle_singleton $~[:var_name], target_class_name
         | 
| 376 | 
            +
                            next
         | 
| 377 | 
            +
                          end
         | 
| 378 | 
            +
                        end
         | 
| 379 | 
            +
                      end
         | 
| 380 | 
            +
                    end
         | 
| 381 | 
            +
                  end
         | 
| 382 | 
            +
             | 
| 383 | 
            +
                  handle_class_module($~[:var_name], type, class_name, parent_name, under)
         | 
| 384 | 
            +
                end
         | 
| 334 385 | 
             
              end
         | 
| 335 386 |  | 
| 336 387 | 
             
              ##
         | 
| @@ -379,65 +430,6 @@ class RDoc::Parser::C < RDoc::Parser | |
| 379 430 | 
             
                end
         | 
| 380 431 | 
             
              end
         | 
| 381 432 |  | 
| 382 | 
            -
              ##
         | 
| 383 | 
            -
              # Scans #content for rb_define_class
         | 
| 384 | 
            -
             | 
| 385 | 
            -
              def do_define_class
         | 
| 386 | 
            -
                # The '.' lets us handle SWIG-generated files
         | 
| 387 | 
            -
                @content.scan(/([\w\.]+)\s* = \s*rb_define_class\s*
         | 
| 388 | 
            -
                          \(
         | 
| 389 | 
            -
                             \s*"(\w+)",
         | 
| 390 | 
            -
                             \s*(\w+)\s*
         | 
| 391 | 
            -
                          \)/mx) do |var_name, class_name, parent|
         | 
| 392 | 
            -
                  handle_class_module(var_name, :class, class_name, parent, nil)
         | 
| 393 | 
            -
                end
         | 
| 394 | 
            -
              end
         | 
| 395 | 
            -
             | 
| 396 | 
            -
              ##
         | 
| 397 | 
            -
              # Scans #content for rb_define_class_under
         | 
| 398 | 
            -
             | 
| 399 | 
            -
              def do_define_class_under
         | 
| 400 | 
            -
                @content.scan(/([\w\.]+)\s* =                  # var_name
         | 
| 401 | 
            -
                               \s*rb_define_class_under\s*
         | 
| 402 | 
            -
                               \(
         | 
| 403 | 
            -
                                 \s* (\w+),                    # under
         | 
| 404 | 
            -
                                 \s* "(\w+)",                  # class_name
         | 
| 405 | 
            -
                                 \s*
         | 
| 406 | 
            -
                                 (?:
         | 
| 407 | 
            -
                                   ([\w\*\s\(\)\.\->]+) |      # parent_name
         | 
| 408 | 
            -
                                   rb_path2class\("([\w:]+)"\) # path
         | 
| 409 | 
            -
                                 )
         | 
| 410 | 
            -
                                 \s*
         | 
| 411 | 
            -
                               \)
         | 
| 412 | 
            -
                              /mx) do |var_name, under, class_name, parent_name, path|
         | 
| 413 | 
            -
                  parent = path || parent_name
         | 
| 414 | 
            -
             | 
| 415 | 
            -
                  handle_class_module var_name, :class, class_name, parent, under
         | 
| 416 | 
            -
                end
         | 
| 417 | 
            -
              end
         | 
| 418 | 
            -
             | 
| 419 | 
            -
              ##
         | 
| 420 | 
            -
              # Scans #content for rb_define_module
         | 
| 421 | 
            -
             | 
| 422 | 
            -
              def do_define_module
         | 
| 423 | 
            -
                @content.scan(/(\w+)\s* = \s*rb_define_module\s*\(\s*"(\w+)"\s*\)/mx) do
         | 
| 424 | 
            -
                  |var_name, class_name|
         | 
| 425 | 
            -
                  handle_class_module(var_name, :module, class_name, nil, nil)
         | 
| 426 | 
            -
                end
         | 
| 427 | 
            -
              end
         | 
| 428 | 
            -
             | 
| 429 | 
            -
              ##
         | 
| 430 | 
            -
              # Scans #content for rb_define_module_under
         | 
| 431 | 
            -
             | 
| 432 | 
            -
              def do_define_module_under
         | 
| 433 | 
            -
                @content.scan(/(\w+)\s* = \s*rb_define_module_under\s*
         | 
| 434 | 
            -
                          \(
         | 
| 435 | 
            -
                             \s*(\w+),
         | 
| 436 | 
            -
                             \s*"(\w+)"
         | 
| 437 | 
            -
                          \s*\)/mx) do |var_name, in_module, class_name|
         | 
| 438 | 
            -
                  handle_class_module(var_name, :module, class_name, nil, in_module)
         | 
| 439 | 
            -
                end
         | 
| 440 | 
            -
              end
         | 
| 441 433 |  | 
| 442 434 | 
             
              ##
         | 
| 443 435 | 
             
              # Scans #content for rb_include_module
         | 
| @@ -447,7 +439,7 @@ class RDoc::Parser::C < RDoc::Parser | |
| 447 439 | 
             
                  next unless cls = @classes[c]
         | 
| 448 440 | 
             
                  m = @known_classes[m] || m
         | 
| 449 441 |  | 
| 450 | 
            -
                  comment = RDoc::Comment.new '', @top_level
         | 
| 442 | 
            +
                  comment = RDoc::Comment.new '', @top_level, :c
         | 
| 451 443 | 
             
                  incl = cls.add_include RDoc::Include.new(m, comment)
         | 
| 452 444 | 
             
                  incl.record_location @top_level
         | 
| 453 445 | 
             
                end
         | 
| @@ -519,42 +511,6 @@ class RDoc::Parser::C < RDoc::Parser | |
| 519 511 | 
             
                end
         | 
| 520 512 | 
             
              end
         | 
| 521 513 |  | 
| 522 | 
            -
              ##
         | 
| 523 | 
            -
              # Scans #content for rb_define_module and rb_define_module_under
         | 
| 524 | 
            -
             | 
| 525 | 
            -
              def do_modules
         | 
| 526 | 
            -
                do_define_module
         | 
| 527 | 
            -
                do_define_module_under
         | 
| 528 | 
            -
              end
         | 
| 529 | 
            -
             | 
| 530 | 
            -
              ##
         | 
| 531 | 
            -
              # Scans #content for rb_singleton_class
         | 
| 532 | 
            -
             | 
| 533 | 
            -
              def do_singleton_class
         | 
| 534 | 
            -
                @content.scan(/([\w\.]+)\s* = \s*rb_singleton_class\s*
         | 
| 535 | 
            -
                              \(
         | 
| 536 | 
            -
                                \s*(\w+)
         | 
| 537 | 
            -
                              \s*\)/mx) do |sclass_var, class_var|
         | 
| 538 | 
            -
                  handle_singleton sclass_var, class_var
         | 
| 539 | 
            -
                end
         | 
| 540 | 
            -
              end
         | 
| 541 | 
            -
             | 
| 542 | 
            -
              ##
         | 
| 543 | 
            -
              # Scans #content for struct_define_without_accessor
         | 
| 544 | 
            -
             | 
| 545 | 
            -
              def do_struct_define_without_accessor
         | 
| 546 | 
            -
                @content.scan(/([\w\.]+)\s* = \s*rb_struct_define_without_accessor\s*
         | 
| 547 | 
            -
                          \(
         | 
| 548 | 
            -
                             \s*"(\w+)",  # Class name
         | 
| 549 | 
            -
                             \s*(\w+),    # Parent class
         | 
| 550 | 
            -
                             \s*\w+,      # Allocation function
         | 
| 551 | 
            -
                             (\s*"\w+",)* # Attributes
         | 
| 552 | 
            -
                             \s*NULL
         | 
| 553 | 
            -
                          \)/mx) do |var_name, class_name, parent|
         | 
| 554 | 
            -
                  handle_class_module(var_name, :class, class_name, parent, nil)
         | 
| 555 | 
            -
                end
         | 
| 556 | 
            -
              end
         | 
| 557 | 
            -
             | 
| 558 514 | 
             
              ##
         | 
| 559 515 | 
             
              # Finds the comment for an alias on +class_name+ from +new_name+ to
         | 
| 560 516 | 
             
              # +old_name+
         | 
| @@ -565,7 +521,7 @@ class RDoc::Parser::C < RDoc::Parser | |
| 565 521 | 
             
                                               \s*"#{Regexp.escape new_name}"\s*,
         | 
| 566 522 | 
             
                                               \s*"#{Regexp.escape old_name}"\s*\);%xm
         | 
| 567 523 |  | 
| 568 | 
            -
                RDoc::Comment.new($1 || '', @top_level)
         | 
| 524 | 
            +
                RDoc::Comment.new($1 || '', @top_level, :c)
         | 
| 569 525 | 
             
              end
         | 
| 570 526 |  | 
| 571 527 | 
             
              ##
         | 
| @@ -604,7 +560,7 @@ class RDoc::Parser::C < RDoc::Parser | |
| 604 560 | 
             
                            ''
         | 
| 605 561 | 
             
                          end
         | 
| 606 562 |  | 
| 607 | 
            -
                RDoc::Comment.new comment, @top_level
         | 
| 563 | 
            +
                RDoc::Comment.new comment, @top_level, :c
         | 
| 608 564 | 
             
              end
         | 
| 609 565 |  | 
| 610 566 | 
             
              ##
         | 
| @@ -616,7 +572,7 @@ class RDoc::Parser::C < RDoc::Parser | |
| 616 572 | 
             
                  ((?>/\*.*?\*/\s*)?)
         | 
| 617 573 | 
             
                  ((?:(?:\w+)\s+)?
         | 
| 618 574 | 
             
                    (?:intern\s+)?VALUE\s+(\w+)
         | 
| 619 | 
            -
                    \s*(?:\([^)]*\))(?:[ | 
| 575 | 
            +
                    \s*(?:\([^)]*\))(?:[^\);]|$))
         | 
| 620 576 | 
             
                | ((?>/\*.*?\*/\s*))^\s*(\#\s*define\s+(\w+)\s+(\w+))
         | 
| 621 577 | 
             
                | ^\s*\#\s*define\s+(\w+)\s+(\w+)
         | 
| 622 578 | 
             
                }xm) do
         | 
| @@ -644,7 +600,7 @@ class RDoc::Parser::C < RDoc::Parser | |
| 644 600 |  | 
| 645 601 | 
             
                case type
         | 
| 646 602 | 
             
                when :func_def
         | 
| 647 | 
            -
                  comment = RDoc::Comment.new args[0], @top_level
         | 
| 603 | 
            +
                  comment = RDoc::Comment.new args[0], @top_level, :c
         | 
| 648 604 | 
             
                  body = args[1]
         | 
| 649 605 | 
             
                  offset, = args[2]
         | 
| 650 606 |  | 
| @@ -674,7 +630,7 @@ class RDoc::Parser::C < RDoc::Parser | |
| 674 630 |  | 
| 675 631 | 
             
                  body
         | 
| 676 632 | 
             
                when :macro_def
         | 
| 677 | 
            -
                  comment = RDoc::Comment.new args[0], @top_level
         | 
| 633 | 
            +
                  comment = RDoc::Comment.new args[0], @top_level, :c
         | 
| 678 634 | 
             
                  body = args[1]
         | 
| 679 635 | 
             
                  offset, = args[2]
         | 
| 680 636 |  | 
| @@ -781,7 +737,7 @@ class RDoc::Parser::C < RDoc::Parser | |
| 781 737 | 
             
                  comment = ''
         | 
| 782 738 | 
             
                end
         | 
| 783 739 |  | 
| 784 | 
            -
                comment = RDoc::Comment.new comment, @top_level
         | 
| 740 | 
            +
                comment = RDoc::Comment.new comment, @top_level, :c
         | 
| 785 741 | 
             
                comment.normalize
         | 
| 786 742 |  | 
| 787 743 | 
             
                look_for_directives_in class_mod, comment
         | 
| @@ -826,7 +782,7 @@ class RDoc::Parser::C < RDoc::Parser | |
| 826 782 | 
             
                  table[const_name] ||
         | 
| 827 783 | 
             
                  ''
         | 
| 828 784 |  | 
| 829 | 
            -
                RDoc::Comment.new comment, @top_level
         | 
| 785 | 
            +
                RDoc::Comment.new comment, @top_level, :c
         | 
| 830 786 | 
             
              end
         | 
| 831 787 |  | 
| 832 788 | 
             
              ##
         | 
| @@ -857,7 +813,7 @@ class RDoc::Parser::C < RDoc::Parser | |
| 857 813 |  | 
| 858 814 | 
             
                return unless comment
         | 
| 859 815 |  | 
| 860 | 
            -
                RDoc::Comment.new comment, @top_level
         | 
| 816 | 
            +
                RDoc::Comment.new comment, @top_level, :c
         | 
| 861 817 | 
             
              end
         | 
| 862 818 |  | 
| 863 819 | 
             
              ##
         | 
| @@ -953,7 +909,7 @@ class RDoc::Parser::C < RDoc::Parser | |
| 953 909 | 
             
              # can override the C value of the comment to give a friendly definition.
         | 
| 954 910 | 
             
              #
         | 
| 955 911 | 
             
              #   /* 300: The perfect score in bowling */
         | 
| 956 | 
            -
              #   rb_define_const(cFoo, "PERFECT", INT2FIX(300);
         | 
| 912 | 
            +
              #   rb_define_const(cFoo, "PERFECT", INT2FIX(300));
         | 
| 957 913 | 
             
              #
         | 
| 958 914 | 
             
              # Will override <tt>INT2FIX(300)</tt> with the value +300+ in the output
         | 
| 959 915 | 
             
              # RDoc.  Values may include quotes and escaped colons (\:).
         | 
| @@ -991,7 +947,7 @@ class RDoc::Parser::C < RDoc::Parser | |
| 991 947 |  | 
| 992 948 | 
             
                    new_comment = "#{$1}#{new_comment.lstrip}"
         | 
| 993 949 |  | 
| 994 | 
            -
                    new_comment = RDoc::Comment.new new_comment, @top_level
         | 
| 950 | 
            +
                    new_comment = RDoc::Comment.new new_comment, @top_level, :c
         | 
| 995 951 |  | 
| 996 952 | 
             
                    con = RDoc::Constant.new const_name, new_definition, new_comment
         | 
| 997 953 | 
             
                  else
         | 
| @@ -1029,6 +985,10 @@ class RDoc::Parser::C < RDoc::Parser | |
| 1029 985 |  | 
| 1030 986 | 
             
                class_obj = find_class var_name, class_name
         | 
| 1031 987 |  | 
| 988 | 
            +
                if existing_method = class_obj.method_list.find { |m| m.c_function == function }
         | 
| 989 | 
            +
                  add_alias(var_name, class_obj, existing_method.name, meth_name, existing_method.comment)
         | 
| 990 | 
            +
                end
         | 
| 991 | 
            +
             | 
| 1032 992 | 
             
                if class_obj then
         | 
| 1033 993 | 
             
                  if meth_name == 'initialize' then
         | 
| 1034 994 | 
             
                    meth_name = 'new'
         | 
| @@ -1248,8 +1208,7 @@ class RDoc::Parser::C < RDoc::Parser | |
| 1248 1208 | 
             
              def scan
         | 
| 1249 1209 | 
             
                remove_commented_out_lines
         | 
| 1250 1210 |  | 
| 1251 | 
            -
                 | 
| 1252 | 
            -
                do_classes
         | 
| 1211 | 
            +
                do_classes_and_modules
         | 
| 1253 1212 | 
             
                do_missing
         | 
| 1254 1213 |  | 
| 1255 1214 | 
             
                do_constants
         | 
| @@ -1258,12 +1217,9 @@ class RDoc::Parser::C < RDoc::Parser | |
| 1258 1217 | 
             
                do_aliases
         | 
| 1259 1218 | 
             
                do_attrs
         | 
| 1260 1219 |  | 
| 1261 | 
            -
                deduplicate_call_seq
         | 
| 1262 | 
            -
             | 
| 1263 1220 | 
             
                @store.add_c_variables self
         | 
| 1264 1221 |  | 
| 1265 1222 | 
             
                @top_level
         | 
| 1266 1223 | 
             
              end
         | 
| 1267 1224 |  | 
| 1268 1225 | 
             
            end
         | 
| 1269 | 
            -
             |