anyvali 0.1.7 → 0.1.8

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: 2a4ddd57b6576747bbb56bf5748fbad61c693374016883abcdcbca6fdf8b3562
4
- data.tar.gz: 2694be8b631794c743b0c8cd0e4dc74e5d74814a2c0cce71c2d5156444dd2726
3
+ metadata.gz: 3059151c336de14c296db20a2e44782184b88ae4210d34fc4b5b6316d7be8d15
4
+ data.tar.gz: 6905cd9c596343340335eff8bd3875fe1989caefa861e8e34952e9e194ce3b28
5
5
  SHA512:
6
- metadata.gz: 9f968aab5a5130792d94d85bcfc43be7ce3e489382ff1addc348fc08e8dc5f2f89acd38c193d2610743d079421c822e445870c9b9b299ae5d448562d7760b37e
7
- data.tar.gz: c4424331f7289485c18cd5de177c9ea3af0e316e5f102f1a28eb68da1973bf282b412de4d50a749bc8fa6ad50a38d63f20dc2b40f9bbc6548b1b6554ffaa1832
6
+ metadata.gz: 910cb9fdb00548fa64363d2ebe0800d62e074fc9af8e865e2e81f2340c35d949d8a68e5e956583df7a773a01fe5154da57f534eb3b9fc34d0e386f2bec9ac313
7
+ data.tar.gz: e8b45fbf0833f3924ac94c7cd09e1b4d972ba5a8de2b300e34be9a0171414fb412e75e32184d10fbc40329e2ded92bdbc9cd2764df05a0a8c011af1b5a7511d6
@@ -51,6 +51,9 @@ module AnyVali
51
51
  end
52
52
 
53
53
  output = {}
54
+ mode = effective_unknown_keys(context)
55
+ previous_inherited_unknown_keys = context.inherited_unknown_keys
56
+ context.inherited_unknown_keys = mode if %w[strip reject].include?(mode)
54
57
 
55
58
  # Check required fields
56
59
  @required_keys.each do |key|
@@ -102,9 +105,11 @@ module AnyVali
102
105
  end
103
106
  end
104
107
 
108
+ context.inherited_unknown_keys = previous_inherited_unknown_keys
109
+
105
110
  # Handle unknown keys
106
111
  unknown = input.keys - @properties.keys
107
- case effective_unknown_keys
112
+ case mode
108
113
  when "reject"
109
114
  unknown.each do |key|
110
115
  issues << ValidationIssue.new(
@@ -151,7 +156,8 @@ module AnyVali
151
156
 
152
157
  private
153
158
 
154
- def effective_unknown_keys
159
+ def effective_unknown_keys(context = nil)
160
+ return context.inherited_unknown_keys if context&.inherited_unknown_keys
155
161
  @unknown_keys_explicit ? @unknown_keys : "strip"
156
162
  end
157
163
 
@@ -3,9 +3,11 @@
3
3
  module AnyVali
4
4
  class ValidationContext
5
5
  attr_reader :definitions
6
+ attr_accessor :inherited_unknown_keys
6
7
 
7
8
  def initialize(definitions: {})
8
9
  @definitions = definitions
10
+ @inherited_unknown_keys = nil
9
11
  end
10
12
  end
11
13
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: anyvali
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - AnyVali Contributors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-06-17 00:00:00.000000000 Z
11
+ date: 2026-06-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest