global
def build_property(value, disposition: nil, key: nil, record: nil, path: nil, context: nil)
def build_property(value, disposition: nil, key: nil, record: nil, path: nil, context: nil) format = disposition ? 'binary' : infer_format(key, record) enum = infer_enum(path, record, context) property = build_type(value, format: format, enum: enum) case value when Array property[:items] = if value.empty? {} # unknown else build_array_items_schema(value, record: record, path: path, context: context) end when Hash property[:properties] = {}.tap do |properties| value.each do |k, v| child_path = path ? "#{path}.#{k}" : k.to_s properties[k] = build_property(v, record: record, key: k, path: child_path, context: context) end end property = enrich_with_required_keys(property) end property end