# File lib_doc/rucy/lang.rb, line 8
    def self.parse_accept_lang(lang_ranges)
      lang_range_list = Array.new
      lang_ranges.split(/,/).each_with_index do |lang_range_with_qvalue, i|
        lang_range, qvalue = lang_range_with_qvalue.split(/;/, 2)
        lang_range.strip!
        language, country = lang_range.split(/-/, 2)
        language.strip!
        country.strip! if country
        lang_info = {
          :language => language,
          :country => country,
          :length => lang_range.length,
          :order => i
        }
        if (qvalue =~ /q=(1(\.0*)?|0(\.\d*)?)/)
          lang_info[:q] = $1.to_f
        else
          lang_info[:q] = 1.0
        end
        lang_range_list.push(lang_info)
      end
      lang_range_list.sort!{ |a, b|
        cmp = b[:q] <=> a[:q]
        cmp = b[:length] <=> a[:length] if (cmp == 0)
        cmp = a[:order] <=> b[:order] if (cmp == 0)
        cmp
      }
      for lang_info in lang_range_list
        lang_info.delete(:length)
        lang_info.delete(:order)
      end

      lang_range_list
    end