inch 0.4.3.rc1 → 0.4.3.rc2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8df11f0c3f8e4f6ac9aea9b24fc63cd6ecc9d31f
4
- data.tar.gz: b91f994c074b34d6d67f81ee36b17c6029c8961d
3
+ metadata.gz: 51a684b0122ca78cb12bfe784278c7f1e2aced3b
4
+ data.tar.gz: 047e6d479de69c949e4adf3c79f72ea63f5db753
5
5
  SHA512:
6
- metadata.gz: e98e2c4bbcf6f32fd6fb9df7b03be207be2d92d103615493b9be1859d1f4fe14e90292d89c4d3cf4090f11d7f2e38c5d8b9cf4b7299cdb5ae6963e02320fbd14
7
- data.tar.gz: 8cd1a2706a738a6cb5d4fe970d09aa519e058494c66cdf3d84e4def4b054d600ad49af9634a0f1965b9c42c452f3765b103a97f7b04effa3d7b78943b7f5f5ea
6
+ metadata.gz: 9d6ef7ac83572913777a95e3408b54c1451d3d9c3a96772b30f106f0bf452b5fe28c0bf687b3e3caad58ec94342916b27bf62ddb6b3e86405bc738e1283d3782
7
+ data.tar.gz: c7fcf1abab329c2c18b84b11a1419b4aa5be23c852f4ea4403d82c1d09247d0fef3560fc3f799589d7e72bbdbcdae3c5300f8f8ad48d673403b4f26e97c0c2cc
@@ -29,8 +29,12 @@ module Inch
29
29
  end
30
30
  end
31
31
 
32
+ def has_code_example?
33
+ super || signatures.any? { |s| s.has_code_example? }
34
+ end
35
+
32
36
  def has_doc?
33
- super && !implicit_docstring? || signatures.any? { |t| t.has_doc? }
37
+ super && !implicit_docstring? || signatures.any? { |s| s.has_doc? }
34
38
  end
35
39
 
36
40
  def method?
@@ -77,8 +81,14 @@ module Inch
77
81
  end
78
82
 
79
83
  def signatures
80
- [self, *overload_tags].map do |tag_or_self|
81
- MethodSignature.new(self, tag_or_self)
84
+ base = MethodSignature.new(self, nil)
85
+ overloaded = overload_tags.map do |tag|
86
+ MethodSignature.new(self, tag)
87
+ end
88
+ if overloaded.any? { |s| s.same?(base) }
89
+ overloaded
90
+ else
91
+ [base] + overloaded
82
92
  end
83
93
  end
84
94
 
@@ -4,9 +4,30 @@ module Inch
4
4
  module YARD
5
5
  module Object
6
6
  # Utility class to describe (overloaded) method signatures
7
- class MethodSignature < Struct.new(:method, :tag_or_method)
7
+ class MethodSignature < Struct.new(:method, :yard_tag)
8
+ attr_reader :method, :yard_tag
9
+
10
+ # @param method [Provider::YARD::Object::MethodObject]
11
+ # @param method [::YARD::Tags::Tag,nil] if nil, the method's normal signature is used
12
+ def initialize(method, yard_tag = nil)
13
+ @method = method
14
+ @yard_tag = yard_tag
15
+ end
16
+
17
+ def all_signature_parameter_names
18
+ if tag?
19
+ yard_tag.parameters.map(&:first)
20
+ else
21
+ yard_object.parameters.map(&:first)
22
+ end
23
+ end
24
+
8
25
  def has_code_example?
9
- !yard_object.tags(:example).empty?
26
+ if tag?
27
+ !yard_tag.tags(:example).empty?
28
+ else
29
+ !yard_object.tags(:example).empty?
30
+ end
10
31
  end
11
32
 
12
33
  def has_doc?
@@ -25,17 +46,24 @@ module Inch
25
46
  parameters.detect { |p| p.name == name.to_s }
26
47
  end
27
48
 
49
+ # Returns +true+ if the other signature is identical to self
50
+ # @param other [MethodSignature]
51
+ # @return [Boolean]
52
+ def same?(other)
53
+ all_signature_parameter_names == other.all_signature_parameter_names
54
+ end
55
+
28
56
  # Returns the actual signature of the method.
29
57
  # @return [String]
30
58
  def signature
31
59
  if tag?
32
- tag_or_method.signature
60
+ yard_tag.signature
33
61
  else
34
62
  yard_object.signature.gsub(/^(def\ )/, '')
35
63
  end
36
64
  end
37
65
 
38
- #private
66
+ private
39
67
 
40
68
  def all_parameter_names
41
69
  all_names = all_signature_parameter_names + parameter_tags.map(&:name)
@@ -44,17 +72,9 @@ module Inch
44
72
  end.compact.uniq
45
73
  end
46
74
 
47
- def all_signature_parameter_names
48
- if tag?
49
- tag_or_method.parameters.map(&:first)
50
- else
51
- yard_object.parameters.map(&:first)
52
- end
53
- end
54
-
55
75
  def docstring
56
76
  if tag?
57
- tag_or_method.docstring
77
+ yard_tag.docstring
58
78
  else
59
79
  yard_object.docstring
60
80
  end
@@ -88,18 +108,18 @@ module Inch
88
108
 
89
109
  def parameter_tags
90
110
  if tag?
91
- tag_or_method.tags(:param)
111
+ @yard_tag.tags(:param)
92
112
  else
93
113
  yard_object.tags(:param)
94
114
  end
95
115
  end
96
116
 
97
117
  def tag?
98
- tag_or_method.respond_to?(:signature)
118
+ !yard_tag.nil?
99
119
  end
100
120
 
101
121
  def yard_object
102
- tag_or_method.object
122
+ method.object
103
123
  end
