class RackHttpAcceptLanguage::Parser
Attributes
http_accept_language[R]
Public Class Methods
new(http_accept_language)
click to toggle source
# File lib/rack-http-accept-language/parser.rb, line 6 def initialize(http_accept_language) @http_accept_language = http_accept_language end
Public Instance Methods
preferred_language()
click to toggle source
# File lib/rack-http-accept-language/parser.rb, line 10 def preferred_language return nil if early_return? order_languages_by_qvalue.first end
preferred_languages()
click to toggle source
# File lib/rack-http-accept-language/parser.rb, line 15 def preferred_languages return nil if early_return? order_languages_by_qvalue end
Private Instance Methods
early_return?()
click to toggle source
# File lib/rack-http-accept-language/parser.rb, line 22 def early_return? http_accept_language.nil? || http_accept_language == '*' end
handle_language(language, qvalue, memo)
click to toggle source
# File lib/rack-http-accept-language/parser.rb, line 44 def handle_language(language, qvalue, memo) language = language.strip.downcase.gsub(/-[a-z0-9]+$/i, &:upcase) qvalue = qvalue ? qvalue.to_f : 1.0 if memo[qvalue].nil? memo[qvalue] = [language] else memo[qvalue] << language end end
order_languages_by_qvalue()
click to toggle source
# File lib/rack-http-accept-language/parser.rb, line 26 def order_languages_by_qvalue order_languages_by_qvalue_hash.values.flatten end
order_languages_by_qvalue_hash()
click to toggle source
# File lib/rack-http-accept-language/parser.rb, line 34 def order_languages_by_qvalue_hash @order_languages_by_qvalue ||= split_languages.each_with_object({}) do |language_with_qvalue, memo| language, qvalue = language_with_qvalue.split(';q=') next if language == '*' handle_language(language, qvalue, memo) end.sort.reverse.to_h end
split_languages()
click to toggle source
# File lib/rack-http-accept-language/parser.rb, line 30 def split_languages @split_languages ||= http_accept_language.to_s.split(',') end