smart_schema 0.11.0 → 0.12.1

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.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. metadata +60 -71
  3. data/.gitignore +0 -12
  4. data/.rspec +0 -3
  5. data/.rubocop.yml +0 -20
  6. data/CHANGELOG.md +0 -68
  7. data/CODE_OF_CONDUCT.md +0 -74
  8. data/Gemfile +0 -5
  9. data/Gemfile.lock +0 -106
  10. data/LICENSE.txt +0 -21
  11. data/README.md +0 -236
  12. data/Rakefile +0 -21
  13. data/bin/console +0 -8
  14. data/bin/setup +0 -8
  15. data/lib/smart_core/schema/checker/reconciler/constructor.rb +0 -60
  16. data/lib/smart_core/schema/checker/reconciler/matcher/options.rb +0 -33
  17. data/lib/smart_core/schema/checker/reconciler/matcher/result.rb +0 -87
  18. data/lib/smart_core/schema/checker/reconciler/matcher/result_finalizer.rb +0 -186
  19. data/lib/smart_core/schema/checker/reconciler/matcher.rb +0 -62
  20. data/lib/smart_core/schema/checker/reconciler.rb +0 -106
  21. data/lib/smart_core/schema/checker/rules/base.rb +0 -110
  22. data/lib/smart_core/schema/checker/rules/extra_keys/failure.rb +0 -24
  23. data/lib/smart_core/schema/checker/rules/extra_keys/result.rb +0 -37
  24. data/lib/smart_core/schema/checker/rules/extra_keys/success.rb +0 -30
  25. data/lib/smart_core/schema/checker/rules/extra_keys.rb +0 -31
  26. data/lib/smart_core/schema/checker/rules/optional.rb +0 -25
  27. data/lib/smart_core/schema/checker/rules/options/empty.rb +0 -43
  28. data/lib/smart_core/schema/checker/rules/options/filled.rb +0 -49
  29. data/lib/smart_core/schema/checker/rules/options/type.rb +0 -86
  30. data/lib/smart_core/schema/checker/rules/options.rb +0 -60
  31. data/lib/smart_core/schema/checker/rules/required.rb +0 -25
  32. data/lib/smart_core/schema/checker/rules/requirement/optional.rb +0 -36
  33. data/lib/smart_core/schema/checker/rules/requirement/required.rb +0 -36
  34. data/lib/smart_core/schema/checker/rules/requirement/result.rb +0 -95
  35. data/lib/smart_core/schema/checker/rules/requirement.rb +0 -9
  36. data/lib/smart_core/schema/checker/rules/result/base.rb +0 -44
  37. data/lib/smart_core/schema/checker/rules/result/failure.rb +0 -41
  38. data/lib/smart_core/schema/checker/rules/result/success.rb +0 -15
  39. data/lib/smart_core/schema/checker/rules/result.rb +0 -9
  40. data/lib/smart_core/schema/checker/rules/type_aliases.rb +0 -57
  41. data/lib/smart_core/schema/checker/rules/verifier/result.rb +0 -75
  42. data/lib/smart_core/schema/checker/rules/verifier.rb +0 -74
  43. data/lib/smart_core/schema/checker/rules.rb +0 -89
  44. data/lib/smart_core/schema/checker/verifiable_hash.rb +0 -65
  45. data/lib/smart_core/schema/checker.rb +0 -106
  46. data/lib/smart_core/schema/dsl.rb +0 -81
  47. data/lib/smart_core/schema/errors.rb +0 -13
  48. data/lib/smart_core/schema/key_control.rb +0 -39
  49. data/lib/smart_core/schema/result.rb +0 -62
  50. data/lib/smart_core/schema/version.rb +0 -14
  51. data/lib/smart_core/schema.rb +0 -52
  52. data/smart_schema.gemspec +0 -42
