http_accept_language 1.0.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -1 +1,5 @@
1
- pkg
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
5
+ .rvmrc
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in http_accept_language.gemspec
4
+ gemspec
data/README.rdoc CHANGED
@@ -16,14 +16,14 @@ See also: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
16
16
 
17
17
  class SomeController < ApplicationController
18
18
  def some_action
19
-
19
+
20
20
  request.user_preferred_languages
21
21
  # => [ 'nl-NL', 'nl-BE', 'nl', 'en-US', 'en' ]
22
-
22
+
23
23
  available = %w{en en-US nl-BE}
24
24
  request.preferred_language_from(available)
25
25
  # => 'nl-BE'
26
-
26
+
27
27
  request.user_preferred_languages
28
28
  # => [ 'en-GB']
29
29
  available = %w{en-US}
@@ -34,11 +34,12 @@ See also: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
34
34
 
35
35
  == Installation
36
36
 
37
- Install the gem <tt>http_accept_language</tt>, require it in your Rails app.
37
+ Install the gem +http_accept_language+, require it in your Rails app.
38
38
 
39
39
  == Changelog
40
40
 
41
+ * 2011-09-11: 1.0.2 release, still works appearantly
41
42
  * 2010-01-05: Gem release
42
43
  * 2009-03-12: Rails 2.3 compatible
43
44
 
44
- Copyright (c) 2008-2010 Iain Hecker, released under the MIT license
45
+ Copyright (c) 2008-2011 Iain Hecker, released under the MIT license
data/Rakefile CHANGED
@@ -1,19 +1,4 @@
1
- require 'rake'
2
-
3
- begin
4
- require 'jeweler'
5
- Jeweler::Tasks.new do |gem|
6
- gem.name = "http_accept_language"
7
- gem.summary = %Q{Parse the HTTP Accept Language Header}
8
- gem.description = %Q{Find out which locale the user preferes by reading the languages they specified in their browser}
9
- gem.email = "iain@iain.nl"
10
- gem.homepage = "http://github.com/iain/http_accept_language"
11
- gem.authors = ["Iain Hecker"]
12
- end
13
- Jeweler::GemcutterTasks.new
14
- rescue LoadError
15
- puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
16
- end
1
+ require "bundler/gem_tasks"
17
2
 
18
3
  require 'rake/testtask'
19
4
  desc 'Test the http_accept_language plugin.'
@@ -32,6 +17,6 @@ Rake::RDocTask.new(:rdoc) do |rdoc|
32
17
  rdoc.rdoc_dir = 'rdoc'
33
18
  rdoc.title = 'HttpAcceptLanguage'
34
19
  rdoc.options << '--line-numbers' << '--inline-source'
35
- rdoc.rdoc_files.include('README')
20
+ rdoc.rdoc_files.include('README.rdoc')
36
21
  rdoc.rdoc_files.include('lib/**/*.rb')
37
22
  end
@@ -1,47 +1,17 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
1
  # -*- encoding: utf-8 -*-
5
-
6
2
  Gem::Specification.new do |s|
7
- s.name = %q{http_accept_language}
8
- s.version = "1.0.1"
9
-
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Iain Hecker"]
12
- s.date = %q{2010-02-25}
3
+ s.name = "http_accept_language"
4
+ s.version = '1.0.2'
5
+ s.authors = ["iain"]
6
+ s.email = ["iain@iain.nl"]
7
+ s.homepage = "https://github.com/iain/http_accept_language"
8
+ s.summary = %q{Find out which locale the user preferes by reading the languages they specified in their browser}
13
9
  s.description = %q{Find out which locale the user preferes by reading the languages they specified in their browser}