104
124
  end
105
125
  end
@@ -1,3 +1,3 @@
1
1
  module Inch
2
- VERSION = "0.4.3.rc1"
2
+ VERSION = "0.4.3.rc2"
3
3
  end
@@ -180,13 +180,13 @@ module Overloading
180
180
  def missing_param_names(*identifiers)
181
181
  end
182
182
 
183
- # Creates a Hello OpenFlow message.
183
+ # Tests that the default signature can be overloaded by tags
184
184
  #
185
- # @overload params_only_in_overloads()
185
+ # @overload params_also_in_overloads()
186
186
  # @example
187
187
  # Hello.new
188
188
  #
189
- # @overload params_only_in_overloads(transaction_id)
189
+ # @overload params_also_in_overloads(transaction_id)
190
190
  # @example
191
191
  # Hello.new(123)
192
192
  # @param [Number] transaction_id
@@ -199,6 +199,29 @@ module Overloading
199
199
  # @param [Hash] user_options the options to create a message with.
200
200
  # @option user_options [Number] :transaction_id
201
201
  # @option user_options [Number] :xid an alias to transaction_id.
202
+ def params_also_in_overloads(user_options = {})
203
+ end
204
+
205
+ # Tests that the default signature can be present as an overload tag.
206
+ #
207
+ # @overload params_only_in_overloads()
208
+ # @example
209
+ # Hello.new
210
+ #
211
+ # @overload params_only_in_overloads(transaction_id)
212
+ # @example
213
+ # Hello.new(123)
214
+ # @param [Number] transaction_id
215
+ # An unsigned 32-bit integer number associated with this
216
+ # message. If not specified, an auto-generated value is set.
217
+ #
218
+ # @overload params_only_in_overloads(user_options)
219
+ # @example
220
+ # Hello.new(transaction_id: 123)
221
+ # Hello.new(xid: 123)
222
+ # @param [Hash] user_options the options to create a message with.
223
+ # @option user_options [Number] :transaction_id
224
+ # @option user_options [Number] :xid an alias to transaction_id.
202
225
  def params_only_in_overloads(user_options = {})
203
226
  end
204
227
  end
@@ -7,34 +7,62 @@ describe ::Inch::CodeObject::Provider::YARD::Parser do
7
7
  @objects = @parser.objects
8
8
  end
9
9
 
10
- it "should work for Overloading#params_only_in_overloads" do
11
- m = @objects.detect { |o| o.fullname == 'Overloading#params_only_in_overloads' }
10
+ it "should work for Overloading#params_also_in_overloads" do
11
+ m = @objects.detect { |o| o.fullname == 'Overloading#params_also_in_overloads' }
12
12
 
13
13
  assert m.has_code_example?
14
14
 
15
- refute m.signatures.empty?
16
15
  assert_equal 3, m.signatures.size
17
16
  assert_equal 2, m.parameters.size # at this moment, this counts all parameters in all overloaded signatures
18
17
 
19
18
  signature = m.signatures[0]
20
- assert_equal "params_only_in_overloads(user_options = {})", signature.signature
19
+ assert_equal "params_also_in_overloads(user_options = {})", signature.signature
21
20
  assert_equal 1, signature.parameters.size
22
21
  refute signature.parameter(:user_options).nil?
23
22
  assert signature.has_code_example?
24
23
  assert signature.has_doc?
25
24
 
26
25
  signature = m.signatures[1]
27
- assert_equal "params_only_in_overloads()", signature.signature
26
+ assert_equal "params_also_in_overloads()", signature.signature
28
27
  assert signature.parameters.empty?, "Should have been empty: #{signature.parameters.inspect}"
29
28
  assert signature.has_code_example?
30
29
  refute signature.has_doc?
31
30
 
32
31
  signature = m.signatures[2]
32
+ assert_equal "params_also_in_overloads(transaction_id)", signature.signature
33
+ assert_equal 1, signature.parameters.size
34
+ refute signature.parameter(:transaction_id).nil?
35
+ assert signature.has_code_example?
36
+ refute signature.has_doc?
37
+ end
38
+
39
+ it "should work for Overloading#params_only_in_overloads" do
40
+ m = @objects.detect { |o| o.fullname == 'Overloading#params_only_in_overloads' }
41
+
42
+ assert m.has_code_example?
43
+
44
+ assert_equal 3, m.signatures.size
45
+ assert_equal 2, m.parameters.size # at this moment, this counts all parameters in all overloaded signatures
46
+
47
+ signature = m.signatures[0]
48
+ assert_equal "params_only_in_overloads()", signature.signature
49
+ assert signature.parameters.empty?, "Should have been empty: #{signature.parameters.inspect}"
50
+ assert signature.has_code_example?
51
+ refute signature.has_doc?
52
+
53
+ signature = m.signatures[1]
33
54
  assert_equal "params_only_in_overloads(transaction_id)", signature.signature
34
55
  assert_equal 1, signature.parameters.size
35
56
  refute signature.parameter(:transaction_id).nil?
36
57
  assert signature.has_code_example?
37
58
  refute signature.has_doc?
59
+
60
+ signature = m.signatures[2]
61
+ assert_equal "params_only_in_overloads(user_options)", signature.signature
62
+ assert_equal 1, signature.parameters.size
63
+ refute signature.parameter(:user_options).nil?
64
+ assert signature.has_code_example?
65
+ #assert signature.has_doc?
38
66
  end
39
67
 
40
68
  it "should work" do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: inch
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.3.rc1
4
+ version: 0.4.3.rc2
5
5
  platform: ruby
6
6
  authors:
7
7
  - René Föhring
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-25 00:00:00.000000000 Z
11
+ date: 2014-04-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler