magic-localized_country_select 0.1.2 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.travis.yml +7 -0
- data/Gemfile +3 -0
- data/Rakefile +3 -2
- data/VERSION +1 -1
- data/lib/localized_country_select.rb +16 -22
- data/magic-localized_country_select.gemspec +12 -4
- data/test/localized_country_select_test.rb +12 -16
- metadata +30 -5
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/Rakefile
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
require 'rake'
|
4
4
|
require 'rake/testtask'
|
5
|
-
require '
|
5
|
+
require 'rdoc/task'
|
6
6
|
|
7
7
|
#load File.join(File.dirname(__FILE__), 'lib', 'tasks', 'localized_country_select_tasks.rake')
|
8
8
|
|
@@ -36,7 +36,8 @@ begin
|
|
36
36
|
gemspec.description = "Localized country select list"
|
37
37
|
gemspec.email = "mail@magiclabs.de"
|
38
38
|
gemspec.homepage = "https://github.com/magiclabs/localized_country_select"
|
39
|
-
gemspec.authors = ["LIM SAS", "Damien MATHIEU", "Julien SANCHEZ", "Hervé GAUCHER"]
|
39
|
+
gemspec.authors = ["LIM SAS", "Damien MATHIEU", "Julien SANCHEZ", "Hervé GAUCHER", "Thomas von Deyen"]
|
40
|
+
gemspec.add_dependency "rails", "~> 3"
|
40
41
|
gemspec.add_dependency "hpricot", "~> 0.8"
|
41
42
|
end
|
42
43
|
rescue LoadError
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
@@ -23,23 +23,23 @@ load 'tasks/localized_country_select_tasks.rake'
|
|
23
23
|
#
|
24
24
|
module LocalizedCountrySelect
|
25
25
|
class << self
|
26
|
+
|
26
27
|
# Returns array with codes and localized country names (according to <tt>I18n.locale</tt>)
|
27
28
|
# for <tt><option></tt> tags
|
28
|
-
def localized_countries_array(options={})
|
29
|
-
if
|
30
|
-
I18n.translate(:countries).map { |key, value| [key.to_s.upcase] }.
|
31
|
-
sort_by { |country| country.first }
|
29
|
+
def localized_countries_array(options = {})
|
30
|
+
if options[:description] == :abbreviated
|
31
|
+
I18n.translate(:countries).map { |key, value| [key.to_s.upcase] }.sort_by { |country| country.first }
|
32
32
|
else
|
33
|
-
I18n.translate(:countries).map { |key, value| [value, key.to_s.upcase] }.
|
34
|
-
sort_by { |country| country.first }
|
33
|
+
I18n.translate(:countries).map { |key, value| [value, key.to_s.upcase] }.sort_by { |country| country.first }
|
35
34
|
end
|
36
35
|
end
|
36
|
+
|
37
37
|
# Return array with codes and localized country names for array of country codes passed as argument
|
38
38
|
# == Example
|
39
39
|
# priority_countries_array([:TW, :CN])
|
40
40
|
# # => [ ['Taiwan', 'TW'], ['China', 'CN'] ]
|
41
|
-
def priority_countries_array(country_codes=[],options={})
|
42
|
-
if
|
41
|
+
def priority_countries_array(country_codes = [], options = {})
|
42
|
+
if options[:description] == :abbreviated
|
43
43
|
country_codes.map { |code| [code.to_s.upcase] }
|
44
44
|
else
|
45
45
|
countries = I18n.translate(:countries)
|
@@ -59,8 +59,7 @@ module ActionView
|
|
59
59
|
# Country codes listed as an array of symbols in +priority_countries+ argument will be listed first
|
60
60
|
# TODO : Implement pseudo-named args with a hash, not the "somebody said PHP?" multiple args sillines
|
61
61
|
def country_select(object, method, priority_countries = nil, options = {}, html_options = {})
|
62
|
-
InstanceTag.new(object, method, self, options.delete(:object)).
|
63
|
-
to_localized_country_select_tag(priority_countries, options, html_options)
|
62
|
+
InstanceTag.new(object, method, self, options.delete(:object)).to_localized_country_select_tag(priority_countries, options, html_options)
|
64
63
|
end
|
65
64
|
|
66
65
|
# Return "named" select and option tags according to given arguments.
|
@@ -68,17 +67,17 @@ module ActionView
|
|
68
67
|
# It behaves likes older object-binded brother +localized_country_select+ otherwise
|
69
68
|
# TODO : Implement pseudo-named args with a hash, not the "somebody said PHP?" multiple args sillines
|
70
69
|
def country_select_tag(name, selected_value = nil, priority_countries = nil, html_options = {})
|
71
|
-
select_tag
|
70
|
+
select_tag(name.to_sym, country_options_for_select(selected_value, priority_countries), html_options.stringify_keys)
|
72
71
|
end
|
73
72
|
|
74
73
|
# Returns a string of option tags for countries according to locale. Supply the country code in upper-case ('US', 'DE')
|
75
74
|
# as +selected+ to have it marked as the selected option tag.
|
76
75
|
# Country codes listed as an array of symbols in +priority_countries+ argument will be listed first
|
77
|
-
def country_options_for_select(selected = nil, priority_countries = nil,options={})
|
78
|
-
country_options = ""
|
79
|
-
if priority_countries
|
80
|
-
country_options += options_for_select(LocalizedCountrySelect::priority_countries_array(priority_countries,options), selected)
|
81
|
-
country_options += "<option value=\"\" disabled=\"disabled\">-------------</option>\n"
|
76
|
+
def country_options_for_select(selected = nil, priority_countries = nil, options = {})
|
77
|
+
country_options = "".html_safe
|
78
|
+
if priority_countries.present?
|
79
|
+
country_options += options_for_select(LocalizedCountrySelect::priority_countries_array(priority_countries, options), selected)
|
80
|
+
country_options += "<option value=\"\" disabled=\"disabled\">-------------</option>\n".html_safe
|
82
81
|
end
|
83
82
|
return country_options + options_for_select(LocalizedCountrySelect::localized_countries_array(options), selected)
|
84
83
|
end
|
@@ -90,12 +89,7 @@ module ActionView
|
|
90
89
|
html_options = html_options.stringify_keys
|
91
90
|
add_default_name_and_id(html_options)
|
92
91
|
value = value(object)
|
93
|
-
content_tag("select",
|
94
|
-
add_options(
|
95
|
-
country_options_for_select(value, priority_countries,options),
|
96
|
-
options, value
|
97
|
-
), html_options
|
98
|
-
)
|
92
|
+
content_tag("select", add_options(country_options_for_select(value, priority_countries,options), options, value), html_options)
|
99
93
|
end
|
100
94
|
end
|
101
95
|
|
@@ -5,17 +5,19 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "magic-localized_country_select"
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.2.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
-
s.authors = ["LIM SAS", "Damien MATHIEU", "Julien SANCHEZ", "Herv\u{e9} GAUCHER"]
|
12
|
-
s.date = "2012-
|
11
|
+
s.authors = ["LIM SAS", "Damien MATHIEU", "Julien SANCHEZ", "Herv\u{e9} GAUCHER", "Thomas von Deyen"]
|
12
|
+
s.date = "2012-03-08"
|
13
13
|
s.description = "Localized country select list"
|
14
14
|
s.email = "mail@magiclabs.de"
|
15
15
|
s.extra_rdoc_files = [
|
16
16
|
"README.rdoc"
|
17
17
|
]
|
18
18
|
s.files = [
|
19
|
+
".travis.yml",
|
20
|
+
"Gemfile",
|
19
21
|
"MIT-LICENSE",
|
20
22
|
"README.rdoc",
|
21
23
|
"Rakefile",
|
@@ -32,18 +34,24 @@ Gem::Specification.new do |s|
|
|
32
34
|
]
|
33
35
|
s.homepage = "https://github.com/magiclabs/localized_country_select"
|
34
36
|
s.require_paths = ["lib"]
|
35
|
-
s.rubygems_version = "1.8.
|
37
|
+
s.rubygems_version = "1.8.15"
|
36
38
|
s.summary = "Localized country select list"
|
37
39
|
|
38
40
|
if s.respond_to? :specification_version then
|
39
41
|
s.specification_version = 3
|
40
42
|
|
41
43
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
44
|
+
s.add_runtime_dependency(%q<magic-localized_country_select>, [">= 0"])
|
45
|
+
s.add_runtime_dependency(%q<rails>, ["~> 3"])
|
42
46
|
s.add_runtime_dependency(%q<hpricot>, ["~> 0.8"])
|
43
47
|
else
|
48
|
+
s.add_dependency(%q<magic-localized_country_select>, [">= 0"])
|
49
|
+
s.add_dependency(%q<rails>, ["~> 3"])
|
44
50
|
s.add_dependency(%q<hpricot>, ["~> 0.8"])
|
45
51
|
end
|
46
52
|
else
|
53
|
+
s.add_dependency(%q<magic-localized_country_select>, [">= 0"])
|
54
|
+
s.add_dependency(%q<rails>, ["~> 3"])
|
47
55
|
s.add_dependency(%q<hpricot>, ["~> 0.8"])
|
48
56
|
end
|
49
57
|
end
|
@@ -1,23 +1,15 @@
|
|
1
|
-
#
|
2
|
-
$KCODE = 'u'
|
1
|
+
# encoding: utf-8
|
3
2
|
|
4
3
|
require 'test/unit'
|
5
4
|
|
6
5
|
require 'rubygems'
|
7
6
|
require 'active_support'
|
8
7
|
require 'action_controller'
|
9
|
-
# require 'action_controller/test_process'
|
10
8
|
require 'action_view'
|
11
9
|
require 'action_view/helpers'
|
12
10
|
require 'action_view/helpers/tag_helper'
|
13
11
|
require 'i18n'
|
14
12
|
|
15
|
-
begin
|
16
|
-
require 'redgreen'
|
17
|
-
rescue LoadError
|
18
|
-
puts "[!] Install redgreen gem for better test output ($ sudo gem install redgreen)"
|
19
|
-
end unless ENV["TM_FILEPATH"]
|
20
|
-
|
21
13
|
require 'localized_country_select'
|
22
14
|
|
23
15
|
class LocalizedCountrySelectTest < Test::Unit::TestCase
|
@@ -27,12 +19,12 @@ class LocalizedCountrySelectTest < Test::Unit::TestCase
|
|
27
19
|
include ActionView::Helpers::FormTagHelper
|
28
20
|
|
29
21
|
def test_action_view_should_include_helper_for_object
|
30
|
-
assert ActionView::Helpers::FormBuilder.instance_methods.include?(
|
31
|
-
assert ActionView::Helpers::FormOptionsHelper.instance_methods.include?(
|
22
|
+
assert ActionView::Helpers::FormBuilder.instance_methods.include?(:country_select)
|
23
|
+
assert ActionView::Helpers::FormOptionsHelper.instance_methods.include?(:country_select)
|
32
24
|
end
|
33
25
|
|
34
26
|
def test_action_view_should_include_helper_tag
|
35
|
-
assert ActionView::Helpers::FormOptionsHelper.instance_methods.include?(
|
27
|
+
assert ActionView::Helpers::FormOptionsHelper.instance_methods.include?(:country_select_tag)
|
36
28
|
end
|
37
29
|
|
38
30
|
def test_should_return_select_tag_with_proper_name_for_object
|
@@ -43,7 +35,6 @@ class LocalizedCountrySelectTest < Test::Unit::TestCase
|
|
43
35
|
end
|
44
36
|
|
45
37
|
def test_should_return_select_tag_with_proper_name
|
46
|
-
# puts country_select_tag( "competition_submission[data][citizenship]", nil)
|
47
38
|
assert country_select_tag( "competition_submission[data][citizenship]", nil) =~
|
48
39
|
Regexp.new(
|
49
40
|
Regexp.escape('<select id="competition_submission_data_citizenship" name="competition_submission[data][citizenship]">') ),
|
@@ -72,7 +63,6 @@ class LocalizedCountrySelectTest < Test::Unit::TestCase
|
|
72
63
|
|
73
64
|
def test_localized_countries_array_returns_correctly
|
74
65
|
assert_nothing_raised { LocalizedCountrySelect::localized_countries_array() }
|
75
|
-
# puts LocalizedCountrySelect::localized_countries_array.inspect
|
76
66
|
I18n.locale = 'en'
|
77
67
|
assert_equal 243, LocalizedCountrySelect::localized_countries_array.size
|
78
68
|
assert_equal 'Afghanistan', LocalizedCountrySelect::localized_countries_array.first[0]
|
@@ -103,14 +93,20 @@ class LocalizedCountrySelectTest < Test::Unit::TestCase
|
|
103
93
|
assert_match Regexp.new(Regexp.escape(%Q{<option value="BT">Бутан</option>\n<option value="VU">Вануату</option>})), country_select(:user, :country)
|
104
94
|
end
|
105
95
|
|
96
|
+
def test_country_options_for_select_string_is_html_safe
|
97
|
+
assert country_options_for_select.html_safe?, "country_options should be html_safe"
|
98
|
+
end
|
99
|
+
|
100
|
+
def test_country_options_for_select_string_with_priority_countries_is_html_safe
|
101
|
+
assert country_options_for_select(nil, ['DE']).html_safe?, "country_options with priority countries should be html_safe"
|
102
|
+
end
|
103
|
+
|
106
104
|
# private
|
107
105
|
|
108
106
|
def setup
|
109
107
|
['ru', 'en'].each do |locale|
|
110
|
-
# I18n.load_translations( File.join(File.dirname(__FILE__), '..', 'locale', "#{locale}.rb") ) # <-- Old style! :)
|
111
108
|
I18n.load_path += Dir[ File.join(File.dirname(__FILE__), '..', 'locale', "#{locale}.rb") ]
|
112
109
|
end
|
113
|
-
# I18n.locale = I18n.default_locale
|
114
110
|
I18n.locale = 'en'
|
115
111
|
end
|
116
112
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: magic-localized_country_select
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,14 +9,37 @@ authors:
|
|
9
9
|
- Damien MATHIEU
|
10
10
|
- Julien SANCHEZ
|
11
11
|
- Hervé GAUCHER
|
12
|
+
- Thomas von Deyen
|
12
13
|
autorequire:
|
13
14
|
bindir: bin
|
14
15
|
cert_chain: []
|
15
|
-
date: 2012-
|
16
|
+
date: 2012-03-08 00:00:00.000000000 Z
|
16
17
|
dependencies:
|
18
|
+
- !ruby/object:Gem::Dependency
|
19
|
+
name: magic-localized_country_select
|
20
|
+
requirement: &70114907122320 !ruby/object:Gem::Requirement
|
21
|
+
none: false
|
22
|
+
requirements:
|
23
|
+
- - ! '>='
|
24
|
+
- !ruby/object:Gem::Version
|
25
|
+
version: '0'
|
26
|
+
type: :runtime
|
27
|
+
prerelease: false
|
28
|
+
version_requirements: *70114907122320
|
29
|
+
- !ruby/object:Gem::Dependency
|
30
|
+
name: rails
|
31
|
+
requirement: &70114907121780 !ruby/object:Gem::Requirement
|
32
|
+
none: false
|
33
|
+
requirements:
|
34
|
+
- - ~>
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: '3'
|
37
|
+
type: :runtime
|
38
|
+
prerelease: false
|
39
|
+
version_requirements: *70114907121780
|
17
40
|
- !ruby/object:Gem::Dependency
|
18
41
|
name: hpricot
|
19
|
-
requirement: &
|
42
|
+
requirement: &70114907121260 !ruby/object:Gem::Requirement
|
20
43
|
none: false
|
21
44
|
requirements:
|
22
45
|
- - ~>
|
@@ -24,7 +47,7 @@ dependencies:
|
|
24
47
|
version: '0.8'
|
25
48
|
type: :runtime
|
26
49
|
prerelease: false
|
27
|
-
version_requirements: *
|
50
|
+
version_requirements: *70114907121260
|
28
51
|
description: Localized country select list
|
29
52
|
email: mail@magiclabs.de
|
30
53
|
executables: []
|
@@ -32,6 +55,8 @@ extensions: []
|
|
32
55
|
extra_rdoc_files:
|
33
56
|
- README.rdoc
|
34
57
|
files:
|
58
|
+
- .travis.yml
|
59
|
+
- Gemfile
|
35
60
|
- MIT-LICENSE
|
36
61
|
- README.rdoc
|
37
62
|
- Rakefile
|
@@ -65,7 +90,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
65
90
|
version: '0'
|
66
91
|
requirements: []
|
67
92
|
rubyforge_project:
|
68
|
-
rubygems_version: 1.8.
|
93
|
+
rubygems_version: 1.8.15
|
69
94
|
signing_key:
|
70
95
|
specification_version: 3
|
71
96
|
summary: Localized country select list
|