yarrow 0.7.5 → 0.7.6

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
  SHA256:
3
- metadata.gz: b067dcc24e059e6d5cfe506e6a3fc30b5679eb05e494ce842e515710ff60d170
4
- data.tar.gz: c185b1f52f5b7aa173b26b179d47457f7705ef91460abd046ce3c81fa4733930
3
+ metadata.gz: 0dba4f651517ceb22a806d2ac97637327983742ce4d6837ec0cc85cb4b9864c3
4
+ data.tar.gz: d7b2db29b33539da364b386023a662db2e4f5bcc009869444de005ae74f919fb
5
5
  SHA512:
6
- metadata.gz: 33c522da6809b8ffbcd0457082a20a3222b877d086856413b815e141004769fdfc37998903d5f8b5a711dba21614323381fb2021f702082136b3f073b885abbf
7
- data.tar.gz: a9b2a1ae9d015093709c7f64073809a470b058003ea98984ad1f8d6700cc65281e3e8aafc9e03ce9a669adf4e3800385f1727fe57cf5d54e95ac31862b603516
6
+ metadata.gz: 0b6b0550245ef7ac0f752c602bcc1a191a8260cf8e4a3553b77f1a600d82ebf773e97adcaffa2bc1ed1d913af9a32d5d183472fdabcabd9ba3e61a52cc9155eb
7
+ data.tar.gz: '099eeb8f8f90867144ad3ca2586d353b1b69e38af9534923c0856410b944592e48847b49650d0526af724f74851ad8f93205fc2032b864eb1a854c0d3f59475a'
data/lib/yarrow/config.rb CHANGED
@@ -42,6 +42,11 @@ module Yarrow
42
42
  #:root_dir
43
43
  )
44
44
 
45
+ # Content policy
46
+ # Model = Yarrow::Schema::Value.new(
47
+
48
+ # )
49
+
45
50
  # Top level root config namespace.
46
51
  #
47
52
  # `content_dir` and `output_dir` are placeholders and should be overriden
@@ -122,7 +122,73 @@ module Yarrow
122
122
  end
123
123
  end
124
124
 
125
- class Union
125
+ module CompoundType
126
+ def instance(unit_type)
127
+ @unit = Instance.of(unit_type)
128
+ self
129
+ end
130
+
131
+ def kind(unit_type)
132
+ @unit = Kind.of(unit_type)
133
+ self
134
+ end
135
+
136
+ def interface(*args)
137
+ @unit = Interface.of(args)
138
+ self
139
+ end
140
+ end
141
+
142
+ class List < TypeClass
143
+ include CompoundType
144
+
145
+ def self.of(unit_type)
146
+ new(Instance.of(unit_type))
147
+ end
148
+
149
+ def cast(input)
150
+ input.map do |item|
151
+ unit.cast(item)
152
+ end
153
+ end
154
+ end
155
+
156
+ class Map < TypeClass
157
+ include CompoundType
158
+
159
+ def self.of(map_spec)
160
+ if map_spec.is_a?(Hash)
161
+ if map_spec.size == 1
162
+ key_type, value_type = map_spec.first
163
+ else
164
+ raise "map requires a single key => value type"
165
+ end
166
+ else
167
+ key_type = Symbol
168
+ value_type = map_spec
169
+ end
170
+
171
+ new(Instance.of(key_type), Instance.of(value_type))
172
+ end
173
+
174
+ attr_reader :key_type
175
+ alias value_type unit
176
+
177
+ def initialize(key_type, value_type)
178
+ @key_type = key_type
179
+ super(value_type)
180
+ end
181
+
182
+ def check(input)
183
+ keys = input.keys.map do |key|
184
+ key_type.cast(key)
185
+ end
186
+ values = input.values.map do |value|
187
+ value_type.cast(value)
188
+ end
189
+
190
+ [keys, values].transpose.to_h
191
+ end
126
192
  end
127
193
  end
128
194
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
  module Yarrow
3
3
  APP_NAME = 'Yarrow'
4
- VERSION = '0.7.5'
4
+ VERSION = '0.7.6'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yarrow
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.5
4
+ version: 0.7.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mark Rickerby
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-10-09 00:00:00.000000000 Z
11
+ date: 2022-10-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mementus