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,95 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # @api private
4
- # @since 0.1.0
5
- class SmartCore::Schema::Checker::Rules::Requirement::Result
6
- # @return [Symbol]
7
- #
8
- # @api private
9
- # @since 0.1.0
10
- ERROR_CODE = :required_key_not_found
11
-
12
- # @return [String]
13
- #
14
- # @api private
15
- # @since 0.1.0
16
- attr_reader :key
17
-
18
- # @return [SmartCore::Schema::Checker::VerifiableHash]
19
- #
20
- # @api private
21
- # @since 0.1.0
22
- attr_reader :verifiable_hash
23
-
24
- # @return [Symbol, NilClass]
25
- #
26
- # @api private
27
- # @since 0.1.0
28
- attr_reader :error
29
-
30
- # @return [String, NilClass]
31
- #
32
- # @api private
33
- # @since 0.1.0
34
- attr_reader :message
35
-
36
- # @param key [String]
37
- # @param verifiable_hash [SmartCore::Schema::Checker::VerifiableHash]
38
- # @param required [Boolean]
39
- # @param key_exists [Boolean]
40
- # @return [void]
41
- #
42
- # @api private
43
- # @since 0.1.0
44
- def initialize(key, verifiable_hash, required:, key_exists:)
45
- @key = key
46
- @verifiable_hash = verifiable_hash
47
- @required = required
48
- @optional = !required
49
- @key_exists = key_exists
50
- @success = required ? key_exists : true
51
- @failure = required ? !key_exists : false
52
- @error = (required && !key_exists) ? ERROR_CODE : nil
53
- @message = (required && !key_exists) ? "Required key :#{key} not found" : nil
54
- end
55
-
56
- # @return [Boolean]
57
- #
58
- # @api private
59
- # @since 0.1.0
60
- def success?
61
- @success
62
- end
63
-
64
- # @return [Boolean]
65
- #
66
- # @api private
67
- # @since 0.1.0
68
- def failure?
69
- @failure
70
- end
71
-
72
- # @return [Boolean]
73
- #
74
- # @api private
75
- # @since 0.1.0
76
- def key_exists?
77
- @key_exists
78
- end
79
-
80
- # @return [Boolean]
81
- #
82
- # @api private
83
- # @since 0.1.0
84
- def optional?
85
- @optional
86
- end
87
-
88
- # @return [Boolean]
89
- #
90
- # @api private
91
- # @since 0.1.0
92
- def required?
93
- @required
94
- end
95
- end
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # @api private
4
- # @since 0.1.0
5
- module SmartCore::Schema::Checker::Rules::Requirement
6
- require_relative 'requirement/result'
7
- require_relative 'requirement/required'
8
- require_relative 'requirement/optional'
9
- end
@@ -1,44 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # @api private
4
- # @since 0.1.0
5
- class SmartCore::Schema::Checker::Rules::Result::Base
6
- # @return [String]
7
- #
8
- # @api public
9
- # @since 0.1.0
10
- attr_reader :key
11
-
12
- # @return [Any]
13
- #
14
- # @api public
15
- # @since 0.1.0
16
- attr_reader :value
17
-
18
- # @option key [String]
19
- # @option value [Any]
20
- # @return [void]
21
- #
22
- # @api private
23
- # @since 0.1.0
24
- def initialize(key:, value:)
25
- @key = key
26
- @value = value
27
- end
28
-
29
- # @return [Boolean]
30
- #
31
- # @api public
32
- # @since 0.1.0
33
- def success?
34
- false
35
- end
36
-
37
- # @return [Boolean]
38
- #
39
- # @api public
40
- # @since 0.1.0
41
- def failure?
42
- false
43
- end
44
- end
@@ -1,41 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module SmartCore::Schema::Checker::Rules::Result
4
- # @api private
5
- # @since 0.1.0
6
- class Failure < Base
7
- # @return [Symbol]
8
- #
9
- # @api public
10
- # @since 0.1.0
11
- attr_reader :error
12
-
13
- # @return [String]
14
- #
15
- # @api public
16
- # @since 0.1.0
17
- attr_reader :message
18
-
19
- # @option key [String]
20
- # @option value [Any]
21
- # @option error [Symbol]
22
- # @option message [String]
23
- # @return [void]
24
- #
25
- # @api private
26
- # @since 0.1.0
27
- def initialize(key:, value:, error:, message:)
28
- super(key: key, value: value)
29
- @error = error
30
- @message = message
31
- end
32
-
33
- # @return [Boolean]
34
- #
35
- # @api public
36
- # @since 0.1.0
37
- def failure?
38
- true
39
- end
40
- end
41
- end
@@ -1,15 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module SmartCore::Schema::Checker::Rules::Result
4
- # @api private
5
- # @since 0.1.0
6
- class Success < Base
7
- # @return [Boolean]
8
- #
9
- # @api public
10
- # @since 0.1.0
11
- def success?
12
- true
13
- end
14
- end
15
- end
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # @api private
4
- # @since 0.1.0
5
- module SmartCore::Schema::Checker::Rules::Result
6
- require_relative 'result/base'
7
- require_relative 'result/success'
8
- require_relative 'result/failure'
9
- end
@@ -1,57 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # @api private
4
- # @since 0.1.0
5
- # rubocop:disable Style/StaticClass
6
- class SmartCore::Schema::Checker::Rules
7
- # @todo rework with smart_type-system
8
- # @note non-frized constant is used for temporary extendability
9
- # @return [SmartCore::Types::Primitive]
10
- #
11
- # @api private
12
- # @since 0.1.0
13
- # @version 0.2.0
14
- # rubocop:disable Style/MutableConstant
15
- TYPE_ALIASES = {
16
- 'value.any' => SmartCore::Types::Value::Any.nilable,
17
- 'value.nil' => SmartCore::Types::Value::Nil.nilable,
18
- 'value.string' => SmartCore::Types::Value::String.nilable,
19
- 'value.symbol' => SmartCore::Types::Value::Symbol.nilable,
20
- 'value.text' => SmartCore::Types::Value::Text.nilable,
21
- 'value.integer' => SmartCore::Types::Value::Integer.nilable,
22
- 'value.float' => SmartCore::Types::Value::Float.nilable,
23
- 'value.numeric' => SmartCore::Types::Value::Numeric.nilable,
24
- 'value.big_decimal' => SmartCore::Types::Value::BigDecimal.nilable,
25
- 'value.boolean' => SmartCore::Types::Value::Boolean.nilable,
26
- 'value.array' => SmartCore::Types::Value::Array.nilable,
27
- 'value.hash' => SmartCore::Types::Value::Hash.nilable,
28
- 'value.proc' => SmartCore::Types::Value::Proc.nilable,
29
- 'value.class' => SmartCore::Types::Value::Class.nilable,
30
- 'value.module' => SmartCore::Types::Value::Module.nilable,
31
- 'value.time' => SmartCore::Types::Value::Time.nilable,
32
- 'value.date_time' => SmartCore::Types::Value::DateTime.nilable,
33
- 'value.date' => SmartCore::Types::Value::Date.nilable,
34
- 'value.time_based' => SmartCore::Types::Value::TimeBased.nilable,
35
- 'any' => SmartCore::Types::Value::Any.nilable,
36
- 'nil' => SmartCore::Types::Value::Nil.nilable,
37
- 'string' => SmartCore::Types::Value::String.nilable,
38
- 'symbol' => SmartCore::Types::Value::Symbol.nilable,
39
- 'text' => SmartCore::Types::Value::Text.nilable,
40
- 'integer' => SmartCore::Types::Value::Integer.nilable,
41
- 'float' => SmartCore::Types::Value::Float.nilable,
42
- 'numeric' => SmartCore::Types::Value::Numeric.nilable,
43
- 'big_decimal' => SmartCore::Types::Value::BigDecimal.nilable,
44
- 'boolean' => SmartCore::Types::Value::Boolean.nilable,
45
- 'array' => SmartCore::Types::Value::Array.nilable,
46
- 'hash' => SmartCore::Types::Value::Hash.nilable,
47
- 'proc' => SmartCore::Types::Value::Proc.nilable,
48
- 'class' => SmartCore::Types::Value::Class.nilable,
49
- 'module' => SmartCore::Types::Value::Module.nilable,
50
- 'time' => SmartCore::Types::Value::Time.nilable,
51
- 'date_time' => SmartCore::Types::Value::DateTime.nilable,
52
- 'date' => SmartCore::Types::Value::Date.nilable,
53
- 'time_based' => SmartCore::Types::Value::TimeBased.nilable
54
- }
55
- # rubocop:enable Style/MutableConstant
56
- end
57
- # rubocop:enable Style/StaticClass
@@ -1,75 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # @api private
4
- # @since 0.1.0
5
- class SmartCore::Schema::Checker::Rules::Verifier::Result
6
- # @since 0.1.0
7
- include Enumerable
8
-
9
- # @return [Array<SmartCore::Schema::Checker::Rules::Result::Base>]
10
- #
11
- # @api private
12
- # @since 0.1.0
13
- attr_reader :results
14
-
15
- # @return [SmartCore::Schema::Checker::Rules::Base]
16
- #
17
- # @api private
18
- # @since 0.1.0
19
- attr_reader :rule
20
-
21
- # @return [void]
22
- #
23
- # @api private
24
- # @since 0.1.0
25
- def initialize(rule)
26
- @rule = rule
27
- @results = []
28
- end
29
-
30
- # @return [String]
31
- #
32
- # @api private
33
- # @since 0.1.0
34
- def key
35
- rule.schema_key
36
- end
37
-
38
- # @param result [SmartCore::Schema::Checker::Rules::Result::Base]
39
- # @return [result]
40
- #
41
- # @api private
42
- # @since 0.1.0
43
- def add(result)
44
- result.tap { results << result }
45
- end
46
- alias_method :<<, :add
47
-
48
- # @param block [Block]
49
- # @yield [result]
50
- # @yieldparam result [SmartCore::Schema::Checker::Rules::Result::Base]
51
- # @return [Enumerable]
52
- #
53
- # @api private
54
- # @since 0.1.0
55
- def each(&block)
56
- block_given? ? results.each(&block) : results.each
57
- end
58
- alias_method :each_result, :each
59
-
60
- # @return [Boolean]
61
- #
62
- # @api public
63
- # @since 0.1.0
64
- def success?
65
- results.all?(&:success?)
66
- end
67
-
68
- # @return [Boolean]
69
- #
70
- # @api public
71
- # @since 0.1.0
72
- def failure?
73
- results.all?(&:failure?)
74
- end
75
- end
@@ -1,74 +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::Verifier
7
- require_relative 'verifier/result'
8
-
9
- class << self
10
- # @param rule [SmartCore::Schema::Checker::Rules::Base]
11
- # @param matcher_options [SmartCore::Schema::Checker::Reconciler::Matcher::Options]
12
- # @param verifiable_hash [SmartCore::Schema::Checker::VerifiableHash]
13
- # @return [SmartCore::Schema::Checker::Rules::Verifier::Result]
14
- #
15
- # @api private
16
- # @since 0.1.0
17
- # @version 0.3.0
18
- def verify!(rule, matcher_options, verifiable_hash)
19
- SmartCore::Schema::Checker::Rules::Verifier::Result.new(rule).tap do |result|
20
- requirement = result << check_requirement(rule, verifiable_hash)
21
- next result if requirement.required? && requirement.failure?
22
- next result if requirement.optional? && requirement.success? && !requirement.key_exists?
23
- result << check_type(rule, verifiable_hash)
24
- filled = result << check_filled(rule, verifiable_hash)
25
- result << check_nested(rule, verifiable_hash) if filled.success?
26
- end
27
- end
28
-
29
- private
30
-
31
- # @param rule [SmartCore::Schema::Checker::Rules::Base]
32
- # @param verifiable_hash [SmartCore::Schema::Checker::VerifiableHash]
33
- # @return [SmartCore::Schema::Checker::Rules::Requirement::Result]
34
- #
35
- # @api private
36
- # @since 0.1.0
37
- def check_requirement(rule, verifiable_hash)
38
- rule.requirement.validate(verifiable_hash)
39
- end
40
-
41
- # @param rule [SmartCore::Schema::Checker::Rules::Base]
42
- # @param verifiable_hash [SmartCore::Schema::Checker::VerifiableHash]
43
- # @return [SmartCore::Schema::Checker::Rules::Result::Success]
44
- # @return [SmartCore::Schema::Checker::Rules::Result::Failure]
45
- #
46
- # @api private
47
- # @since 0.1.0
48
- def check_type(rule, verifiable_hash)
49
- rule.options.type.validate(verifiable_hash)
50
- end
51
-
52
- # @param rule [SmartCore::Schema::Checker::Rules::Base]
53
- # @param verifiable_hash [SmartCore::Schema::Checker::VerifiableHash]
54
- # @return [SmartCore::Schema::Checker::Rules::Result::Success]
55
- # @return [SmartCore::Schema::Checker::Rules::Result::Failure]
56
- #
57
- # @api private
58
- # @since 0.1.0
59
- def check_filled(rule, verifiable_hash)
60
- rule.options.filled.validate(verifiable_hash)
61
- end
62
-
63
- # @param rule [SmartCore::Schema::Checker::Rules::Base]
64
- # @param verifiable_hash [SmartCore::Schema::Checker::VerifiableHash]
65
- # @return [NilClass, SmartCore::Schema::Checker::Reconciler::Matcher::Result]
66
- #
67
- # @api private
68
- # @since 0.1.0
69
- def check_nested(rule, verifiable_hash)
70
- return unless rule.nested_reconciler
71
- rule.nested_reconciler.__match!(verifiable_hash.extract(rule.schema_key))
72
- end
73
- end
74
- end
@@ -1,89 +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
7
- require_relative 'rules/type_aliases'
8
- require_relative 'rules/base'
9
- require_relative 'rules/result'
10
- require_relative 'rules/optional'
11
- require_relative 'rules/required'
12
- require_relative 'rules/extra_keys'
13
- require_relative 'rules/options'
14
- require_relative 'rules/requirement'
15
- require_relative 'rules/verifier'
16
-
17
- # @since 0.1.0
18
- include Enumerable
19
-
20
- # @return [void]
21
- #
22
- # @api private
23
- # @since 0.1.0
24
- # @version 0.8.0
25
- def initialize
26
- @rules = {}
27
- @cache = SmartCore::Engine::Cache.new
28
- end
29
-
30
- # @param schema_key [String]
31
- # @param rule [SmartCore::Schema::Checker::Rules::Base]
32
- # @return [SmartCore::Schema::Checker::Rules::Base]
33
- #
34
- # @api private
35
- # @since 0.1.0
36
- # @version 0.8..0
37
- def []=(schema_key, rule)
38
- cache.clear
39
- rules[schema_key] = rule
40
- end
41
-
42
- # @param block [Block]
43
- # @yield [schema_key, rule]
44
- # @yieldparam schema_key [String]
45
- # @yieldparam rule [SmartCore::Schema::Checker::Rules::Base]
46
- # @return [Enumerable]
47
- #
48
- # @api private
49
- # @since 0.1.0
50
- # @version 0.8.0
51
- def each(&block)
52
- block_given? ? rules.each_pair(&block) : rules.each_pair
53
- end
54
-
55
- # @param block [Block]
56
- # @yield [rule]
57
- # @yieldparam rule [SmartCore::Schema::Checker::Rules::Base]
58
- # @return [Enumerable]
59
- #
60
- # @api private
61
- # @since 0.1.0
62
- # @version 0.8.0
63
- def each_rule(&block)
64
- block_given? ? rules.each_value(&block) : rules.each_value
65
- end
66
-
67
- # @return [Array<String>]
68
- #
69
- # @api private
70
- # @since 0.1.0
71
- # @version 0.8.0
72
- def keys
73
- cache.read(:keys) { rules.keys }
74
- end
75
-
76
- private
77
-
78
- # @return [Hash<String,SmartCore::Schema::Checker::Rules::Base>]
79
- #
80
- # @api private
81
- # @since 0.1.0
82
- attr_reader :rules
83
-
84
- # @return [SmartCore::Engine::Cache]
85
- #
86
- # @api private
87
- # @since 0.8.0
88
- attr_reader :cache
89
- end
@@ -1,65 +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::VerifiableHash
7
- # @return [Hash<String|Symbol,Any>]
8
- #
9
- # @api private
10
- # @since 0.1.0
11
- attr_reader :source
12
-
13
- # @param source [Hash<String|Symbol,Any>]
14
- # @return [void]
15
- #
16
- # @api private
17
- # @since 0.1.0
18
- def initialize(source)
19
- @source = source
20
- end
21
-
22
- # @param key [String]
23
- # @return [SmartCore::Schema::Checker::VerifiableHash]
24
- #
25
- # @api private
26
- # @since 0.8.0
27
- def extract(key)
28
- SmartCore::Schema::Checker::VerifiableHash.new(fetch(key))
29
- end
30
-
31
- # @return [Array<String>]
32
- #
33
- # @api private
34
- # @since 0.1.0
35
- # @version 0.8.0
36
- def keys
37
- SmartCore::Schema::KeyControl.normalize_list(source.keys)
38
- end
39
-
40
- # @param key [String]
41
- # @return [Boolean]
42
- #
43
- # @api private
44
- # @since 0.1.0
45
- # @version 0.8.0
46
- def key?(key)
47
- source.key?(key) || source.key?(key.to_sym)
48
- end
49
-
50
- # @param key [String]
51
- # @return [Any]
52
- #
53
- # @api private
54
- # @since 0.1.0
55
- # @version 0.8.0
56
- def fetch(key)
57
- # @note
58
- # Previously we used exceptional flow "hash.fetch(key) rescue hash.fetch(key.to_sym)".
59
- # This flow can generate a lot of useless objects during rescuable `KeyError` exception
60
- # (useless error messages, backtraces, etc, object that was silently suppressed).
61
- # So, the "if"-#key?-oriented flow is better (generates fewer number of objects statistically)
62
- source.key?(key) ? source.fetch(key) : source.fetch(key.to_sym)
63
- end
64
- alias_method :[], :fetch
65
- end
@@ -1,106 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # @api private
4
- # @since 0.1.0
5
- # @version 0.9.0
6
- class SmartCore::Schema::Checker
7
- require_relative 'checker/verifiable_hash'
8
- require_relative 'checker/rules'
9
- require_relative 'checker/reconciler'
10
-
11
- # @return [void]
12
- #
13
- # @api private
14
- # @since 0.1.0
15
- # @version 0.9.0
16
- def initialize
17
- @reconciler = Reconciler::Constructor.create
18
- @lock = SmartCore::Engine::ReadWriteLock.new
19
- end
20
-
21
- # @param verifiable_hash [Hash<String|Symbol,Any>]
22
- # @return [SmartCore::Schema::Result]
23
- #
24
- # @api private
25
- # @since 0.1.0
26
- # @version 0.9.0
27
- def check!(verifiable_hash)
28
- @lock.read_sync do
29
- raise(SmartCore::Schema::ArgumentError, <<~ERROR_MESSAGE) unless verifiable_hash.is_a?(Hash)
30
- Verifiable hash should be a type of ::Hash
31
- ERROR_MESSAGE
32
-
33
- reconciler.__match!(VerifiableHash.new(verifiable_hash)).complete!
34
- end
35
- end
36
-
37
- # @param checker_invokations [Block]
38
- # @return [void]
39
- #
40
- # @api private
41
- # @since 0.3.0
42
- # @version 0.9.0
43
- def invoke_in_pipe(&checker_invokations)
44
- @lock.write_sync { instance_eval(&checker_invokations) }
45
- end
46
-
47
- # @param strict_mode [NilClass, String, Symbol]
48
- # @return [void]
49
- #
50
- # @api private
51
- # @since 0.3.0
52
- # @version 0.9.0
53
- def set_strict_mode(strict_mode)
54
- @lock.write_sync { apply_strict_mode(strict_mode) }
55
- end
56
-
57
- # @param definitions [Block]
58
- # @return [void]
59
- #
60
- # @api private
61
- # @since 0.1.0
62
- # @version 0.9.0
63
- def append_schema_definitions(&definitions)
64
- @lock.write_sync { add_schema_definitions(&definitions) }
65
- end
66
-
67
- # @param another_checker [SmartCore::Schema::Checker]
68
- # @return [SmartCore::Schema::Checker]
69
- #
70
- # @api private
71
- # @since 0.1.0
72
- # @version 0.9.0
73
- def combine_with(another_checker)
74
- @lock.write_sync { self } # TODO (0.x.0): merge the definitions and return self
75
- end
76
-
77
- private
78
-
79
- # @return [SmartCore::Schema::Checker::Reconciler]
80
- #
81
- # @api private
82
- # @since 0.1.0
83
- attr_reader :reconciler
84
-
85
- # @param definitions [Block]
86
- # @return [void]
87
- #
88
- # @api private
89
- # @since 0.1.0
90
- def add_schema_definitions(&definitions)
91
- raise(SmartCore::Schema::ArgumentError, <<~ERROR_MESSAGE) unless block_given?
92
- Schema definitions is not provided (you should provide Block argument)
93
- ERROR_MESSAGE
94
-
95
- Reconciler::Constructor.append_definitions(reconciler, &definitions)
96
- end
97
-
98
- # @param strict_mode [NilClass, String, Symbol]
99
- # @return [void]
100
- #
101
- # @api private
102
- # @since 0.3.0
103
- def apply_strict_mode(strict_mode)
104
- Reconciler::Constructor.set_strict_mode(reconciler, strict_mode)
105
- end
106
- end