Sha256: 3543656deb8877f20aad995e525fff56b6353ba051669c1f72980c8fdfe992e9
Contents?: true
Size: 1004 Bytes
Versions: 3
Compression:
Stored size: 1004 Bytes
Contents
# Provides input and response handling for types with fields. module Taro::Types::Shared::ObjectCoercion def coerce_input self.class.fields.transform_values do |field| field.value_for_input(object) rescue Taro::Error => e raise_enriched_coercion_error(e, field) end end # Render the object into a hash. def coerce_response object_is_hash = object.is_a?(Hash) self.class.fields.transform_values do |field| field.value_for_response(object, context: self, object_is_hash:) rescue Taro::Error => e raise_enriched_coercion_error(e, field) end end def raise_enriched_coercion_error(error, field) # The indentation is on purpose. These errors can be recursively rescued # and re-raised by a tree of object types, which should be made apparent. raise error.class, <<~MSG Failed to read #{self.class.name} field `#{field.name}` from #{object.class}: #{error.message.lines.map { |line| " #{line}" }.join} MSG end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
taro-1.4.0 | lib/taro/types/shared/object_coercion.rb |
taro-1.3.0 | lib/taro/types/shared/object_coercion.rb |
taro-1.2.0 | lib/taro/types/shared/object_coercion.rb |