rfunk 1.3.2 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
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