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