yarrow 0.7.5 → 0.7.6

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