14
- s.email = %q{iain@iain.nl}
15
- s.extra_rdoc_files = [
16
- "README.rdoc"
17
- ]
18
- s.files = [
19
- ".gitignore",
20
- "README.rdoc",
21
- "Rakefile",
22
- "VERSION",
23
- "http_accept_language.gemspec",
24
- "lib/http_accept_language.rb",
25
- "rails/init.rb",
26
- "test/http_accept_language_test.rb"
27
- ]
28
- s.homepage = %q{http://github.com/iain/http_accept_language}
29
- s.rdoc_options = ["--charset=UTF-8"]
30
- s.require_paths = ["lib"]
31
- s.rubygems_version = %q{1.3.6}
32
- s.summary = %q{Parse the HTTP Accept Language Header}
33
- s.test_files = [
34
- "test/http_accept_language_test.rb"
35
- ]
36
10
 
37
- if s.respond_to? :specification_version then
38
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
39
- s.specification_version = 3
11
+ s.rubyforge_project = "http_accept_language"
40
12
 
41
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
42
- else
43
- end
44
- else
45
- end
13
+ s.files = `git ls-files`.split("\n")
14
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
15
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
16
+ s.require_paths = ["lib"]
46
17
  end
47
-
@@ -9,7 +9,7 @@ module HttpAcceptLanguage
9
9
  # # => [ 'nl-NL', 'nl-BE', 'nl', 'en-US', 'en' ]
10
10
  #
11
11
  def user_preferred_languages
12
- @user_preferred_languages ||= env['HTTP_ACCEPT_LANGUAGE'].split(',').collect do |l|
12
+ @user_preferred_languages ||= env['HTTP_ACCEPT_LANGUAGE'].split(/\s*,\s*/).collect do |l|
13
13
  l += ';q=1.0' unless l =~ /;q=\d+\.\d+$/
14
14
  l.split(';q=')
15
15
  end.sort do |x,y|
@@ -22,6 +22,12 @@ module HttpAcceptLanguage
22
22
  []
23
23
  end
24
24
 
25
+ # Sets the user languages preference, overiding the browser
26
+ #
27
+ def user_preferred_languages=(languages)
28
+ @user_preferred_languages = languages
29
+ end
30
+
25
31
  # Finds the locale specifically requested by the browser.
26
32
  #
27
33
  # Example:
@@ -40,20 +46,20 @@ module HttpAcceptLanguage
40
46
  #
41
47
  # request.compatible_language_from I18n.available_locales
42
48
  #
43
- def compatible_language_from(array)
44
- user_preferred_languages.map do |x|
45
- x = x.to_s.split("-")[0]
46
- array.find do |y|
47
- y.to_s.split("-")[0] == x
49
+ def compatible_language_from(available_languages)
50
+ user_preferred_languages.map do |x| #en-US
51
+ available_languages.find do |y| # en
52
+ y = y.to_s
53
+ x == y || x.split('-', 2).first == y.split('-', 2).first
48
54
  end
49
55
  end.compact.first
50
56
  end
51
57
 
52
58
  end
53
- if defined?(ActionController::Request)
54
- ActionController::Request.send :include, HttpAcceptLanguage
55
- elsif defined?(ActionController::AbstractRequest)
56
- ActionController::AbstractRequest.send :include, HttpAcceptLanguage
57
- elsif defined?(ActionController::CgiRequest)
58
- ActionController::CgiRequest.send :include, HttpAcceptLanguage
59
+ if defined?(ActionDispatch::Request)
60
+ ActionDispatch::Request.send :include, HttpAcceptLanguage
61
+ elsif defined?(ActionDispatch::AbstractRequest)
62
+ ActionDispatch::AbstractRequest.send :include, HttpAcceptLanguage
63
+ elsif defined?(ActionDispatch::CgiRequest)
64
+ ActionDispatch::CgiRequest.send :include, HttpAcceptLanguage
59
65
  end
@@ -37,6 +37,11 @@ class HttpAcceptLanguageTest < Test::Unit::TestCase
37
37
  request.env['HTTP_ACCEPT_LANGUAGE'] = 'en-us,de-de'
38
38
  assert_equal 'en', request.compatible_language_from(%w{de en})
39
39
  end
40
+
41
+ def test_should_accept_symbols_as_available_languages
42
+ request.env['HTTP_ACCEPT_LANGUAGE'] = 'en-us'
43
+ assert_equal :"en-HK", request.compatible_language_from([:"en-HK"])
44
+ end
40
45
 
41
46
  private
42
47
  def request
metadata CHANGED
@@ -1,69 +1,56 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: http_accept_language
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 1
7
- - 0
8
- - 1
9
- version: 1.0.1
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.2
5
+ prerelease:
10
6
  platform: ruby
11
- authors:
12
- - Iain Hecker
7
+ authors:
8
+ - iain
13
9
  autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
-
17
- date: 2010-02-25 00:00:00 +01:00
18
- default_executable:
12
+ date: 2011-09-11 00:00:00.000000000Z
19
13
  dependencies: []
20
-
21
- description: Find out which locale the user preferes by reading the languages they specified in their browser
22
- email: iain@iain.nl
14
+ description: Find out which locale the user preferes by reading the languages they
15
+ specified in their browser
16
+ email:
17
+ - iain@iain.nl
23
18
  executables: []
24
-
25
19
  extensions: []
26
-
27
- extra_rdoc_files:
28
- - README.rdoc
29
- files:
20
+ extra_rdoc_files: []
21
+ files:
30
22
  - .gitignore
23
+ - Gemfile
31
24
  - README.rdoc
32
25
  - Rakefile
33
- - VERSION
34
26
  - http_accept_language.gemspec
35
27
  - lib/http_accept_language.rb
36
28
  - rails/init.rb
37
29
  - test/http_accept_language_test.rb
38
- has_rdoc: true
39
- homepage: http://github.com/iain/http_accept_language
30
+ homepage: https://github.com/iain/http_accept_language
40
31
  licenses: []
41
-
42
32
  post_install_message:
43
- rdoc_options:
44
- - --charset=UTF-8
45
- require_paths:
33
+ rdoc_options: []
34
+ require_paths:
46
35
  - lib
47
- required_ruby_version: !ruby/object:Gem::Requirement
48
- requirements:
49
- - - ">="
50
- - !ruby/object:Gem::Version
51
- segments:
52
- - 0
53
- version: "0"
54
- required_rubygems_version: !ruby/object:Gem::Requirement
55
- requirements:
56
- - - ">="
57
- - !ruby/object:Gem::Version
58
- segments:
59
- - 0
60
- version: "0"
36
+ required_ruby_version: !ruby/object:Gem::Requirement
37
+ none: false
38
+ requirements:
39
+ - - ! '>='
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ required_rubygems_version: !ruby/object:Gem::Requirement
43
+ none: false
44
+ requirements:
45
+ - - ! '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
61
48
  requirements: []
62
-
63
- rubyforge_project:
64
- rubygems_version: 1.3.6
49
+ rubyforge_project: http_accept_language
50
+ rubygems_version: 1.8.6
65
51
  signing_key:
66
52
  specification_version: 3
67
- summary: Parse the HTTP Accept Language Header
68
- test_files:
53
+ summary: Find out which locale the user preferes by reading the languages they specified
54
+ in their browser
55
+ test_files:
69
56
  - test/http_accept_language_test.rb
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 1.0.1