Navigation Menu

Skip to content

Commit

Permalink
Strip all whitespace from Accept-Language header before parsing
Browse files Browse the repository at this point in the history
  • Loading branch information
phene committed Aug 23, 2012
1 parent 3333337 commit b410944
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 2 deletions.
4 changes: 2 additions & 2 deletions lib/http_accept_language/parser.rb
Expand Up @@ -17,9 +17,9 @@ def initialize(header)
# # => [ 'nl-NL', 'nl-BE', 'nl', 'en-US', 'en' ]
#
def user_preferred_languages
@user_preferred_languages ||= header.split(/\s*,\s*/).collect do |l|
@user_preferred_languages ||= header.gsub(/\s+/, '').split(/,/).collect do |l|
l += ';q=1.0' unless l =~ /;q=\d+\.\d+$/
l.split(';q=')
l.split(/;q=/)
end.sort do |x,y|
raise "Not correctly formatted" unless x.first =~ /^[a-z\-0-9]+$/i
y.last.to_f <=> x.last.to_f
Expand Down
5 changes: 5 additions & 0 deletions spec/parser_spec.rb
Expand Up @@ -20,6 +20,11 @@ def parser
parser.user_preferred_languages.should eq []
end

it "should properly respect whitespace" do
parser.header = 'en-us, en-gb; q=0.8,en;q = 0.6,es-419'
parser.user_preferred_languages.should eq %w{en-US es-419 en-GB en}
end

it "should find first available language" do
parser.preferred_language_from(%w{en en-GB}).should eq "en-GB"
end
Expand Down

0 comments on commit b410944

Please sign in to comment.