jimmy 0.4.1 → 0.4.2

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