method
parse_method
v1_9_3_125 -
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

