lib/dry/schema/key_validator.rb in dry-schema-1.6.2 vs lib/dry/schema/key_validator.rb in dry-schema-1.7.0
- old
+ new
@@ -49,12 +49,17 @@
# @api private
def key_paths(hash)
hash.flat_map { |key, _|
case (value = hash[key])
when Hash
+ next key.to_s if value.empty?
+
[key].product(key_paths(hash[key])).map { |keys| keys.join(DOT) }
when Array
- hashes_or_arrays = value.select { |e| e.is_a?(Array) || e.is_a?(Hash) }
+ hashes_or_arrays = value.select { |e| (e.is_a?(Array) || e.is_a?(Hash)) && !e.empty? }
+
+ next key.to_s if hashes_or_arrays.empty?
+
hashes_or_arrays.flat_map.with_index { |el, idx|
key_paths(el).map { |path| ["#{key}[#{idx}]", *path].join(DOT) }
}
else
key.to_s