jimmy 0.3.2 → 0.3.3

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: 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