mealib 0.1.0 → 1.0.0

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: 59fe9fdc843f31b1f435c4810c1712f5d947fbcec6e7fd3c4d8800ce7df9f10e
4
- data.tar.gz: 284d947973a7cd84471535d1e54fb52cbb498bfe9279e04c1082d0c278de84ca
3
+ metadata.gz: 7ff7ddd718879b0d25a984ffb27775b4fe75801d6d798e404cf5241a6fe727cf
4
+ data.tar.gz: a49286f7887760301878f98be9fe7100518c1e14236bddfeba656b90b65a4344
5
5
  SHA512:
6
- metadata.gz: 7223f57b7ae359591689621f082a009b44b1d9899ee365ffd0ede6858e3ae33ad7d4cd63c22ca58832462c2d158040f1c6fe8ac8a479a9229db76781e204b0de
7
- data.tar.gz: 9dbebed80e16a562ee93f0346f833287f2023b342584bf53abbecbde3bb54480cf46cd46de6fa35ebf3f6e8d11ce0099133525a533fb66ff6e376a1eab6429ac
6
+ metadata.gz: 77979d02e2257d148278949318598ff9a318e84a76111496ddb7c02be611c977db2c94f0066d2e3be7b2d847cf7a19604b65ae48c1a18f8668e47002235119cc
7
+ data.tar.gz: 4231c29c6bf5eb36045d0366a3fd17622f5ba13593bdd9d9d83ad367aea60ac610fcc2c202e6648553e5913fb7442900d13d18a8bc50b7659e5ed26534fc3528
@@ -0,0 +1,55 @@
1
+ class Hash
2
+
3
+ def camelcase_keys(type: :symbol, first: :lower)
4
+ transform_keys &camelcase_proc(type: type, first: first)
5
+ end
6
+
7
+
8
+ def camelcase_keys!(type: :symbol, first: :lower)
9
+ transform_keys! &camelcase_proc(type: type, first: first)
10
+ end
11
+
12
+
13
+ def deep_camelcase_keys(type: :symbol, first: :lower)
14
+ deep_transform_keys &camelcase_proc(type: type, first: first)
15
+ end
16
+
17
+
18
+ def deep_camelcase_keys!(type: :symbol, first: :lower)
19
+ deep_transform_keys! &camelcase_proc(type: type, first: first)
20
+ end
21
+
22
+
23
+ def underscore_keys!(symbol = false)
24
+ transform_keys! &underscore_proc(symbol)
25
+ end
26
+
27
+
28
+ def underscore_keys(symbol = false)
29
+ self.dup.underscore_keys(symbol)
30
+ end
31
+
32
+
33
+ def deep_underscore_keys!(symbol = false)
34
+ deep_transform_keys! &underscore_proc(symbol)
35
+ end
36
+
37
+
38
+ def deep_underscore_keys(symbol = false)
39
+ self.dup.deep_underscore_keys!(symbol)
40
+ end
41
+
42
+
43
+ private
44
+
45
+
46
+ def camelcase_proc(type: :symbol, first: :lower)
47
+ proc { |key| type == :symbol ? key.to_s.camelcase(first).to_sym : key.to_s.camelcase(first) }
48
+ end
49
+
50
+
51
+ def underscore_proc(symbol)
52
+ proc { |key| new_key = key.to_s.underscore; symbol ? new_key.to_sym : new_key }
53
+ end
54
+
55
+ end
@@ -3,33 +3,6 @@ lambda do
3
3
  lib_path = '%s/**/*.rb' % File.expand_path('../mealib', __FILE__)
4
4
  # noinspection RubyResolve
5
5
  Dir[lib_path].each { |f| require_relative f }
6
-
7
- require_relative 'dry/errors'
8
- require_relative 'dry/schema'
9
- require_relative 'dry/rule'
10
-
11
- require_relative 'dry/rules/binary'
12
- require_relative 'dry/rules/composite'
13
- require_relative 'dry/rules/between'
14
- require_relative 'dry/rules/min_length'
15
- require_relative 'dry/rules/greater_than'
16
- require_relative 'dry/rules/not_equal'
17
- require_relative 'dry/rules/less_than'
18
- require_relative 'dry/rules/greater_than_or_equal'
19
- require_relative 'dry/rules/collection'
20
- require_relative 'dry/rules/length_between'
21
- require_relative 'dry/rules/or'
22
- require_relative 'dry/rules/and'
23
- require_relative 'dry/rules/less_than_or_equal'
24
- require_relative 'dry/rules/then'
25
- require_relative 'dry/rules/format'
26
- require_relative 'dry/rules/present'
27
- require_relative 'dry/rules/length_equal'
28
- require_relative 'dry/rules/included'
29
- require_relative 'dry/rules/equal'
30
- require_relative 'dry/rules/max_length'
31
-
32
- require_relative 'dry/rules_factory'
33
6
  end.call
