Class: PreferredLocale::HeaderParser

Inherits:
Object
  • Object
show all
Defined in:
lib/preferred_locale/header_parser.rb

Instance Method Summary collapse

Constructor Details

#initialize(header) ⇒ HeaderParser

Returns a new instance of HeaderParser.



5
6
7
# File 'lib/preferred_locale/header_parser.rb', line 5

def initialize(header)
  @header = header.to_s
end

Instance Method Details

#preferred_localesObject



19
20
21
22
23
# File 'lib/preferred_locale/header_parser.rb', line 19

def preferred_locales
  raw_locales.filter do |locale|
    locale.match(/^[-a-z0-9]+$/i)
  end
end

#raw_localesObject



9
10
11
12
13
14
15
16
17
# File 'lib/preferred_locale/header_parser.rb', line 9

def raw_locales
  @raw_locales ||= begin
    values = @header.split(/,\s*/).map do |item|
      locale, quality = item.split(';q=')
      [locale, quality ? quality.to_f : 1.0]
    end
    values.sort { |(_, a), (_, b)| b <=> a }.filter_map(&:first)
  end
end