jimmy 0.4.1 → 0.4.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d9a33ee9ed0b7f72d8f48754308e5d9bd61f33a4
4
- data.tar.gz: f3c83b5489a5b51131f416ded556ccf89c88cded
3
+ metadata.gz: 0b29b82478061d92d1ea69b8f5034e6f7ff4e90f
4
+ data.tar.gz: 2dc4b0bfd4c6f612d08b79ba8f80f298bb0e1b71
5
5
  SHA512:
6
- metadata.gz: 3158fb0245caadaa29bc765927db8ee8f6c4a1bf4663637777657b099a3b924be08ea925c02cda4ecc8ee28ab9bd0771cecf6d68f3d6689741afba0a81450c8a
7
- data.tar.gz: f5466c57c1e8482a4760931586b1ded7efc499ade5499b3ba0e9c5c73304cfdac45f875f13a34598c47d9e2abf4bbbc6e65b86a5594259f6a90b182a38e5f351
6
+ metadata.gz: 9f99382d8d00e349241ef5f0aa136b5d485b8a275ec19266faf820fbd0d53850fddc0ec590b4319f05df9eb651db0d6e853bffb95ec8ab84d1aa12f87d44b6a9
7
+ data.tar.gz: 58ea95faddb76c8adbc35825236014646bd3085f2ce769ce056890716ae7d3c041d212561f7d58b012203ac51e843937f3c79573ddb9a68b8d7180e9a883b442
data/lib/jimmy/link.rb CHANGED
@@ -1,3 +1,5 @@
1
+ require 'forwardable'
2
+
1
3
  module Jimmy
2
4
  class Link < Hash
3
5
  attr_reader :schema
@@ -24,6 +26,26 @@ module Jimmy
24
26
  merge schemas.map { |k, v| [(k ? "#{k}Schema" : 'schema'), v.compile] }.to_h
25
27
  end
26
28
 
29
+ def schema_creator
30
+ @schema_creator ||= SchemaCreator.new(self)
31
+ end
32
+
33
+ class SchemaCreator < Hash
34
+ include SchemaCreation::Referencing
35
+ extend Forwardable
36
+ delegate [:schema, :domain] => :@link
37
+
38
+ def initialize(link)
39
+ @link = link
40
+ end
41
+
42
+ def parent
43
+ schema
44
+ end
45
+
46
+ SchemaCreation.apply_to(self) { |schema, prefix| @link.schemas[prefix] = schema }
47
+ end
48
+
27
49
  class DSL
28
50
  attr_reader :link
29
51
 
@@ -47,12 +69,20 @@ module Jimmy
47
69
  instance_exec &block
48
70
  end
49
71
 
50
- def schema(type = :object, prefix = nil, &block)
51
- link.schemas[prefix] = Schema.new(type, link.schema).tap { |s| s.setup &block }
72
+ def schema(*args, prefix: nil, **opts, &block)
73
+ if args.empty? && opts.any?
74
+ args = opts.shift
75
+ type = args.shift
76
+ else
77
+ type = args.shift || :object
78
+ end
79
+ args.unshift type, prefix
80
+ args << opts if opts.any?
81
+ link.schema_creator.__send__ *args, &block
52
82
  end
53
83
 
54
- def target_schema(type = :object, &block)
55
- schema type, :target, &block
84
+ def target_schema(*args, **opts, &block)
85
+ schema *args, **opts.merge(prefix: :target), &block
56
86
  end
57
87
 
58
88
  def set(**values)
data/lib/jimmy/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Jimmy
2
- VERSION = '0.4.1'
2
+ VERSION = '0.4.2'
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.4.1
4
+ version: 0.4.2
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-24 00:00:00.000000000 Z
11
+ date: 2015-08-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json-schema