class Dry::Schema::DSL
def key_spec(name, type)
- Api: - private
def key_spec(name, type) if type.respond_to?(:keys) {name => key_map(type.name_key_map)} elsif type.respond_to?(:member) kv = key_spec(name, type.member) kv.equal?(name) ? name : kv.flatten(1) elsif type.meta[:maybe] && type.respond_to?(:right) key_spec(name, type.right) elsif type.respond_to?(:type) key_spec(name, type.type) else name end end