json_schematize 0.3.0 → 0.3.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 30ba73765eb1eef7075be586554ca29eddc7ae7b81cc293aa526dc47715fbb77
4
- data.tar.gz: f10b1d7668e6fecd3fc0b8c8a2dcc649df1ede93ce344e2a437209b1d94446c5
3
+ metadata.gz: 545006e10e9c73489b4a2db37d7b787a49c4427dd58d541ac938bad4c73954ce
4
+ data.tar.gz: 38f4d89c9cb2ffc8b9863531d8745eae5acd2b2bc1379ea6e9f459d66550525e
5
5
  SHA512:
6
- metadata.gz: a8f5b17a8d1a4d0defb7898b4f8ed2721b960e8b3dbf5216db4ef2dc0d9c56ad9f3d9fe71c67f05735f6838aea729d79d9680614280e142de2f3f2ff17be51c0
7
- data.tar.gz: 51624964387dcd0f1699827e497f170f31a7ac8d542398ac6fd14cb2d81719cc9c6d018b2dc2178718b6e008e320806b41c3bd77a50f208204a023fb63fae76c
6
+ metadata.gz: d640bd68de88a3e6e3b4a73fd8688e9c017bbb8948a73abb3a2f4bf36a87c3ba1bd31bb08f052b8fd36bca9a7758f825f32448ae39930610eaae7323ccd336fb
7
+ data.tar.gz: 344f9dd96df21d5b5f8f8b6daca078281403606c5b75dcc958d999186380e83a56ddb592f071b271656882ad9d4a117ce7211ca050cb901e4f57fbb90fe2355e
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- json_schematize (0.3.0)
4
+ json_schematize (0.3.1)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class JsonSchematize::Base
4
+ def self.acceptable_types
5
+ raise NoMethodError, "Expected acceptable_values to be defined in parent class"
6
+ end
7
+ end
@@ -1,6 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- class JsonSchematize::Boolean
3
+ require "json_schematize/base"
4
+
5
+ class JsonSchematize::Boolean < JsonSchematize::Base
4
6
  FALSE_VALUES = ["false", "f", "0", false]
5
7
  TRUE_VALUES = ["true", "t", "1", true]
6
8
 
@@ -10,4 +12,8 @@ class JsonSchematize::Boolean
10
12
 
11
13
  raise JsonSchematize::UndefinedBoolean, "#{val} is not a valid #{self.class}"
12
14
  end
15
+
16
+ def self.acceptable_types
17
+ [TrueClass, FalseClass]
18
+ end
13
19
  end
@@ -36,9 +36,9 @@ class JsonSchematize::Field
36
36
 
37
37
  def acceptable_value?(transformed_value:, raise_on_error:)
38
38
  if array_of_types
39
- boolean = transformed_value.all? { |val| @acceptable_types.include?(val.class) }
39
+ boolean = transformed_value.all? { |val| validate_acceptable_types(val: val) }
40
40
  else
41
- boolean = @acceptable_types.include?(transformed_value.class)
41
+ boolean = validate_acceptable_types(val: transformed_value)
42
42
  end
43
43
 
44
44
  if raise_on_error && (boolean==false)
@@ -77,6 +77,18 @@ class JsonSchematize::Field
77
77
 
78
78
  private
79
79
 
80
+ def validate_acceptable_types(val:)
81
+ (all_allowed_types + @acceptable_types).include?(val.class)
82
+ end
83
+
84
+ def all_allowed_types
85
+ @all_allowed_types ||= begin
86
+ @acceptable_types.map do |t|
87
+ t.acceptable_types if t.ancestors.include?(JsonSchematize::Base)
88
+ end.compact.flatten
89
+ end
90
+ end
91
+
80
92
  def iterate_array_of_types(value:)
81
93
  return raw_converter_call(value: value) unless array_of_types
82
94
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module JsonSchematize
4
- VERSION = "0.3.0"
4
+ VERSION = "0.3.1"
5
5
  end
@@ -1,8 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "json_schematize/version"
4
- require "json_schematize/generator"
3
+ require "json_schematize/base"
5
4
  require "json_schematize/boolean"
5
+ require "json_schematize/generator"
6
+ require "json_schematize/version"
6
7
 
7
8
  module JsonSchematize
8
9
  class Error < StandardError; end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: json_schematize
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Taylor
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-03-10 00:00:00.000000000 Z
11
+ date: 2022-03-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pry-byebug
@@ -88,6 +88,7 @@ files:
88
88
  - docker-compose.yml
89
89
  - json_schematize.gemspec
90
90
  - lib/json_schematize.rb
91
+ - lib/json_schematize/base.rb
91
92
  - lib/json_schematize/boolean.rb
92
93
  - lib/json_schematize/field.rb
93
94
  - lib/json_schematize/field_transformations.rb