Method: RDoc::Parser::C#gen_const_table

Defined in:
lib/rdoc/parser/c.rb

#gen_const_table(file_content) ⇒ Object

Generate a const table



757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
# File 'lib/rdoc/parser/c.rb', line 757

def gen_const_table file_content
  table = {}
  @content.scan(%r{
    (?<doc>(?>^\s*/\*.*?\*/\s+))
      rb_define_(?<type>\w+)\(\s*(?:\w+),\s*
                         "(?<name>\w+)"\s*,
                         .*?\)\s*;
  | (?<doc>(?>^\s*/\*.*?\*/\s+))
      rb_define_global_(?<type>const)\(\s*
                         "(?<name>\w+)"\s*,
                         .*?\)\s*;
  |  (?<doc>(?>^\s*/\*.*?\*/\s+))
      rb_file_(?<type>const)\(\s*
                         "(?<name>\w+)"\s*,
                         .*?\)\s*;
  |  (?<doc>(?>^\s*/\*.*?\*/\s+))
      rb_curses_define_(?<type>const)\(\s*
                         (?<name>\w+)
                         \s*\)\s*;
  | Document-(?:const|global|variable):\s
      (?<name>(?:\w+::)*\w+)
      \s*?\n(?<doc>(?>.*?\*/))
  }mxi) do
    name, doc, type = $~.values_at(:name, :doc, :type)
    if type
      table[[type, name]] = doc
    else
      table[name] = "/*\n" + doc
    end
  end
  table
end