Class: RDoc::Parser::C

Inherits:
Object
  • Object
show all
Defined in:
lib/sdoc/c_parser_fix.rb

Instance Method Summary collapse

Instance Method Details

#find_class_comment(class_name, class_meth) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/sdoc/c_parser_fix.rb', line 8

def find_class_comment(class_name, class_meth)
  comment = nil
  if @content =~ %r{((?>/\*.*?\*/\s+))
                 (static\s+)?void\s+Init_#{class_name}\s*(?:_\(\s*)?\(\s*(?:void\s*)\)}xmi then
    comment = $1
  elsif @content =~ %r{Document-(?:class|module):\s#{class_name}\s*?(?:<\s+[:,\w]+)?\n((?>.*?\*/))}m
    comment = $1
  else
    if @content =~ /rb_define_(class|module)/m then
      class_name = class_name.split("::").last
      comments = []
      @content.split(/(\/\*.*?\*\/)\s*?\n/m).each_with_index do |chunk, index|
        comments[index] = chunk
        if chunk =~ /rb_define_(class|module).*?"(#{class_name})"/m then
          comment = comments[index-1]
          break
        end
      end
    end
  end
  class_meth.comment = mangle_comment(comment) if comment
end