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