Class: Mime::Type::AcceptList

Inherits:
Array
  • Object
show all
Defined in:
lib/action_dispatch/http/mime_type.rb

Overview

:nodoc:

Instance Method Summary collapse

Instance Method Details

#assort!Object



85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
# File 'lib/action_dispatch/http/mime_type.rb', line 85

def assort!
  sort!

  # Take care of the broken text/xml entry by renaming or deleting it
  if text_xml_idx && app_xml_idx
    app_xml.q = [text_xml.q, app_xml.q].max # set the q value to the max of the two
    exchange_xml_items if app_xml_idx > text_xml_idx  # make sure app_xml is ahead of text_xml in the list
    delete_at(text_xml_idx)                 # delete text_xml from the list
  elsif text_xml_idx
    text_xml.name = Mime::XML.to_s
  end

  # Look for more specific XML-based types and sort them ahead of app/xml
  if app_xml_idx
    idx = app_xml_idx

    while idx < length
      type = self[idx]
      break if type.q < app_xml.q

      if type.name.ends_with? '+xml'
        self[app_xml_idx], self[idx] = self[idx], app_xml
        @app_xml_idx = idx
      end
      idx += 1
    end
  end

  map! { |i| Mime::Type.lookup(i.name) }.uniq!
  to_a
end