class Rack::AcceptLanguage

Constants

ALPHABET
LANGUAGE_RANGE
LANGUAGE_TAG
QVALUE

Public Class Methods

new(app, *args, &block) click to toggle source
# File lib/rack/accept_language.rb, line 7
def initialize(app, *args, &block)
  @app = app
end

Public Instance Methods

accept_language(env) click to toggle source
# File lib/rack/accept_language.rb, line 15
def accept_language(env)
  env.tap{ |e| e['rack.accept_language'] = parse env['HTTP_ACCEPT_LANGUAGE'] }
end
call(env) click to toggle source
# File lib/rack/accept_language.rb, line 11
def call(env)
  @app.call(accept_language env)
end
parse(hal) click to toggle source
# File lib/rack/accept_language.rb, line 19
def parse(hal)
  hal.to_s.scan(LANGUAGE_RANGE).inject([]) { |r, (l, q)|
    r << [l, [1 - (q || 1).to_f, -l.size, r.size]]
  }.sort_by{ |e| e[1] }.map{ |e|
    l, c = e[0].split(/-/, 2)
    c ? "#{l.downcase}-#{c.upcase}" : l.downcase
  }
end