jimmy 0.3.2 → 0.3.3

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: 9a528bcad0fb42079b9497df793dd18e00303651
4
- data.tar.gz: e33cea2e53c93a02f99e875b23ff7dda1c54bce3
3
+ metadata.gz: 5b1cb2f2d598473a594b870040ab3b022caf9ca4
4
+ data.tar.gz: f283a986673ede842adf3f2e944410005fb87695
5
5
  SHA512:
6
- metadata.gz: 8789d546ee5e8353f21393331ba1c00bb96d737e2dff463e93d874a895904993870a36d273709215fce5922ec79b53ad3b83e2f3c55f5269a37861be85664eae
7
- data.tar.gz: 3d6505a992d4b0239fb737f540a1a30563a00ac62f88ac27a9ef5fcaa87f6bfdb68bd57382980907014516df65d77fefa88205bfcfd2bef63d5376a24682bb2a
6
+ metadata.gz: 49ecc7449f9195e2839429944dcf9aa7e42db540e3cac4cd201f350c72798d27601ba75beee800abb1c7c5c8790e11578703496715322ce3d99eb0d179a75d4f
7
+ data.tar.gz: 12f4c5e48b02c700cb815bed05cf89a5e299cec8ce22907e1345eb51159fbd1e6c5daede18b9d6484b7fcbb5df69bae29dfdf5105ee403a2616f95b85ad3d7c5
@@ -1,9 +1,15 @@
1
+ require 'forwardable'
2
+
1
3
  module Jimmy
2
- class Definitions < Hash
4
+ class Definitions
5
+ extend Forwardable
6
+ delegate %i[empty? key? map] => :@values
7
+
3
8
  attr_reader :schema
4
9
 
5
10
  def initialize(schema)
6
11
  @schema = schema
12
+ @values = {}
7
13
  end
8
14
 
9
15
  def evaluate(&block)
@@ -23,9 +29,9 @@ module Jimmy
23
29
  end
24
30
 
25
31
  def [](key)
26
- super || (schema.parent && schema.parent.definitions[key])
32
+ @values[key] || (schema.parent && schema.parent.definitions[key])
27
33
  end
28
34
 
29
- SchemaCreation.apply_to(self) { |schema, name| self[name] = schema }
35
+ SchemaCreation.apply_to(self) { |schema, name| @values[name] = schema }
30
36
  end
31
37
  end
data/lib/jimmy/schema.rb CHANGED
@@ -32,6 +32,7 @@ module Jimmy
32
32
  {'type' => type.to_s}.tap do |hash|
33
33
  hash['definitions'] = definitions.compile unless definitions.empty?
34
34
  hash['links'] = links.map &:compile unless links.empty?
35
+ hash.merge! data
35
36
  dsl.evaluate compiler, hash if compiler
36
37
  end
37
38
  end
@@ -62,7 +63,6 @@ module Jimmy
62
63
 
63
64
  def to_h
64
65
  {'$schema' => schema_uri}.tap do |h|
65
- h.merge! data
66
66
  h['id'] = url if name
67
67
  h.merge! compile
68
68
  end
@@ -21,7 +21,16 @@ module Jimmy
21
21
  end
22
22
  end
23
23
 
24
+ module MetadataMethods
25
+ def set(**values)
26
+ values.each { |k, v| data[k.to_s] = v }
27
+ end
28
+
29
+ %i[title description default].each { |k| define_method(k) { |v| set k => v } }
30
+ end
31
+
24
32
  module DefiningMethods
33
+ include MetadataMethods
25
34
 
26
35
  def locals
27
36
  @locals ||= {}
@@ -40,12 +49,6 @@ module Jimmy
40
49
  locals.key?(method) || reserved?(method, false) || super
41
50
  end
42
51
 
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
-
49
52
  def method_missing(method, *args, &block)
50
53
  return locals[method] if locals.key?(method)
51
54
 
@@ -37,6 +37,7 @@ module Jimmy
37
37
 
38
38
  class DSL
39
39
  extend Forwardable
40
+ include SchemaCreation::MetadataMethods
40
41
 
41
42
  attr_reader :schema
42
43
 
data/lib/jimmy/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Jimmy
2
- VERSION = '0.3.2'
2
+ VERSION = '0.3.3'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jimmy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Neil E. Pearson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-14 00:00:00.000000000 Z
11
+ date: 2015-08-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json-schema