json_schematize 0.3.0 → 0.3.1

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