Skip to content

Commit

Permalink
Pass only header itself to parser
Browse files Browse the repository at this point in the history
  • Loading branch information
iain committed Jul 13, 2012
1 parent 3977c5b commit 4fd147d
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 13 deletions.
8 changes: 4 additions & 4 deletions lib/http_accept_language/parser.rb
Expand Up @@ -2,10 +2,10 @@ module HttpAcceptLanguage

class Parser

attr_reader :env
attr_accessor :header

def initialize(env)
@env = env
def initialize(header)
@header = header
end

# Returns a sorted array based on user preference in HTTP_ACCEPT_LANGUAGE.
Expand All @@ -17,7 +17,7 @@ def initialize(env)
# # => [ 'nl-NL', 'nl-BE', 'nl', 'en-US', 'en' ]
#
def user_preferred_languages
@user_preferred_languages ||= env['HTTP_ACCEPT_LANGUAGE'].split(/\s*,\s*/).collect do |l|
@user_preferred_languages ||= header.split(/\s*,\s*/).collect do |l|
l += ';q=1.0' unless l =~ /;q=\d+\.\d+$/
l.split(';q=')
end.sort do |x,y|
Expand Down
2 changes: 1 addition & 1 deletion lib/http_accept_language/rack.rb
Expand Up @@ -7,7 +7,7 @@ def initialize(app)

def call(env)
def env.http_accept_language
@http_accept_language ||= Parser.new(self)
@http_accept_language ||= Parser.new(self['HTTP_ACCEPT_LANGUAGE'])
end
@app.call(env)
end
Expand Down
4 changes: 2 additions & 2 deletions lib/http_accept_language/rails.rb
Expand Up @@ -5,8 +5,8 @@ module Rails

extend Forwardable

def http_accept_language_parser
@http_accept_language_parser ||= Parser.new(env)
def http_accept_language
@http_accept_language_parser ||= Parser.new(env['HTTP_ACCEPT_LANGUAGE'])
end

def_delegators :http_accept_language_parser,
Expand Down
12 changes: 6 additions & 6 deletions spec/parser_spec.rb
Expand Up @@ -3,11 +3,11 @@
describe HttpAcceptLanguage::Parser do

def parser
@parser ||= HttpAcceptLanguage::Parser.new('HTTP_ACCEPT_LANGUAGE' => 'en-us,en-gb;q=0.8,en;q=0.6,es-419')
@parser ||= HttpAcceptLanguage::Parser.new('en-us,en-gb;q=0.8,en;q=0.6,es-419')
end

it "should return empty array" do
parser.env['HTTP_ACCEPT_LANGUAGE'] = nil
parser.header = nil
parser.user_preferred_languages.should eq []
end

Expand All @@ -16,7 +16,7 @@ def parser
end

it "should ignore jambled header" do
parser.env['HTTP_ACCEPT_LANGUAGE'] = 'odkhjf89fioma098jq .,.,'
parser.header = 'odkhjf89fioma098jq .,.,'
parser.user_preferred_languages.should eq []
end

Expand All @@ -30,12 +30,12 @@ def parser
end

it "should find first compatible from user preferred" do
parser.env['HTTP_ACCEPT_LANGUAGE'] = 'en-us,de-de'
parser.header = 'en-us,de-de'
parser.compatible_language_from(%w{de en}).should eq 'en'
end

it "should accept symbols as available languages" do
parser.env['HTTP_ACCEPT_LANGUAGE'] = 'en-us'
parser.header = 'en-us'
parser.compatible_language_from([:"en-HK"]).should eq :"en-HK"
end

Expand All @@ -44,7 +44,7 @@ def parser
end

it "should find most compatible language from user preferred" do
parser.env['HTTP_ACCEPT_LANGUAGE'] = 'ja,en-gb,en-us,fr-fr'
parser.header = 'ja,en-gb,en-us,fr-fr'
parser.language_region_compatible_from(%w{en-UK en-US ja-JP}).should eq "ja-JP"
end

Expand Down

0 comments on commit 4fd147d

Please sign in to comment.