method
new
v2_1_10 -
Show latest stable
- Class:
RDoc::Parser::C
new(top_level, file_name, content, options, stats)public
Prepares for parsing a C file. See RDoc::Parser#initialize for details on the arguments.
# File lib/rdoc/parser/c.rb, line 166
def initialize top_level, file_name, content, options, stats
super
@known_classes = RDoc::KNOWN_CLASSES.dup
@content = handle_tab_width handle_ifdefs_in @content
@file_dir = File.dirname @file_name
@classes = load_variable_map :c_class_variables
@singleton_classes = load_variable_map :c_singleton_class_variables
# class_variable => { function => [method, ...] }
@methods = Hash.new { |h, f| h[f] = Hash.new { |i, m| i[m] = [] } }
# missing variable => [handle_class_module arguments]
@missing_dependencies = {}
# missing enclosure variable => [dependent handle_class_module arguments]
@enclosure_dependencies = Hash.new { |h, k| h[k] = [] }
@enclosure_dependencies.instance_variable_set :@missing_dependencies,
@missing_dependencies
@enclosure_dependencies.extend TSort
def @enclosure_dependencies.tsort_each_node &block
each_key(&block)
rescue TSort::Cyclic => e
cycle_vars = e.message.scan(/"(.*?)"/).flatten
cycle = cycle_vars.sort.map do |var_name|
delete var_name
var_name, type, mod_name, = @missing_dependencies[var_name]
"#{type} #{mod_name} (#{var_name})"
end.join ', '
warn "Unable to create #{cycle} due to a cyclic class or module creation"
retry
end
def @enclosure_dependencies.tsort_each_child node, &block
fetch(node, []).each(&block)
end
end Related methods
- Instance methods
- deduplicate_call_seq
- deduplicate_method_name
- do_aliases
- do_attrs
- do_boot_defclass
- do_classes
- do_constants
- do_define_class
- do_define_class_under
- do_define_module
- do_define_module_under
- do_includes
- do_methods
- do_missing
- do_modules
- do_singleton_class
- do_struct_define_without_accessor
- find_alias_comment
- find_attr_comment
- find_body
- find_class
- find_class_comment
- find_const_comment
- find_modifiers
- find_override_comment
- handle_attr
- handle_class_module
- handle_constants
- handle_ifdefs_in
- handle_method
- handle_singleton
- handle_tab_width
- load_variable_map
- look_for_directives_in
- rb_scan_args
- remove_commented_out_lines
- scan
- Class methods
- new