jimmy 0.3.1 → 0.3.2
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/jimmy/combination.rb +12 -4
- data/lib/jimmy/definitions.rb +4 -0
- data/lib/jimmy/schema_creation.rb +9 -3
- data/lib/jimmy/schema_type.rb +3 -5
- data/lib/jimmy/version.rb +1 -1
- 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: 9a528bcad0fb42079b9497df793dd18e00303651
|
4
|
+
data.tar.gz: e33cea2e53c93a02f99e875b23ff7dda1c54bce3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8789d546ee5e8353f21393331ba1c00bb96d737e2dff463e93d874a895904993870a36d273709215fce5922ec79b53ad3b83e2f3c55f5269a37861be85664eae
|
7
|
+
data.tar.gz: 3d6505a992d4b0239fb737f540a1a30563a00ac62f88ac27a9ef5fcaa87f6bfdb68bd57382980907014516df65d77fefa88205bfcfd2bef63d5376a24682bb2a
|
data/lib/jimmy/combination.rb
CHANGED
@@ -3,12 +3,16 @@ require_relative 'schema_types'
|
|
3
3
|
module Jimmy
|
4
4
|
class Combination < Array
|
5
5
|
|
6
|
-
attr_reader :condition, :
|
6
|
+
attr_reader :condition, :schema
|
7
7
|
|
8
8
|
# @param [Symbol] condition One of :one, :all, or :any
|
9
|
-
def initialize(condition,
|
9
|
+
def initialize(condition, schema)
|
10
10
|
@condition = condition
|
11
|
-
@
|
11
|
+
@schema = schema
|
12
|
+
end
|
13
|
+
|
14
|
+
def domain
|
15
|
+
schema.domain
|
12
16
|
end
|
13
17
|
|
14
18
|
def evaluate(types_proc)
|
@@ -16,7 +20,11 @@ module Jimmy
|
|
16
20
|
end
|
17
21
|
|
18
22
|
def compile
|
19
|
-
|
23
|
+
data.merge "#{condition}Of" => map(&:compile)
|
24
|
+
end
|
25
|
+
|
26
|
+
def data
|
27
|
+
@data ||= {}
|
20
28
|
end
|
21
29
|
|
22
30
|
SchemaCreation.apply_to(self) { |schema| push schema }
|
data/lib/jimmy/definitions.rb
CHANGED
@@ -11,17 +11,17 @@ module Jimmy
|
|
11
11
|
@handlers[klass] = handler
|
12
12
|
%i(one all any).each do |condition|
|
13
13
|
klass.__send__ :define_method, :"#{condition}_of" do |*args, &inner_block|
|
14
|
-
Combination.new(condition,
|
14
|
+
Combination.new(condition, schema).tap do |combo|
|
15
15
|
combo.with_locals(locals) { combo.evaluate inner_block }
|
16
16
|
instance_exec combo, *args, &handler
|
17
17
|
end
|
18
18
|
end
|
19
19
|
end
|
20
|
-
klass.include
|
20
|
+
klass.include DefiningMethods
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
|
-
module
|
24
|
+
module DefiningMethods
|
25
25
|
|
26
26
|
def locals
|
27
27
|
@locals ||= {}
|
@@ -40,6 +40,12 @@ module Jimmy
|
|
40
40
|
locals.key?(method) || reserved?(method, false) || super
|
41
41
|
end
|
42
42
|
|
43
|
+
def set(**values)
|
44
|
+
values.each { |k, v| data[k.to_s] = v }
|
45
|
+
end
|
46
|
+
|
47
|
+
%i[title description default].each { |k| define_method(k) { |v| set k => v } }
|
48
|
+
|
43
49
|
def method_missing(method, *args, &block)
|
44
50
|
return locals[method] if locals.key?(method)
|
45
51
|
|
data/lib/jimmy/schema_type.rb
CHANGED
@@ -63,10 +63,6 @@ module Jimmy
|
|
63
63
|
end
|
64
64
|
end
|
65
65
|
|
66
|
-
def set(**values)
|
67
|
-
values.each { |k, v| schema.data[k.to_s] = v }
|
68
|
-
end
|
69
|
-
|
70
66
|
def definitions(&block)
|
71
67
|
schema.definitions.evaluate &block
|
72
68
|
end
|
@@ -75,7 +71,9 @@ module Jimmy
|
|
75
71
|
definitions { __send__ type, *args, &block }
|
76
72
|
end
|
77
73
|
|
78
|
-
|
74
|
+
def data
|
75
|
+
schema.data
|
76
|
+
end
|
79
77
|
|
80
78
|
def ref(*args, uri)
|
81
79
|
handler = SchemaCreation.handlers[self.class]
|
data/lib/jimmy/version.rb
CHANGED