class Dry::Schema::KeyValidator
def call(result)
- Api: - private
def call(result) input = result.to_h input_paths = key_paths(input) key_paths = key_map.to_dot_notation input_paths.each do |path| error_path = if path[INDEX_REGEX] key = path.gsub(INDEX_REGEX, BRACKETS) if key_paths.none? { |key_path| key_path.include?(key) } arr = path.gsub(INDEX_REGEX) { |m| ".#{m[1]}" } arr.split(DOT).map { |s| DIGIT_REGEX.match?(s) ? s.to_i : s.to_sym } end elsif key_paths.none? { |key_path| key_path.include?(path) } path end next unless error_path result.add_error([:unexpected_key, [error_path, input]]) end result end