inch 0.4.4.rc2 → 0.4.4.rc3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/inch/code_object/provider/yard.rb +33 -0
- data/lib/inch/code_object/provider/yard/docstring.rb +0 -16
- data/lib/inch/code_object/provider/yard/object/method_object.rb +4 -3
- data/lib/inch/code_object/provider/yard/object/method_signature.rb +1 -1
- data/lib/inch/version.rb +1 -1
- data/test/fixtures/simple/lib/role_methods.rb +2 -0
- data/test/unit/code_object/proxy/method_object_test.rb +16 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 906e6d4610f4a1e6b81d26882e245c6b79080963
|
4
|
+
data.tar.gz: 5777392ea8de43a8536c7e223be7b2fbdf16af38
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0e7375a37a7d8166fb730f61c7bf2fcf935d2919d463342c4327d9f2a47911086ebe1bcc007787a64c79f94a48c158178165483d880f884fe672bc16a7015267
|
7
|
+
data.tar.gz: 18d13d4469bdfcc1beff48798a6aeacb5e9b2eda677e9a766b32eb3ec5fee6ad6a0c4a7dad1c67e5335914c897044a7a3870c524230f576707b4728402f39e02
|
@@ -4,6 +4,39 @@ module Inch
|
|
4
4
|
# Parses the source tree (using YARD)
|
5
5
|
module YARD
|
6
6
|
|
7
|
+
# Returns +true+ if the docstring was generated by YARD
|
8
|
+
#
|
9
|
+
# @param docstring [Docstring,String]
|
10
|
+
# @param method [MethodObject]
|
11
|
+
def self.implicit_docstring?(docstring, method)
|
12
|
+
name = method.name
|
13
|
+
if method.getter?
|
14
|
+
docstring.to_s == "Returns the value of attribute #{name}"
|
15
|
+
elsif method.setter?
|
16
|
+
basename = name.to_s.gsub(/(\=)$/, '')
|
17
|
+
docstring.to_s == "Sets the attribute #{basename}"
|
18
|
+
else
|
19
|
+
false
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
# Returns +true+ if the tag was generated by YARD
|
24
|
+
#
|
25
|
+
# @param tag [::YARD::Tag]
|
26
|
+
# @param method [MethodObject]
|
27
|
+
def self.implicit_tag?(tag, method)
|
28
|
+
name = method.name
|
29
|
+
if method.getter?
|
30
|
+
tag.tag_name == 'return' &&
|
31
|
+
tag.text == "the current value of #{name}"
|
32
|
+
elsif method.setter?
|
33
|
+
tag.tag_name == 'return' &&
|
34
|
+
tag.text == 'the newly set value'
|
35
|
+
else
|
36
|
+
false
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
7
40
|
def self.parse(dir, config = Inch::Config.codebase)
|
8
41
|
Parser.parse(dir, config)
|
9
42
|
end
|
@@ -3,22 +3,6 @@ module Inch
|
|
3
3
|
module Provider
|
4
4
|
module YARD
|
5
5
|
class Docstring
|
6
|
-
# Returns +true+ if the docstring was generated by YARD
|
7
|
-
#
|
8
|
-
# @param docstring [Docstring,String]
|
9
|
-
# @param method [MethodObject]
|
10
|
-
def self.implicit?(docstring, method)
|
11
|
-
name = method.name
|
12
|
-
if method.getter?
|
13
|
-
docstring.to_s == "Returns the value of attribute #{name}"
|
14
|
-
elsif method.setter?
|
15
|
-
basename = name.to_s.gsub(/(\=)$/, '')
|
16
|
-
docstring.to_s == "Sets the attribute #{basename}"
|
17
|
-
else
|
18
|
-
false
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
6
|
def initialize(text)
|
23
7
|
@text = text.to_s
|
24
8
|
end
|
@@ -64,11 +64,12 @@ module Inch
|
|
64
64
|
end
|
65
65
|
|
66
66
|
def return_mentioned?
|
67
|
-
|
67
|
+
return_tags.any? { |t| !t.types.empty? && !YARD.implicit_tag?(t, self) } ||
|
68
|
+
docstring.mentions_return? && !implicit_docstring?
|
68
69
|
end
|
69
70
|
|
70
71
|
def return_described?
|
71
|
-
return_tags.any? { |t| !t.text.empty? } ||
|
72
|
+
return_tags.any? { |t| !t.text.empty? && !YARD.implicit_tag?(t, self) } ||
|
72
73
|
docstring.describes_return? && !implicit_docstring?
|
73
74
|
end
|
74
75
|
|
@@ -100,7 +101,7 @@ module Inch
|
|
100
101
|
|
101
102
|
# Returns +true+ if the docstring was generated by YARD
|
102
103
|
def implicit_docstring?
|
103
|
-
|
104
|
+
YARD.implicit_docstring?(docstring, self)
|
104
105
|
end
|
105
106
|
|
106
107
|
def overload_tags
|
@@ -70,7 +70,7 @@ module Inch
|
|
70
70
|
|
71
71
|
# Returns +true+ if the docstring was generated by YARD
|
72
72
|
def implicit_docstring?
|
73
|
-
|
73
|
+
YARD.implicit_docstring?(docstring, method)
|
74
74
|
end
|
75
75
|
|
76
76
|
# Returns how the given parameter is noted in the method's
|
data/lib/inch/version.rb
CHANGED
@@ -272,6 +272,22 @@ describe ::Inch::CodeObject::Proxy::MethodObject do
|
|
272
272
|
assert_equal 0, m.score
|
273
273
|
end
|
274
274
|
|
275
|
+
def test_struct_getset
|
276
|
+
m = @objects.find("InchTest::StructGetSet#struct_getset")
|
277
|
+
assert m.getter?, "should be a getter"
|
278
|
+
refute m.setter?
|
279
|
+
refute m.has_doc?
|
280
|
+
assert_equal 0, m.score
|
281
|
+
end
|
282
|
+
|
283
|
+
def test_struct_getset2
|
284
|
+
m = @objects.find("InchTest::StructGetSet#struct_getset=")
|
285
|
+
refute m.getter?
|
286
|
+
assert m.setter?, "should be a setter"
|
287
|
+
refute m.has_doc?
|
288
|
+
assert_equal 0, m.score
|
289
|
+
end
|
290
|
+
|
275
291
|
def test_splat_parameter_notation
|
276
292
|
# it should assign the same score whether the parameter is
|
277
293
|
# described with or without the splat (*) operator
|