34
7
 
35
8
  # загружаем все классы из директории app
@@ -1,3 +1,3 @@
1
1
  module Mealib
2
- VERSION = "0.1.0"
2
+ VERSION = "1.0.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mealib
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - C80609A
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-06-26 00:00:00.000000000 Z
11
+ date: 2020-12-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -54,31 +54,8 @@ files:
54
54
  - bin/console
55
55
  - bin/rails
56
56
  - bin/setup
57
+ - config/initializers/core_ext/hash.rb
57
58
  - config/initializers/core_ext/string.rb
58
- - lib/dry/errors.rb
59
- - lib/dry/rule.rb
60
- - lib/dry/rules/and.rb
61
- - lib/dry/rules/between.rb
62
- - lib/dry/rules/binary.rb
63
- - lib/dry/rules/collection.rb
64
- - lib/dry/rules/composite.rb
65
- - lib/dry/rules/equal.rb
66
- - lib/dry/rules/format.rb
67
- - lib/dry/rules/greater_than.rb
68
- - lib/dry/rules/greater_than_or_equal.rb
69
- - lib/dry/rules/included.rb
70
- - lib/dry/rules/length_between.rb
71
- - lib/dry/rules/length_equal.rb
72
- - lib/dry/rules/less_than.rb
73
- - lib/dry/rules/less_than_or_equal.rb
74
- - lib/dry/rules/max_length.rb
75
- - lib/dry/rules/min_length.rb
76
- - lib/dry/rules/not_equal.rb
77
- - lib/dry/rules/or.rb
78
- - lib/dry/rules/present.rb
79
- - lib/dry/rules/then.rb
80
- - lib/dry/rules_factory.rb
81
- - lib/dry/schema.rb
82
59
  - lib/mealib.rb
83
60
  - lib/mealib/abstract_serializer.rb
84
61
  - lib/mealib/dict.rb
