@@ -40,13 +40,23 @@ def display(obj, options = {})
4040 raise 'Invalid mime type' unless exact_mime . include? ( '/' )
4141 end
4242
43- data = render_mimebundle ( obj , exact_mime , fuzzy_mime )
43+ data = if obj . respond_to? ( :to_iruby_mimebundle )
44+ render_mimebundle ( obj , exact_mime , fuzzy_mime )
45+ else
46+ { }
47+ end
4448
4549 # Render by additional formatters
4650 render_by_registry ( data , obj , exact_mime , fuzzy_mime )
4751
4852 # Render by to_xxx methods
49- DEFAULT_MIME_TYPE_FORMAT_METHODS . each do |mime , methods |
53+ default_renderers = if obj . respond_to? ( :to_iruby_mimebundle )
54+ # Do not use Hash#slice for Ruby < 2.5
55+ { "text/plain" => DEFAULT_MIME_TYPE_FORMAT_METHODS [ "text/plain" ] }
56+ else
57+ DEFAULT_MIME_TYPE_FORMAT_METHODS
58+ end
59+ default_renderers . each do |mime , methods |
5060 next if mime . nil? && !data . empty? # for to_iruby
5161
5262 next if mime && data . key? ( mime ) # do not overwrite
@@ -109,13 +119,11 @@ def ascii?(mime)
109119
110120 private def render_mimebundle ( obj , exact_mime , fuzzy_mime )
111121 data = { }
112- if obj . respond_to? ( :to_iruby_mimebundle )
113- include_mime = [ exact_mime ] . compact
114- formats , metadata = obj . to_iruby_mimebundle ( include : include_mime )
115- formats . each do |mime , value |
116- if fuzzy_mime . nil? || mime . include? ( fuzzy_mime )
117- data [ mime ] = value
118- end
122+ include_mime = [ exact_mime ] . compact
123+ formats , metadata = obj . to_iruby_mimebundle ( include : include_mime )
124+ formats . each do |mime , value |
125+ if fuzzy_mime . nil? || mime . include? ( fuzzy_mime )
126+ data [ mime ] = value
119127 end
120128 end
121129 data
0 commit comments