@@ -1,106 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # @api private
4
- # @since 0.1.0
5
- # @version 0.8.0
6
- class SmartCore::Schema::Checker::Reconciler
7
- require_relative 'reconciler/constructor'
8
- require_relative 'reconciler/matcher'
9
-
10
- # @return [void]
11
- #
12
- # @api private
13
- # @since 0.1.0
14
- # @version 0.3.0
15
- def initialize
16
- @rules = SmartCore::Schema::Checker::Rules.new
17
- @strict = Constructor::DEFAULT_STRICT_BEHAVIOR
18
- end
19
-
20
- # @param verifiable_hash [SmartCore::Schema::Checker::VerifiableHash]
21
- # @return [void]
22
- #
23
- # @api private
24
- # @since 0.1.0
25
- # @version 0.8.0
26
- def __match!(verifiable_hash)
27
- SmartCore::Schema::Checker::Reconciler::Matcher.match(self, verifiable_hash)
28
- end
29
-
30
- # @return [SmartCore::Schema::Checker::Rules::ExtraKeys]
31
- #
32
- # @api private
33
- # @since 0.1.0
34
- def __extra_keys_contract
35
- SmartCore::Schema::Checker::Rules::ExtraKeys
36
- end
37
-
38
- # @return [SmartCore::Schema::Checker::Rules]
39
- #
40
- # @api private
41
- # @since 0.1.0
42
- # @version 0.8.0
43
- def __contract_rules
44
- rules
45
- end
46
-
47
- # @return [Boolean]
48
- #
49
- # @api private
50
- # @since 0.3.0
51
- # @version 0.8.0
52
- def __strict?
53
- @strict
54
- end
55
-
56
- # @param schema_key [String, Symbol]
57
- # @param nested_definitions [Block]
58
- # @return [SmartCore::Schema::Checker::Rules::Required]
59
- #
60
- # @api public
61
- # @since 0.1.0
62
- # @version 0.8.0
63
- def required(schema_key, &nested_definitions)
64
- rule = SmartCore::Schema::Checker::Rules::Required.new(self, schema_key, &nested_definitions)
65
- rule.tap { rules[rule.schema_key] = rule }
66
- end
67
-
68
- # @param schema_key [String, Symbol]
69
- # @param nested_definitions [Block]
70
- # @return [SmartCore::Schema::Checker::Rules::Optional]
71
- #
72
- # @api public
73
- # @since 0.1.0
74
- # @version 0.8.0
75
- def optional(schema_key, &nested_definitions)
76
- rule = SmartCore::Schema::Checker::Rules::Optional.new(self, schema_key, &nested_definitions)
77
- rule.tap { rules[rule.schema_key] = rule }
78
- end
79
-
80
- # @param is_strict [Boolean]
81
- # @return [void]
82
- #
83
- # @api public
84
- # @since 0.3.0
85
- # @version 0.8.0
86
- def strict!(is_strict = Constructor::DEFAULT_STRICT_BEHAVIOR)
87
- @strict = is_strict
88
- end
89
-
90
- # @return [void]
91
- #
92
- # @api public
93
- # @since 0.3.0
94
- # @version 0.8.0
95
- def non_strict!
96
- strict!(Constructor::STRICT_MODES[:non_strict])
97
- end
98
-
99
- private
100
-
101
- # @return [SmartCore::Schema::Checker::Rules]
102
- #
103
- # @api private
104
- # @since 0.1.0
105
- attr_reader :rules
106
- end
@@ -1,110 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # @api private
4
- # @since 0.1.0
5
- # @version 0.8.0
6
- class SmartCore::Schema::Checker::Rules::Base
7
- # @return [String]
8
- #
9
- # @api private
10
- # @since 0.1.0
11
- attr_reader :schema_key
12
-
13
- # @return [SmartCore::Schema::Checker::Rules::Options]
14
- #
15
- # @api private
16
- # @since 0.1.0
17
- attr_reader :options
18
-
19
- # @return [NilClass, SmartCore::Schema::Checker::Reconciler]
20
- #
21
- # @api private
22
- # @since 0.1.0
23
- attr_reader :nested_reconciler
24
-
25
- # @return [SmartCore::Schema::Checker::Reconciler]
26
- #
27
- # @api private
28
- # @since 0.3.0
29
- attr_reader :root_reconciler
30
-
31
- # @param root_reconciler [SmartCore::Schema::Checker::Reconciler]
32
- # @param schema_key [String, Symbol]
33
- # @param nested_definitions [Block]
34
- # @return [void]
35
- #
36
- # @api private
37
- # @since 0.1.0
38
- # @version 0.8.0
39
- def initialize(root_reconciler, schema_key, &nested_definitions)
40
- @root_reconciler = root_reconciler
41
- @schema_key = SmartCore::Schema::KeyControl.normalize(schema_key)
42
- @options = SmartCore::Schema::Checker::Rules::Options.new(self)
43
- @nested_reconciler = nil
44
- define_nested_reconciler(&nested_definitions)
45
- end
46
-
47
- # @!method requirement
48
- # @return [SmartCore::Schema::Checker::Rules::Requirement::Optional]
49
- # @return [SmartCore::Schema::Checker::Rules::Requirement::Required]
50
-
51
- # @param verifiable_hash [Hash<String|Symbol,Any>]
52
- # @param matcher_options [SmartCore::Schema::Checker::Reconciler::Matcher::Options]
53
- # @return [SmartCore::Schema::Checker::Rules::Verifier::Result]
54
- #
55
- # @api private
56
- # @since 0.1.0
57
- # @version 0.3.0
58
- def __verify!(verifiable_hash, matcher_options)
59
- SmartCore::Schema::Checker::Rules::Verifier.verify!(
60
- self, matcher_options, verifiable_hash
61
- )
62
- end
63
-
64
- # @param required_type [String, Symbol, SmartCore::Types::Primitive]
65
- # @param nested_definitions [Block]
66
- # @return [self]
67
- #
68
- # @api public
69
- # @since 0.1.0
70
- # @version 0.8.0
71
- def type(required_type, &nested_definitions)
72
- tap do
73
- options.type = SmartCore::Schema::Checker::Rules::Options::Type.new(self, required_type)
74
- define_nested_reconciler(&nested_definitions)
75
- end
76
- end
77
-
78
- # @param nested_definitions [Block]
79
- # @return [self]
80
- #
81
- # @api public
82
- # @since 0.1.0
83
- # @version 0.8.0
84
- def filled(&nested_definitions)
85
- tap do
86
- options.filled = SmartCore::Schema::Checker::Rules::Options::Filled.new(self)
87
- define_nested_reconciler(&nested_definitions)
88
- end
89
- end
90
-
91
- private
92
-
93
- # @param nested_definitions [Block]
94
- # @return [void]
95
- #
96
- # @api private
97
- # @since 0.1.0
98
- # @version 0.3.0
99
- def define_nested_reconciler(&nested_definitions)
100
- return unless block_given?
101
-
102
- SmartCore::Schema::Checker::Reconciler::Constructor.tap do |constructor|
103
- @nested_reconciler = constructor.create if @nested_reconciler == nil
104
- @nested_reconciler.strict!(root_reconciler.__strict?)
105
- constructor.append_definitions(@nested_reconciler, &nested_definitions)
106
- end
107
-
108
- type(:hash).filled
109
- end
110
- end
@@ -1,24 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module SmartCore::Schema::Checker::Rules::ExtraKeys
4
- # @api private
5
- # @since 0.1.0
6
- # @version 0.3.0
7
- class Failure < Result
8
- # @return [Boolean]
9
- #
10
- # @api private
11
- # @since 0.1.0
12
- def success?
13
- false
14
- end
15
-
16
- # @return [Boolean]
17
- #
18
- # @api private
19
- # @since 0.1.0
20
- def failure?
21
- true
22
- end
23
- end
24
- end
@@ -1,37 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # @apbstract
4
- #
5
- # @api private
6
- # @since 0.3.0
7
- class SmartCore::Schema::Checker::Rules::ExtraKeys::Result
8
- # @return [Array<String>]
9
- #
10
- # @api private
11
- # @since 0.3.0
12
- attr_reader :extra_keys
13
-
14
- # @return [SmartCore::Schema::Checker::Reconciler::Matcher::Options]
15
- #
16
- # @api private
17
- # @since 0.3.0
18
- attr_reader :matcher_options
19
-
20
- # @param extra_keys [Array<String>]
21
- # @param matcher_options [SmartCore::Schema::Checker::Reconciler::Matcher::Options]
22
- # @return [void]
23
- #
24
- # @api private
25
- # @since 0.1.0
26
- # @version 0.3.0
27
- def initialize(extra_keys, matcher_options)
28
- @extra_keys = extra_keys
29
- @matcher_options = matcher_options
30
- end
31
-
32
- # @!method success?
33
- # @return [Boolean]
34
-
35
- # @!method failure?
36
- # @return [Boolean]
37
- end
@@ -1,30 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module SmartCore::Schema::Checker::Rules::ExtraKeys
4
- # @api private
5
- # @since 0.1.0
6
- # @version 0.3.0
7
- class Success < Result
8
- # @return [Array<String>]
9
- #
10
- # @api private
11
- # @since 0.3.0
12
- alias_method :spread_keys, :extra_keys
13
-
14
- # @return [Boolean]
15
- #
16
- # @api private
17
- # @since 0.1.0
18
- def success?
19
- true
20
- end
21
-
22
- # @return [Boolean]
23
- #
24
- # @api private
25
- # @since 0.1.0
26
- def failure?
27
- false
28
- end
29
- end
30
- end
@@ -1,31 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # @api private
4
- # @since 0.1.0
5
- # @version 0.3.0
6
- module SmartCore::Schema::Checker::Rules::ExtraKeys
7
- require_relative 'extra_keys/result'
8
- require_relative 'extra_keys/success'
9
- require_relative 'extra_keys/failure'
10
-
11
- class << self
12
- # @param verifiable_hash [SmartCore::Schema::Checker::VerifiableHash]
13
- # @param rules [SmartCore::Schema::Checker::Rules]
14
- # @param matcher_options [SmartCore::Schema::Checker::Reconciler::Matcher::Options]
15
- # @return [SmartCore::Schema::Checker::Rules::ExtraKeys::Success]
16
- # @return [SmartCore::Schema::Checker::Rules::ExtraKeys::Failure]
17
- #
18
- # @api private
19
- # @since 0.1.0
20
- # @version 0.3.0
21
- def __verify!(verifiable_hash, rules, matcher_options)
22
- extra_keys = verifiable_hash.keys - rules.keys
23
-
24
- if extra_keys.empty? || (extra_keys.any? && !matcher_options.strict_schema?)
25
- Success.new(extra_keys, matcher_options)
26
- else
27
- Failure.new(extra_keys, matcher_options)
28
- end
29
- end
30
- end
31
- end
@@ -1,25 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # @api private
4
- # @since 0.1.0
5
- # @version 0.3.0
6
- class SmartCore::Schema::Checker::Rules::Optional < SmartCore::Schema::Checker::Rules::Base
7
- # @return [SmartCore::Schema::Checker::Rules::Requirement::Optional]
8
- #
9
- # @api private
10
- # @since 0.1.0
11
- attr_reader :requirement
12
-
13
- # @param root_reconciler [SmartCore::Schema::Checker::Reconciler]
14
- # @param schema_key [String, Symbol]
15
- # @param nested_definitions [Block]
16
- # @return [void]
17
- #
18
- # @api private
19
- # @since 0.1.0
20
- # @version 0.3.0
21
- def initialize(root_reconciler, schema_key, &nested_definitions)
22
- super(root_reconciler, schema_key, &nested_definitions)
23
- @requirement = SmartCore::Schema::Checker::Rules::Requirement::Optional.new(self)
24
- end
25
- end
@@ -1,43 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # @api private
4
- # @since 0.1.0
5
- class SmartCore::Schema::Checker::Rules::Options::Empty
6
- # @since 0.1.0
7
- extend Forwardable
8
-
9
- # @param rule [SmartCore::Schema::Checker::Rules::Base]
10
- # @return [void]
11
- #
12
- # @api private
13
- # @since 0.1.0
14
- def initialize(rule)
15
- @rule = rule
16
- end
17
-
18
- # @param verifiable_hash [SmartCore::Schema::Checker::VerifiableHash]
19
- # @return [SmartCore::Schema::Checker::Rules::Result::Success]
20
- #
21
- # @api private
22
- # @since 0.1.0
23
- def validate(verifiable_hash)
24
- SmartCore::Schema::Checker::Rules::Result::Success.new(
25
- key: schema_key,
26
- value: verifiable_hash[schema_key]
27
- )
28
- end
29
-
30
- private
31
-
32
- # @return [SmartCore::Schema::Checker::Rules::Base]
33
- #
34
- # @api private
35
- # @since 0.1.0
36
- attr_reader :rule
37
-
38
- # @return [String]
39
- #
40
- # @api private
41
- # @since 0.1.0
42
- def_delegator :rule, :schema_key
43
- end
@@ -1,49 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- class SmartCore::Schema::Checker::Rules::Options
4
- # @api private
5
- # @since 0.1.0
6
- class Filled < Empty
7
- # @note Constant is used only for other developers.
8
- # @return [Symbol]
9
- #
10
- # @api private
11
- # @since 0.1.0
12
- ERROR_CODE = :non_filled
13
-
14
- # @param verifiable_hash [SmartCore::Schema::Checker::VerifiableHash]
15
- # @return [SmartCore::Schema::Checker::Rules::Result::Success]
16
- # @return [SmartCore::Schema::Checker::Rules::Result::Failure]
17
- #
18
- # @api private
19
- # @since 0.1.0
20
- def validate(verifiable_hash)
21
- schema_value = verifiable_hash[schema_key]
22
-
23
- if non_filled?(schema_value)
24
- SmartCore::Schema::Checker::Rules::Result::Failure.new(
25
- key: schema_key,
26
- value: schema_value,
27
- error: ERROR_CODE,
28
- message: 'Requires to be filled'
29
- )
30
- else
31
- SmartCore::Schema::Checker::Rules::Result::Success.new(
32
- key: schema_key,
33
- value: schema_value
34
- )
35
- end
36
- end
37
-
38
- private
39
-
40
- # @param value [Any]
41
- # @return [Boolean]
42
- #
43
- # @api private
44
- # @since 0.1.0
45
- def non_filled?(value)
46
- value == nil
47
- end
48
- end
49
- end
@@ -1,86 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- class SmartCore::Schema::Checker::Rules::Options
4
- # @api private
5
- # @since 0.1.0
6
- class Type < Empty
7
- # @note Constant is used only for clarity (for other developers)
8
- # @return [Symbol]
9
- #
10
- # @api private
11
- # @since 0.1.0
12
- ERROR_CODE = :invalid_type
13
-
14
- # @param rule [SmartCore::Schema::Checker::Rules::Base]
15
- # @param required_type [String, Symbol, SmartCore::Types::Primitive]
16
- # @return [void]
17
- #
18
- # @api private
19
- # @since 0.1.0
20
- def initialize(rule, required_type)
21
- super(rule)
22
- @type = resolve_required_type(required_type)
23
- end
24
-
25
- # @param verifiable_hash [SmartCore::Schema::Checker::VerifiableHash]
26
- # @return [SmartCore::Schema::Checker::Rules::Result::Success]
27
- # @return [SmartCore::Schema::Checker::Rules::Result::Failure]
28
- #
29
- # @api private
30
- # @since 0.1.0
31
- def validate(verifiable_hash)
32
- schema_value = verifiable_hash[schema_key]
33
-
34
- if type.valid?(schema_value)
35
- SmartCore::Schema::Checker::Rules::Result::Success.new(
36
- key: schema_key,
37
- value: schema_value
38
- )
39
- else
40
- SmartCore::Schema::Checker::Rules::Result::Failure.new(
41
- key: schema_key,
42
- value: schema_value,
43
- error: ERROR_CODE,
44
- message: "Requires #{type} type (got: #{schema_value.class})"
45
- )
46
- end
47
- end
48
-
49
- private
50
-
51
- # @return [String, Symbol, SmartCore::Types::Primitive]
52
- #
53
- # @api private
54
- # @since 0.1.0
55
- attr_reader :type
56
-
57
- # @param required_type [String, Symbol, SmartCore::Types::Primitive]
58
- # @return [SmartCore::Types::Primitive]
59
- #
60
- # @api private
61
- # @since 0.1.0
62
- def resolve_required_type(required_type)
63
- unless required_type.is_a?(String) ||
64
- required_type.is_a?(Symbol) ||
65
- required_type.is_a?(SmartCore::Types::Primitive)
66
- raise(SmartCore::Schema::ArgumentError, <<~ERROR_MESSAGE)
67
- Schema key type should be a type of string, symbol or SmartCore:Types::Primitive (got: #{required_type})
68
- ERROR_MESSAGE
69
- end
70
-
71
- if required_type.is_a?(SmartCore::Types::Primitive)
72
- required_type
73
- else
74
- begin
75
- SmartCore::Schema::Checker::Rules::TYPE_ALIASES.fetch(required_type.to_s)
76
- rescue KeyError
77
- raise(SmartCore::Schema::ArgumentError, <<~ERROR_MESSAGE)
78
- Chosen schema key type is not supported or not registered (got #{required_type})
79
- ERROR_MESSAGE
80
- end
81
- end
82
-
83
- # TODO: rework with smart_type-system
84
- end
85
- end
86
- end
@@ -1,60 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # @api private
4
- # @since 0.1.0
5
- # @version 0.8.0
6
- class SmartCore::Schema::Checker::Rules::Options
7
- require_relative 'options/empty'
8
- require_relative 'options/type'
9
- require_relative 'options/filled'
10
-
11
- # @param rule [SmartCore::Schema::Checker::Rules::Base]
12
- # @return [void]
13
- #
14
- # @api private
15
- # @since 0.1.0
16
- def initialize(rule)
17
- @type = Empty.new(rule)
18
- @filled = Empty.new(rule)
19
- end
20
-
21
- # @return [SmartCore::Schema::Checker::Rules::Options::Type]
22
- # @return [SmartCore::Schema::Checker::Rules::Options::Empty]
23
- #
24
- # @api private
25
- # @since 0.1.0
26
- # @version 0.8.0
27
- def type
28
- @type
29
- end
30
-
31
- # @param option [SmartCore::Schema::Checker::Rules::Options::Type]
32
- # @return [void]
33
- #
34
- # @api private
35
- # @since 0.1.0
36
- # @version 0.8.0
37
- def type=(option)
38
- @type = option
39
- end
40
-
41
- # @return [SmartCore::Schema::Checker::Rules::Options::Filled]
42
- # @return [SmartCore::Schema::Checker::Rules::Options::Empty]
43
- #
44
- # @api private
45
- # @since 0.1.0
46
- # @version 0.8.0
47
- def filled
48
- @filled
49
- end
50
-
51
- # @param option [SmartCore::Schema::Checker::Rules::Options::Filled]
52
- # @return [void]
53
- #
54
- # @api private
55
- # @since 0.1.0
56
- # @version 0.8.0
57
- def filled=(option)
58
- @filled = option
59
- end
60
- end
@@ -1,25 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # @api private
4
- # @since 0.1.0
5
- # @version 0.3.0
6
- class SmartCore::Schema::Checker::Rules::Required < SmartCore::Schema::Checker::Rules::Base
7
- # @return [SmartCore::Schema::Checker::Rules::Requirement::Required]
8
- #
9
- # @api private
10
- # @since 0.1.0
11
- attr_reader :requirement
12
-
13
- # @param root_reconciler [SmartCore::Schema::Checker::Reconciler]
14
- # @param schema_key [String, Symbol]
15
- # @param nested_definitions [Block]
16
- # @return [void]
17
- #
18
- # @api private
19
- # @since 0.1.0
20
- # @version 0.3.0
21
- def initialize(root_reconciler, schema_key, &nested_definitions)
22
- super(root_reconciler, schema_key, &nested_definitions)
23
- @requirement = SmartCore::Schema::Checker::Rules::Requirement::Required.new(self)
24
- end
25
- end
@@ -1,36 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # @api private
4
- # @since 0.1.0
5
- class SmartCore::Schema::Checker::Rules::Requirement::Optional
6
- # @param rule [SmartCore::Schema::Checker::Rules::Optional]
7
- # @return [void]
8
- #
9
- # @api private
10
- # @since 0.1.0
11
- def initialize(rule)
12
- @rule = rule
13
- end
14
-
15
- # @param verifiable_hash [SmartCore::Schema::Checker::VerifiableHash]
16
- # @return [SmartCore::Schema::Checker::Rules::Requirement::Result]
17
- #
18
- # @api private
19
- # @since 0.1.0
20
- def validate(verifiable_hash)
21
- SmartCore::Schema::Checker::Rules::Requirement::Result.new(
22
- rule.schema_key,
23
- verifiable_hash,
24
- required: false,
25
- key_exists: verifiable_hash.key?(rule.schema_key)
26
- )
27
- end
28
-
29
- private
30
-
31
- # @return [SmartCore::Schema::Checker::Rules::Required]
32
- #
33
- # @api private
34
- # @since 0.1.0
35
- attr_reader :rule
36
- end
@@ -1,36 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # @api private
4
- # @since 0.1.0
5
- class SmartCore::Schema::Checker::Rules::Requirement::Required
6
- # @param rule [SmartCore::Schema::Checker::Rules::Required]
7
- # @return [void]
8
- #
9
- # @api private
10
- # @since 0.1.0
11
- def initialize(rule)
12
- @rule = rule
13
- end
14
-
15
- # @param verifiable_hash [SmartCore::Schema::Checker::VerifiableHash]
16
- # @return [SmartCore::Schema::Checker::Rules::Requirement::Result]
17
- #
18
- # @api private
19
- # @since 0.1.0
20
- def validate(verifiable_hash)
21
- SmartCore::Schema::Checker::Rules::Requirement::Result.new(
22
- rule.schema_key,
23
- verifiable_hash,
24
- required: true,
25
- key_exists: verifiable_hash.key?(rule.schema_key)
26
- )
27
- end
28
-
29
- private
30
-
31
- # @return [SmartCore::Schema::Checker::Rules::Required]
32
- #
33
- # @api private
34
- # @since 0.1.0
35
- attr_reader :rule
36
- end