method
parse_method

v1_9_3_392 -
Show latest stable
-
0 notes -
Class: Ruby
- 1_8_6_287
- 1_8_7_72
- 1_8_7_330
- 1_9_1_378 (0)
- 1_9_2_180 (23)
- 1_9_3_125 (0)
- 1_9_3_392 (0)
- 2_1_10 (0)
- 2_2_9 (0)
- 2_4_6
- 2_5_5
- 2_6_3
- What's this?
Related methods
- Class methods (1)
-
new
- Instance methods (82)
-
add_token_listener (<= v1_9_1_378)
-
collect_first_comment
-
consume_trailing_spaces (>= v2_1_10)
-
create_attr (>= v2_1_10)
-
create_module_alias (>= v2_1_10)
-
error
-
extract_call_seq
-
get_bool
-
get_class_or_module
-
get_class_specification
-
get_constant
-
get_constant_with_optional_...
-
get_end_token (>= v2_1_10)
-
get_method_container (>= v2_1_10)
-
get_symbol_or_name
-
get_tk (<= v1_9_1_378)
-
get_tkread (<= v1_9_1_378)
-
get_tkread_clean (>= v2_1_10)
-
get_visibility_information (>= v2_1_10)
-
look_for_directives_in
-
make_message
-
new_comment (>= v2_1_10)
-
parse_alias
-
parse_attr
-
parse_attr_accessor
-
parse_call_parameters
-
parse_class
-
parse_class_regular (>= v2_1_10)
-
parse_class_singleton (>= v2_1_10)
-
parse_comment
-
parse_comment_attr (>= v2_1_10)
-
parse_comment_ghost (>= v2_1_10)
-
parse_comment_tomdoc (>= v2_1_10)
-
parse_constant
-
parse_constant_body (>= v2_1_10)
-
parse_extend_or_include (>= v2_1_10)
-
parse_identifier (>= v2_1_10)
-
parse_include
-
parse_meta_attr
-
parse_meta_method
-
parse_meta_method_name (>= v2_1_10)
-
parse_meta_method_params (>= v2_1_10)
-
parse_method
-
parse_method_dummy (>= v2_1_10)
-
parse_method_name (>= v2_1_10)
-
parse_method_name_regular (>= v2_1_10)
-
parse_method_name_singleton (>= v2_1_10)
-
parse_method_or_yield_param...
-
parse_method_parameters
-
parse_method_params_and_body (>= v2_1_10)
-
parse_module
-
parse_require
-
parse_rescue (>= v2_1_10)
-
parse_statements
-
parse_symbol_arg
-
parse_symbol_arg_paren (>= v2_1_10)
-
parse_symbol_arg_space (>= v2_1_10)
-
parse_symbol_in_arg
-
parse_top_level_statements
-
parse_toplevel_statements (<= v1_9_1_378)
-
parse_visibility
-
parse_yield
-
parse_yield_parameters (<= v1_9_1_378)
-
peek_read (<= v1_9_1_378)
-
peek_tk (<= v1_9_1_378)
-
read_directive
-
read_documentation_modifiers
-
record_location (>= v2_1_10)
-
remove_private_comments
-
remove_token_listener (<= v1_9_1_378)
-
reset (<= v1_9_1_378)
-
scan
-
skip_for_variable
-
skip_method
-
skip_optional_do_after_expr...
-
skip_tkspace (<= v1_9_1_378)
-
skip_tkspace_comment
-
stop_at_EXPR_END (>= v2_1_10)
-
suppress_parents (>= v2_1_10)
-
unget_tk (<= v1_9_1_378)
-
update_visibility (>= v2_1_10)
-
warn
= private
= protected
parse_method(container, single, tk, comment)
public
Parses a normal method defined by def
Show source
# File lib/rdoc/parser/ruby.rb, line 985 def parse_method(container, single, tk, comment) added_container = nil meth = nil name = nil column = tk.char_no offset = tk.seek line_no = tk.line_no start_collecting_tokens add_token tk token_listener self do @scanner.instance_eval do @lex_state = EXPR_FNAME end skip_tkspace name_t = get_tk back_tk = skip_tkspace meth = nil added_container = false dot = get_tk if TkDOT === dot or TkCOLON2 === dot then @scanner.instance_eval do @lex_state = EXPR_FNAME end skip_tkspace name_t2 = get_tk case name_t when TkSELF, TkMOD then name = name_t2.name when TkCONSTANT then name = name_t2.name prev_container = container container = container.find_module_named(name_t.name) unless container then added_container = true obj = name_t.name.split("::").inject(Object) do |state, item| state.const_get(item) end rescue nil type = obj.class == Class ? RDoc::NormalClass : RDoc::NormalModule unless [Class, Module].include?(obj.class) then warn("Couldn't find #{name_t.name}. Assuming it's a module") end if type == RDoc::NormalClass then sclass = obj.superclass ? obj.superclass.name : nil container = prev_container.add_class type, name_t.name, sclass else container = prev_container.add_module type, name_t.name end container.record_location @top_level end when TkIDENTIFIER, TkIVAR, TkGVAR then dummy = RDoc::Context.new dummy.parent = container skip_method dummy return when TkTRUE, TkFALSE, TkNIL then klass_name = "#{name_t.name.capitalize}Class" container = RDoc::TopLevel.find_class_named klass_name container ||= @top_level.add_class RDoc::NormalClass, klass_name name = name_t2.name else warn "unexpected method name token #{name_t.inspect}" # break skip_method container return end meth = RDoc::AnyMethod.new(get_tkread, name) meth.singleton = true else unget_tk dot back_tk.reverse_each do |token| unget_tk token end name = case name_t when TkSTAR, TkAMPER then name_t.text else unless name_t.respond_to? :name then warn "expected method name token, . or ::, got #{name_t.inspect}" skip_method container return end name_t.name end meth = RDoc::AnyMethod.new get_tkread, name meth.singleton = (single == SINGLE) end end meth.record_location @top_level meth.offset = offset meth.line = line_no meth.start_collecting_tokens indent = TkSPACE.new nil, 1, 1 indent.set_text " " * column token = TkCOMMENT.new nil, line_no, 1 token.set_text "# File #{@top_level.absolute_name}, line #{line_no}" meth.add_tokens [token, NEWLINE_TOKEN, indent] meth.add_tokens @token_stream token_listener meth do @scanner.instance_eval do @continue = false end parse_method_parameters meth if meth.document_self then container.add_method meth elsif added_container then container.document_self = false end # Having now read the method parameters and documentation modifiers, we # now know whether we have to rename #initialize to ::new if name == "initialize" && !meth.singleton then if meth.dont_rename_initialize then meth.visibility = :protected else meth.singleton = true meth.name = "new" meth.visibility = :public end end parse_statements container, single, meth end extract_call_seq comment, meth meth.comment = comment @stats.add_method meth end