lib/inch/code_object/proxy/method_object.rb in inch-0.2.2 vs lib/inch/code_object/proxy/method_object.rb in inch-0.2.3

- old
+ new

@@ -14,10 +14,24 @@ def bang_name? name =~ /\!$/ end + def getter? + attr_info = object.attr_info || {} + read_info = attr_info[:read] + if read_info + read_info.path == path + else + parent.child(:"#{name}=") + end + end + + def has_doc? + super && !implicit_docstring? + end + def has_parameters? !parameters.empty? end MANY_PARAMETERS_THRESHOLD = 3 @@ -66,10 +80,14 @@ def return_described? (return_tag && !return_tag.text.empty?) || docstring.describes_return? end + def setter? + name =~ /\=$/ && parameters.size == 1 + end + def questioning_name? name =~ /\?$/ end private @@ -105,9 +123,20 @@ if yield(line) && line_no > 0 lines << line.gsub(/^(\s+)/, '') lines << get_lines_up_while(filename, line_no - 1, &block) end lines.reverse + end + + def implicit_docstring? + if getter? + docstring == "Returns the value of attribute #{name}" + elsif setter? + basename = name.to_s.gsub(/(\=)$/, '') + docstring == "Sets the attribute #{basename}" + else + false + end end def signature_parameter_names object.parameters.map(&:first) end