rfunk 1.3.2 → 1.4.0

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: fc26308719f1b6cf6ed53cd81ece766ed60ed018
4
- data.tar.gz: 0afa0c48191b3a39c823e1017929d8003f7a185f
3
+ metadata.gz: 4b5447322ac1833162ac06dac237b8b44cb4c5a9
4
+ data.tar.gz: 1692b4f6f46cf8429a8b9a4b9b8e9abfe1d9a955
5
5
  SHA512:
6
- metadata.gz: 30138d9602df5a5b7baf9b317c13976936ff3813d052512b2f8f2ec984f6ce31528af1e0dd107a2eec35cd803ffcf3acbad775f3dbc2581eba5d83b19e21b99c
7
- data.tar.gz: 13d30eb52a1504b0cf3d0975ed1af430d99be6164c637f475ec8655b2a25b9fa59e8dc618cafb657307f6318c92a508a27a769f63925931bbfe030a7c06ef4d7
6
+ metadata.gz: 3a8c0f8505a6de0526f0bf303bf573fe2da1adc988bf61e02aa40d3bb7602e560c7fdd227f94cdece90950c8251f0eaf3efdffb6849fa9c0fb95e26f37d38782
7
+ data.tar.gz: 142da352a33aa1ffe2cb23f26c3db2c178053ab219b7431f6b0872dcbc20c64a8c4e68d5374f592260fa7a5bb27f8167c477716ba45579fd59335a897ad5c35c
@@ -4,16 +4,16 @@ module RFunk
4
4
  raise type, 'The condition was not met!' unless value
5
5
  end
6
6
 
7
- def raise_expected_return_type(name, value, type)
8
- raise_return_type_with_message name, value, type, 'return'
7
+ def raise_expected_return_type(name, value, types)
8
+ raise_return_type_with_message name, value, types, 'return'
9
9
  end
10
10
 
11
- def raise_expected_attribute_type(name, value, type)
12
- raise_return_type_with_message name, value, type, 'attribute'
11
+ def raise_expected_attribute_type(name, value, types)
12
+ raise_return_type_with_message name, value, types, 'attribute'
13
13
  end
14
14
 
15
- def raise_expected_parameter_type(name, value, type)
16
- raise_return_type_with_message name, value, type, 'parameter'
15
+ def raise_expected_parameter_type(name, value, types)
16
+ raise_return_type_with_message name, value, types, 'parameter'
17
17
  end
18
18
 
19
19
  def raise_not_found(key, attributes)
@@ -30,13 +30,15 @@ module RFunk
30
30
 
31
31
  private
32
32
 
33
- def raise_return_type_with_message(name, value, type, message)
34
- case value
35
- when RFunk::Some
36
- expected_type?(name, value.value, type, message)
37
- when RFunk::None
38
- else
39
- expected_type?(name, value, type, message)
33
+ def raise_return_type_with_message(name, value, types, message)
34
+ Array(types).each do |type|
35
+ case value
36
+ when RFunk::Some
37
+ expected_type?(name, value.value, type, message)
38
+ when RFunk::None
39
+ else
40
+ expected_type?(name, value, type, message)
41
+ end
40
42
  end
41
43
  end
42
44
 
@@ -3,24 +3,15 @@ module RFunk
3
3
  attr_reader :parameters, :return
4
4
 
5
5
  def initialize(annotation)
6
- option = RFunk::Option(annotation)
7
- split = option.split('->')
8
- parameters = split.select { |v| v.count == 2 }
9
-
10
- @parameters = create_parameters(parameters)
11
- @return = create_return(split)
6
+ split = (annotation || '').split('->').map(&:strip)
7
+ @parameters = create_types(split.length > 1 ? Array(split.first) : [])
8
+ @return = create_types(Array(split.last))
12
9
  end
13
10
 
14
11
  private
15
12
 
16
- def create_parameters(parameters)
17
- parameters.flat_map { |v| v[0].split(',').map { |p| Object.const_get(p.strip) } }
18
- end
19
-
20
- def create_return(split)
21
- RFunk::Option(split.map do |v|
22
- v.count == 2 ? Object.const_get(v[1].strip) : Object.const_get(v[0].strip)
23
- end.first).value
13
+ def create_types(parameters)
14
+ parameters.flat_map { |v| v.split(',') }.map(&:strip).map { |p| Object.const_get(p) }
24
15
  end
25
16
  end
26
17
  end
@@ -18,10 +18,6 @@ module RFunk
18
18
  self
19
19
  end
20
20
 
21
- def respond_to_missing?(method_name, include_private = false)
22
- super
23
- end
24
-
25
21
  def coerce(other)
26
22
  [other, 0]
27
23
  end
@@ -22,6 +22,10 @@ module RFunk
22
22
  private
23
23
 
24
24
  def nothing?(value)
25
- value.nil? || (value.respond_to?(:empty?) && value.empty?) || value == RFunk::None.instance
25
+ value.nil? || empty?(value) || value == RFunk::None.instance
26
+ end
27
+
28
+ def empty?(value)
29
+ value.respond_to?(:empty?) && value.empty?
26
30
  end
27
31
  end
@@ -23,14 +23,9 @@ module RFunk
23
23
  RFunk::Option(value.send(method, *arguments, &block))
24
24
  end
25
25
 
26
- def respond_to_missing?(method_name, include_private = false)
27
- value.respond_to_missing?(method_name, include_private)
28
- end
29
-
30
26
  def ==(other)
31
27
  return false unless self.class == other.class
32
-
33
- value == other.value
28
+ value == Option(other).value
34
29
  end
35
30
 
36
31
  def <=>(other)
@@ -48,7 +43,13 @@ module RFunk
48
43
  protected
49
44
 
50
45
  def enum
51
- [value]
46
+ enumerable? ? value : [value]
47
+ end
48
+
49
+ private
50
+
51
+ def enumerable?
52
+ value.is_a?(Enumerable)
52
53
  end
53
54
  end
54
55
 
data/lib/rfunk/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module RFunk
2
- VERSION = '1.3.2'.freeze
2
+ VERSION = '1.4.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rfunk
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.2
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Falkowski
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-01-17 00:00:00.000000000 Z
11
+ date: 2017-01-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ice_nine