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 +4 -4
- data/lib/rfunk/attribute/error_checking.rb +15 -13
- data/lib/rfunk/attribute/type_annotation.rb +5 -14
- data/lib/rfunk/maybe/none.rb +0 -4
- data/lib/rfunk/maybe/option.rb +5 -1
- data/lib/rfunk/maybe/some.rb +8 -7
- data/lib/rfunk/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4b5447322ac1833162ac06dac237b8b44cb4c5a9
|
4
|
+
data.tar.gz: 1692b4f6f46cf8429a8b9a4b9b8e9abfe1d9a955
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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,
|
8
|
-
raise_return_type_with_message name, value,
|
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,
|
12
|
-
raise_return_type_with_message name, value,
|
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,
|
16
|
-
raise_return_type_with_message name, value,
|
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,
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
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
|
-
|
7
|
-
|
8
|
-
|
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
|
17
|
-
parameters.flat_map { |v| v
|
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
|
data/lib/rfunk/maybe/none.rb
CHANGED
data/lib/rfunk/maybe/option.rb
CHANGED
@@ -22,6 +22,10 @@ module RFunk
|
|
22
22
|
private
|
23
23
|
|
24
24
|
def nothing?(value)
|
25
|
-
value.nil? ||
|
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
|
data/lib/rfunk/maybe/some.rb
CHANGED
@@ -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
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.
|
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-
|
11
|
+
date: 2017-01-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ice_nine
|