foobara 0.0.55 → 0.0.56

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: 78bd1547b990baf3ef2d1210747e7c9ea2943a3136fd39d38f399f0a90f73aa6
4
- data.tar.gz: b75e8291b79c05de501de15ed64c62df2ce26de2f7e13fcde95dd6c9cd445430
3
+ metadata.gz: fc60d4f3abb03f4cb398aca513da228aaaf2359941a9d6873d970004b8faf1a8
4
+ data.tar.gz: d94f3b0f676dcf2a69ae1acdbad58efa0dc0ff8626f77de6219ca55b23ac7e41
5
5
  SHA512:
6
- metadata.gz: 3d49b8eef5f2823c475b2227e1f05c844327837ff8eb0545ca62b46aa2f122413d4d283d3e6fc7a8618e8469c98ab7bfb6b77f5a4fa7131743cffa0d398309a3
7
- data.tar.gz: ca9194b01789d6ac289322a919b56ac9e9074a838524509d0759251d4c62839942b56aac0d6c59f3018d89a67fa68aa9421b5c28922b1c4c978e3060432aeb32
6
+ metadata.gz: 6348c488613dfb77695af95e1951a0e373787a8277bcee39e26495ee5b1c66f46e8f30a46c24ae7db4050bade755a0fbf181a2618de0f149308c752660fe7352
7
+ data.tar.gz: 6fe896d06734768e017dfc21753d7de90da00fdde88a5822900876f2030e84c04539fddc0ecc9bf7eb638b4ef9e745c9aafd8afa0826c97dc115ce9029cce46b
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 3.4.1
1
+ 3.4.2
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ ## [0.0.56] - 2025-02-16
2
+
3
+ - Bump Ruby to 3.4.2
4
+ - Add a ignore_unexpected_attributes option to Model#initialize
5
+
1
6
  ## [0.0.55] - 2025-02-01
2
7
 
3
8
  - Mark types as builtin directly and add builtin flag to manifest
@@ -0,0 +1,27 @@
1
+ module Foobara
2
+ module BuiltinTypes
3
+ module Attributes
4
+ module Transformers
5
+ class RemoveUnexpectedAttributes < Value::Transformer
6
+ class << self
7
+ def requires_parent_declaration_data?
8
+ true
9
+ end
10
+ end
11
+
12
+ def applicable?(hash)
13
+ Thread.foobara_var_get(:foobara_ignore_unexpected_attributes) && unexpected_attributes(hash).any?
14
+ end
15
+
16
+ def transform(hash)
17
+ hash.except(*unexpected_attributes(hash))
18
+ end
19
+
20
+ def unexpected_attributes(hash)
21
+ hash.keys - parent_declaration_data[:element_type_declarations].keys
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -15,11 +15,11 @@ module Foobara
15
15
  parse(string)
16
16
  end
17
17
 
18
- private
19
-
20
18
  NOT_DELIMITED_REGEX = /\A(?<year>\d{4})(?<month>\d{2})(?<day>\d{2})\z/
21
19
  DELIMITED_REGEX = /\A(?<year>\d{4,})(?<delimiter>[\/\\.|_:;-])(?<month>\d{1,2})\k<delimiter>(?<day>\d{1,2})\z/
22
20
 
21
+ private
22
+
23
23
  def parse(string)
24
24
  match = NOT_DELIMITED_REGEX.match(string) || DELIMITED_REGEX.match(string)
25
25
 
@@ -171,7 +171,7 @@ module Foobara
171
171
  attr_accessor :mutable
172
172
 
173
173
  def initialize(attributes = nil, options = {})
174
- allowed_options = %i[validate mutable]
174
+ allowed_options = %i[validate mutable ignore_unexpected_attributes]
175
175
  invalid_options = options.keys - allowed_options
176
176
 
177
177
  unless invalid_options.empty?
@@ -180,6 +180,12 @@ module Foobara
180
180
  # :nocov:
181
181
  end
182
182
 
183
+ if options[:ignore_unexpected_attributes]
184
+ Thread.foobara_with_var(:foobara_ignore_unexpected_attributes, true) do
185
+ return initialize(attributes, options.except(:ignore_unexpected_attributes))
186
+ end
187
+ end
188
+
183
189
  validate = options[:validate]
184
190
 
185
191
  if attributes.nil?
@@ -189,6 +195,14 @@ module Foobara
189
195
  # :nocov:
190
196
  end
191
197
  else
198
+ if Thread.foobara_var_get(:foobara_ignore_unexpected_attributes)
199
+ outcome = attributes_type.process_value(attributes)
200
+
201
+ if outcome.success?
202
+ attributes = outcome.result
203
+ end
204
+ end
205
+
192
206
  self.mutable = true
193
207
  attributes.each_pair do |attribute_name, value|
194
208
  write_attribute(attribute_name, value)
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foobara
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.55
4
+ version: 0.0.56
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miles Georgi
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-02-02 00:00:00.000000000 Z
10
+ date: 2025-02-17 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: bigdecimal
@@ -71,6 +71,7 @@ files:
71
71
  - projects/builtin_types/src/attributes/supported_validators/required/type_declaration_extension/extend_attributes_type_declaration/desugarizers/move_required_from_element_types_to_root.rb
72
72
  - projects/builtin_types/src/attributes/supported_validators/required/type_declaration_extension/extend_attributes_type_declaration/type_declaration_validators/array_of_symbols.rb
73
73
  - projects/builtin_types/src/attributes/supported_validators/required/type_declaration_extension/extend_attributes_type_declaration/type_declaration_validators/array_with_valid_attribute_names.rb
74
+ - projects/builtin_types/src/attributes/transformers/remove_unexpected_attributes.rb
74
75
  - projects/builtin_types/src/big_decimal/casters/integer.rb
75
76
  - projects/builtin_types/src/big_decimal/casters/string.rb
76
77
  - projects/builtin_types/src/boolean/casters/numeric.rb