@@ -63,7 +63,7 @@ def fields
6363
6464 setter = "#{ name_sym } ="
6565 api_name = info . fetch ( :api_name , name_sym )
66- nilable = info [ :nil? ]
66+ nilable = info . fetch ( :nil? , false )
6767 const = required && !nilable ? info . fetch ( :const , Orb ::Internal ::OMIT ) : Orb ::Internal ::OMIT
6868
6969 [ name_sym , setter ] . each { undef_method ( _1 ) } if known_fields . key? ( name_sym )
@@ -361,14 +361,42 @@ def initialize(data = {})
361361 end
362362 end
363363
364+ class << self
365+ # @api private
366+ #
367+ # @param depth [Integer]
368+ #
369+ # @return [String]
370+ def inspect ( depth : 0 )
371+ return super ( ) if depth . positive?
372+
373+ depth = depth . succ
374+ deferred = fields . transform_values do |field |
375+ type , required , nilable = field . fetch_values ( :type , :required , :nilable )
376+ -> do
377+ [
378+ Orb ::Internal ::Type ::Converter . inspect ( type , depth : depth ) ,
379+ !required || nilable ? "nil" : nil
380+ ] . compact . join ( " | " )
381+ end
382+ . tap { _1 . define_singleton_method ( :inspect ) { call } }
383+ end
384+
385+ "#{ name } [#{ deferred . inspect } ]"
386+ end
387+ end
388+
389+ # @api private
390+ #
364391 # @return [String]
365392 def inspect
366- rows = self . class . known_fields . keys . map do
367- "#{ _1 } =#{ @data . key? ( _1 ) ? public_send ( _1 ) : '' } "
393+ rows = @data . map do
394+ "#{ _1 } =#{ self . class . known_fields . key? ( _1 ) ? public_send ( _1 ) . inspect : '' } "
368395 rescue Orb ::Errors ::ConversionError
369- "#{ _1 } =#{ @data . fetch ( _1 ) } "
396+ "#{ _1 } =#{ _2 . inspect } "
370397 end
371- "#<#{ self . class . name } :0x#{ object_id . to_s ( 16 ) } #{ rows . join ( ' ' ) } >"
398+
399+ "#<#{ self . class } :0x#{ object_id . to_s ( 16 ) } #{ rows . join ( ' ' ) } >"
372400 end
373401 end
374402 end
0 commit comments