@@ -1,77 +0,0 @@
1
- module Dry
2
- class Errors
3
-
4
- attr_reader :messages
5
-
6
- def initialize(messages = {})
7
- @messages = messages
8
- end
9
-
10
-
11
- def add(key, message)
12
- keys = key.to_s.split('.').map!(&:to_sym)
13
- old = messages.dig(*keys[0...-1]) rescue {}
14
- old = {} unless old.is_a?(Hash)
15
- new = keys[0...-1].inject(messages) { |h, k| h[k] ||= {} rescue h = {}; h[k] = {} }
16
- new[keys.last] = [] unless new.is_a?(Array)
17
- new[keys.last] << message
18
- new.merge!(old)
19
- end
20
-
21
-
22
- def merge!(error, parent_key = nil)
23
- hash_to_dots(error.messages, {}, parent_key).each do |key, messages|
24
- messages.each { |message| add(key, message) }
25
- end
26
- messages
27
- end
28
-
29
-
30
- def any?
31
- messages.any?
32
- end
33
-
34
-
35
- def has_key?(key)
36
- keys = key.to_s.split('.').map!(&:to_sym)
37
- keys.size == 1 ? messages[keys.first].present? : (messages.dig(*keys[0...-1])[keys.last].present? rescue false)
38
- end
39
-
40
-
41
- def first_message
42
- fetch_messages(messages.values.first).first
43
- end
44
-
45
-
46
- def clone
47
- self.class.new(messages.clone)
48
- end
49
-
50
-
51
- private
52
-
53
-
54
- def hash_to_dots(hash, results = {}, start_key = '')
55
- hash.each do |key, value|
56
- key = key.to_s
57
- key_value = start_key.present? ? sprintf('%s.%s', start_key, key) : key
58
- if value.is_a?(Hash)
59
- results.merge!(hash_to_dots(value, results, key_value))
60
- else
61
- results[key_value] = value
62
- end
63
- end
64
- results
65
- end
66
-
67
-
68
- def fetch_messages(value)
69
- if value.is_a?(Hash)
70
- fetch_messages(value.values.first)
71
- else
72
- value
73
- end
74
- end
75
-
76
- end
77
- end
@@ -1,69 +0,0 @@
1
- module Dry
2
- class Rule
3
-
4
- attr_reader :value, :errors, :args
5
-
6
- def initialize(value, errors = Dry::Errors.new, **args)
7
- @value = value
8
- @errors = errors
9
- @args = args.symbolize_keys
10
- end
11
-
12
-
13
- def name
14
- args[:name]
15
- end
16
-
17
-
18
- def add_error
19
- errors.add(key, messages[name.to_s] || 'invalid')
20
- end
21
-
22
-
23
- def clone
24
- self.class.new(value, errors.clone, args)
25
- end
26
-
27
-
28
- def and(right)
29
- Dry::Rules::And.new(self, errors, args.merge(right: right))
30
- end
31
- alias :& :and
32
-
33
-
34
- def then(right)
35
- Dry::Rules::Then.new(self, errors, args.merge(right: right))
36
- end
37
- alias :> :then
38
-
39
-
40
- def or(right)
41
- Dry::Rules::Or.new(self, errors, args.merge(right: right))
42
- end
43
- alias :| :or
44
-
45
-
46
- def +(right)
47
- Dry::Rules::Collection.new(self, errors, args.merge(right: right))
48
- end
49
-
50
-
51
- def valid?
52
- raise NotImplementedError
53
- end
54
-
55
-
56
- private
57
-
58
-
59
- def messages
60
- @messages ||= (args[:messages] || {}).deep_stringify_keys
61
- end
62
-
63
-
64
- def key
65
- @key ||= args[:key] || (raise 'Missing required param "key"')
66
- end
67
-
68
- end
69
- end
@@ -1,11 +0,0 @@
1
- module Dry
2
- module Rules
3
- class And < Dry::Rules::Composite
4
-
5
- def valid?
6
- left.valid? && right.valid? ? true : false
7
- end
8
-
9
- end
10
- end
11
- end
@@ -1,18 +0,0 @@
1
- module Dry
2
- module Rules
3
- class Between < Dry::Rules::Binary
4
-
5
- def valid?
6
- return true if right.include? left
7
- add_error
8
- false
9
- end
10
-
11
-
12
- def name
13
- 'between'
14
- end
15
-
16
- end
17
- end
18
- end
@@ -1,16 +0,0 @@
1
- module Dry
2
- module Rules
3
- class Binary < Dry::Rule
4
-
5
- def right
6
- args[:right]
7
- end
8
-
9
-
10
- def left
11
- value
12
- end
13
-
14
- end
15
- end
16
- end
@@ -1,16 +0,0 @@
1
- module Dry
2
- module Rules
3
- class Collection < Dry::Rules::Binary
4
-
5
- def valid?
6
- is_valid = true
7
- [left, right].each do |rule|
8
- res = rule.valid?
9
- is_valid = res unless res
10
- end
11
- is_valid
12
- end
13
-
14
- end
15
- end
16
- end
@@ -1,19 +0,0 @@
1
- module Dry
2
- module Rules
3
- class Composite < Dry::Rules::Binary
4
-
5
- private
6
-
7
-
8
- def lt
9
- @lt ||= left.clone
10
- end
11
-
12
-
13
- def rt
14
- @rt ||= right.clone
15
- end
16
-
17
- end
18
- end
19
- end
@@ -1,18 +0,0 @@
1
- module Dry
2
- module Rules
3
- class Equal < Dry::Rules::Binary
4
-
5
- def valid?
6
- return true if left.eql?(right)
7
- add_error
8
- false
9
- end
10
-
11
-
12
- def name
13
- 'eq'
14
- end
15
-
16
- end
17
- end
18
- end
@@ -1,18 +0,0 @@
1
- module Dry
2
- module Rules
3
- class Format < Dry::Rules::Binary
4
-
5
- def valid?
6
- return true if left.to_s.match(right).present?
7
- add_error
8
- false
9
- end
10
-
11
-
12
- def name
13
- 'format'
14
- end
15
-
16
- end
17
- end
18
- end
@@ -1,18 +0,0 @@
1
- module Dry
2
- module Rules
3
- class GreaterThan < Dry::Rules::Binary
4
-
5
- def valid?
6
- return true if left > right
7
- add_error
8
- false
9
- end
10
-
11
-
12
- def name
13
- 'gt'
14
- end
15
-
16
- end
17
- end
18
- end
@@ -1,18 +0,0 @@
1
- module Dry
2
- module Rules
3
- class GreaterThanOrEqual < Dry::Rules::Binary
4
-
5
- def valid?
6
- return true if left >= right
7
- add_error
8
- false
9
- end
10
-
11
-
12
- def name
13
- 'gt_eq'
14
- end
15
-
16
- end
17
- end
18
- end
@@ -1,18 +0,0 @@
1
- module Dry
2
- module Rules
3
- class Included < Dry::Rules::Binary
4
-
5
- def valid?
6
- return true if right.include?(left)
7
- add_error
8
- false
9
- end
10
-
11
-
12
- def name
13
- 'included'
14
- end
15
-
16
- end
17
- end
18
- end
@@ -1,18 +0,0 @@
1
- module Dry
2
- module Rules
3
- class LengthBetween < Dry::Rules::Binary
4
-
5
- def valid?
6
- return true if right.include? left.size
7
- add_error
8
- false
9
- end
10
-
11
-
12
- def name
13
- 'length_between'
14
- end
15
-
16
- end
17
- end
18
- end
@@ -1,18 +0,0 @@
1
- module Dry
2
- module Rules
3
- class LengthEqual < Dry::Rules::Binary
4
-
5
- def valid?
6
- return true if left.size == right
7
- add_error
8
- false
9
- end
10
-
11
-
12
- def name
13
- 'length_equal'
14
- end
15
-
16
- end
17
- end
18
- end
@@ -1,18 +0,0 @@
1
- module Dry
2
- module Rules
3
- class LessThan < Dry::Rules::Binary
4
-
5
- def valid?
6
- return true if left < right
7
- add_error
8
- false
9
- end
10
-
11
-
12
- def name
13
- 'lt'
14
- end
15
-
16
- end
17
- end
18
- end
@@ -1,18 +0,0 @@
1
- module Dry
2
- module Rules
3
- class LessThanOrEqual < Dry::Rules::Binary
4
-
5
- def valid?
6
- return true if left <= right
7
- add_error
8
- false
9
- end
10
-
11
-
12
- def name
13
- 'lt_eq'
14
- end
15
-
16
- end
17
- end
18
- end
@@ -1,18 +0,0 @@
1
- module Dry
2
- module Rules
3
- class MaxLength < Dry::Rules::Binary
4
-
5
- def valid?
6
- return true if left.size <= right
7
- add_error
8
- false
9
- end
10
-
11
-
12
- def name
13
- 'max_length'
14
- end
15
-
16
- end
17
- end
18
- end
@@ -1,18 +0,0 @@
1
- module Dry
2
- module Rules
3
- class MinLength < Dry::Rules::Binary
4
-
5
- def valid?
6
- return true if left.size >= right
7
- add_error
8
- false
9
- end
10
-
11
-
12
- def name
13
- 'min_length'
14
- end
15
-
16
- end
17
- end
18
- end
@@ -1,18 +0,0 @@
1
- module Dry
2
- module Rules
3
- class NotEqual < Dry::Rules::Binary
4
-
5
- def valid?
6
- return true unless left.eql?(right)
7
- add_error
8
- false
9
- end
10
-
11
-
12
- def name
13
- 'not_eq'
14
- end
15
-
16
- end
17
- end
18
- end
@@ -1,13 +0,0 @@
1
- module Dry
2
- module Rules
3
- class Or < Dry::Rules::Composite
4
-
5
- def valid?
6
- return true if lt.valid? || rt.valid?
7
- [lt.errors, rt.errors].each { |e| errors.merge!(e) if e.any? }
8
- false
9
- end
10
-
11
- end
12
- end
13
- end
@@ -1,21 +0,0 @@
1
- module Dry
2
- module Rules
3
- class Present < Dry::Rule
4
-
5
- def valid?
6
- return true if value.present?
7
- add_error
8
- false
9
- end
10
-
11
-
12
- private
13
-
14
-
15
- def name
16
- 'present'
17
- end
18
-
19
- end
20
- end
21
- end
@@ -1,13 +0,0 @@
1
- module Dry
2
- module Rules
3
- class Then < Dry::Rules::Composite
4
-
5
- def valid?
6
- return true if (!lt.valid? || rt.valid?)
7
- errors.merge!(rt.errors)
8
- false
9
- end
10
-
11
- end
12
- end
13
- end
@@ -1,118 +0,0 @@
1
- module Dry
2
- class RulesFactory
3
-
4
- attr_reader :value, :errors, :args
5
-
6
- def initialize(value, errors = Dry::Errors.new, **args)
7
- @value = value
8
- @errors = errors
9
- @args = args.symbolize_keys
10
- end
11
-
12
-
13
- def present?
14
- Dry::Rules::Present.new(value, errors, args)
15
- end
16
-
17
-
18
- def equal?(right)
19
- Dry::Rules::Equal.new(value, errors, build_args(right))
20
- end
21
- alias :eq? :equal?
22
-
23
-
24
- def not_equal?(right)
25
- Dry::Rules::NotEqual.new(value, errors, build_args(right))
26
- end
27
- alias :not_eq? :not_equal?
28
-
29
-
30
- def greater_than?(right)
31
- Dry::Rules::GreaterThan.new(value, errors, build_args(right))
32
- end
33
- alias :gt? :greater_than?
34
-
35
-
36
- def greater_than_or_equal?(right)
37
- Dry::Rules::GreaterThanOrEqual.new(value, errors, build_args(right))
38
- end
39
- alias :gt_eq? :greater_than_or_equal?
40
-
41
-
42
- def less_than?(right)
43
- Dry::Rules::LessThan.new(value, errors, build_args(right))
44
- end
45
- alias :lt? :less_than?
46
-
47
-
48
- def less_than_or_equal?(right)
49
- Dry::Rules::LessThanOrEqual.new(value, errors, build_args(right))
50
- end
51
- alias :lt_eq? :less_than_or_equal?
52
-
53
-
54
- def included?(right)
55
- Dry::Rules::Included.new(value, errors, build_args(right))
56
- end
57
-
58
-
59
- def length_equal?(right)
60
- Dry::Rules::LengthEqual.new(value, errors, build_args(right))
61
- end
62
-
63
-
64
- def min_length?(right)
65
- Dry::Rules::MinLength.new(value, errors, build_args(right))
66
- end
67
-
68
-
69
- def max_length?(right)
70
- Dry::Rules::MaxLength.new(value, errors, build_args(right))
71
- end
72
-
73
-
74
- def between?(right)
75
- Dry::Rules::Between.new(value, errors, build_args(right))
76
- end
77
-
78
-
79
- def length_between?(right)
80
- Dry::Rules::LengthBetween.new(value, errors, build_args(right))
81
- end
82
-
83
-
84
- def format?(right)
85
- Dry::Rules::Format.new(value, errors, build_args(right))
86
- end
87
-
88
-
89
- def each(&block)
90
- return if value.blank?
91
- value.inject(nil) do |rule, e|
92
- _rule = self.class.new(e, errors, args).instance_exec(&block)
93
- rule = rule ? rule & _rule : _rule
94
- rule
95
- end
96
- end
97
-
98
-
99
- def each_value(&block)
100
- return if value.blank?
101
- value.inject(nil) do |rule, (k, v)|
102
- _rule = self.class.new(v, errors, args).instance_exec(&block)
103
- rule = rule ? rule & _rule : _rule
104
- rule
105
- end
106
- end
107
-
108
-
109
- private
110
-
111
-
112
- def build_args(right)
113
- rt = right.is_a?(self.class) ? right.value : right
114
- args.merge(right: rt)
115
- end
116
-
117
- end
118
- end
@@ -1,148 +0,0 @@
1
- module Dry
2
- module Schema
3
-
4
- attr_reader :attributes, :errors
5
-
6
- def initialize(params)
7
- @errors = Dry::Errors.new
8
- @attributes = cast({ wrap: params }.deep_symbolize_keys[:wrap], schema)
9
- JSON::Validator.validate!(schema, attributes)
10
- end
11
-
12
-
13
- def [](key)
14
- attributes[key.to_sym]
15
- end
16
-
17
-
18
- def valid?
19
- validate_attributes(attributes, schema)
20
- validate_additional
21
- !errors.any?
22
- end
23
-
24
-
25
- def schema
26
- raise NotImplemented
27
- end
28
-
29
-
30
- private
31
-
32
-
33
- def validate_additional
34
- end
35
-
36
-
37
- def validate_attributes(props, schema, parents = [], key = nil)
38
- case props
39
- when Dry::Schema
40
- errors.merge!(props.errors, (parents + [key]).compact.join('.')) unless props.valid?
41
- else
42
- [schema[:rule]].flatten.compact.each do |rule|
43
- rule = rule.arity == 0 ? rule(key, parents, &rule) : rule.call(parents)
44
- rule.valid? if rule
45
- end
46
- end
47
-
48
- if schema[:properties]
49
- (schema[:properties] || {}).each do |_key, data|
50
- validate_attributes((props.present? ? props : {})[_key.to_sym], data, (parents + [key]).compact, _key)
51
- end
52
- elsif schema[:items]
53
- (props.present? ? props : []).each_with_index do |e, i|
54
- validate_attributes(e, schema[:items], (parents + [key]).compact, i)
55
- end
56
- end
57
-
58
- if schema[:oneOf] || schema[:allOf] || schema[:anyOf]
59
- [:oneOf, :allOf, :anyOf].each do |k|
60
- s = schema[k]
61
- case s
62
- when Hash
63
- validate_attributes(props, s, parents, key)
64
- when Array
65
- s.each { |_s| validate_attributes(props, _s, parents, key) if _s.is_a?(Hash) }
66
- else
67
- end
68
- end
69
- end
70
- end
71
-
72
-
73
- def cast(params, schema)
74
- props = schema.is_a?(Hash) && schema[:cast] ? schema[:cast].call(params) : params
75
-
76
- case props
77
- when Hash
78
- props.each_with_object({}) do |(key, value), result|
79
- result[key] = find_schemas_for_attribute(key, schema).inject((value.dup rescue value)) do
80
- |_value, _schema| _value = cast(_value, _schema); _value
81
- end
82
- end
83
- when Array
84
- props.map { |e| cast(e, (schema[:items] rescue nil)) }
85
- else
86
- props
87
- end
88
- end
89
-
90
-
91
- def rule(attrs, parents, messages = {}, name = nil, &block)
92
- if block.arity == 0
93
- _attrs = [attrs].flatten.compact
94
- raise 'Invalid rule' if _attrs.size > 1
95
- single_rule(parents + _attrs, messages, &block)
96
- else
97
- multi_rule(attrs, parents, messages, name, &block)
98
- end
99
- end
100
-
101
-
102
- def single_rule(keys, messages = {}, &block)
103
- value = attributes.dig(*keys) rescue nil
104
- factory = Dry::RulesFactory.new(value, errors, key: keys.join('.'), messages: messages)
105
- factory.instance_exec &block
106
- end
107
-
108
-
109
- def multi_rule(keys, parents, messages = {}, name = nil, &block)
110
- _keys = [keys].flatten.compact
111
- data = parents.present? ? attributes.dig(*parents) : attributes
112
-
113
- data = _keys.inject({}) do |res, key|
114
- res[key.to_sym] = data[key.to_sym] rescue nil; res
115
- end
116
-
117
- factories = data.map do |key, value|
118
- _key = name || key
119
- _key = (parents + [_key]).join('.')
120
- Dry::RulesFactory.new(value, errors, key: _key, messages: messages)
121
- end
122
-
123
- block.call *factories
124
- end
125
-
126
-
127
- def find_schemas_for_attribute(key, schema, schemas = [])
128
- case schema
129
- when Hash
130
- s = schema[:properties][key] rescue nil
131
- schemas << s if s
132
- [:allOf, :anyOf, :oneOf].each { |k| find_schemas_for_attribute(key, schema[k], schemas) }
133
- when Array
134
- schema.each { |s| find_schemas_for_attribute(key, s, schemas) }
135
- else
136
- end
137
-
138
-
139
- schemas
140
- end
141
-
142
-
143
- def method_missing(method)
144
- attributes[method.to_sym]
145
- end
146
-
147
- end
148
- end