brainsome_localized_country_select 0.9.10

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: fa7f88f79da92af82183bb6c113c73087b6407d4
4
+ data.tar.gz: 4e42189f21f557902411ef36feb6e2eec5400196
5
+ SHA512:
6
+ metadata.gz: 70a864ff607803432057e72772f8645b9e988f44af3fccb4a4e25b83155689272bb68c9c3e8926c5f32e6b1ddf5af7373bbe78507bcab510045147e2e77534fa
7
+ data.tar.gz: d44e34c3c28722686974e218f93b4157c7871467ec9e5b202a962f56df8a1efd18a09d50307945fd7182254ef2f645c377c91c024b8ffba3c7ce9e07e00fd2d7
data/.gitignore ADDED
@@ -0,0 +1,21 @@
1
+ .DS_Store
2
+ *.gem
3
+ *.rbc
4
+ .bundle
5
+ .config
6
+ .yardoc
7
+ Gemfile.lock
8
+ InstalledFiles
9
+ _yardoc
10
+ coverage
11
+ doc/
12
+ lib/bundler/man
13
+ pkg
14
+ rdoc
15
+ spec/reports
16
+ test/tmp
17
+ test/version_tmp
18
+ tmp
19
+ .ruby-gemset
20
+ .ruby-version
21
+ .rvmrc
data/.travis.yml ADDED
@@ -0,0 +1,13 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.1.2
4
+ - 2.1.1
5
+ - 2.0.0
6
+ - 1.9.3
7
+ - 1.9.2
8
+ - jruby-18mode
9
+ - jruby-19mode
10
+ - ruby-head
11
+ - jruby-head
12
+ - 1.8.7
13
+ - ree
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2008 [name of plugin creator]
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc ADDED
@@ -0,0 +1,84 @@
1
+ = LocalizedCountrySelect
2
+
3
+ Rails plugin to provide support for localized <tt><select></tt> menu with country names and for
4
+ storing country information as country _code_ (eg. 'es'), not _name_ (eg. 'Spain'), in the database.
5
+
6
+ Uses the Rails internationalization framework (I18n, http://rails-i18n.org) for translating the names of countries.
7
+ Requires Rails 2.2 (released November 21st, 2008) or later versions.
8
+ Country names are loaded from hashes in plugin directory, according to <tt>I18n.locale</tt> value.
9
+
10
+ You can easily translate country codes in your application like this:
11
+
12
+ <%= I18n.t @user.country, :scope => 'countries' %>
13
+
14
+ Comes with a Rake task <tt>rake import:country_select LOCALE=de</tt> for importing country names
15
+ from Unicode.org's CLDR repository (http://www.unicode.org/cldr/data/charts/summary/root.html)
16
+ Don't forget to restart the application when you add new locale.
17
+
18
+ ActionView helper code is adapted from Rails' default +country_select+ plugin (previously in core).
19
+ See http://github.com/rails/country_select/tree/master/lib/country_select.rb
20
+
21
+ == Rails 3 / Rails 4
22
+
23
+ In your Gemfile add:
24
+
25
+ gem 'localized_country_select', '>= 0.9.9'
26
+
27
+ == Rails 2.3
28
+
29
+ No longer supported, but you can still use old version of gem.
30
+ In environment.rb add
31
+
32
+ config.gem 'localized_country_select', :version => '0.0.1'
33
+
34
+ == Example
35
+
36
+ Show full country names:
37
+
38
+ <%= localized_country_select(:user, :country, [], {:include_blank => 'Please choose...'}) %>
39
+
40
+ will become:
41
+
42
+ <select name="user[country]" id="user_country">
43
+ <option value="">Please choose...</option>
44
+ <option disabled="disabled" value="">-------------</option>
45
+ <option value="AF">Afghanistan</option>
46
+ ...
47
+ <option value="ZW">Zimbabwe</option>
48
+ </select>
49
+
50
+
51
+ Show only country codes:
52
+
53
+ <%= localized_country_select(:user, :country, [], {:include_blank => 'Please choose...', :description => :abbreviated}) %>
54
+
55
+ will become:
56
+
57
+ <select name="user[country]" id="user_country">
58
+ <option value="">Please choose...</option>
59
+ <option disabled="disabled" value="">-------------</option>
60
+ <option value="AF">AF</option>
61
+ ...
62
+ <option value="ZW">ZW</option>
63
+ </select>
64
+
65
+
66
+ for the <tt>en</tt> locale.
67
+
68
+
69
+ You can exclude countries by code using the exclude option (a single code or an array of country codes):
70
+
71
+ localized_country_select(:user, :country, [], {:exclude => [:ZZ, :US]})
72
+
73
+
74
+ == Formtastic and SimpleForm
75
+
76
+ Gem supports (via alias_method) both formtastic and simple_form :country input
77
+
78
+ == Other resources
79
+
80
+ * http://github.com/rails/country_select (Default Rails plugin)
81
+ * http://github.com/russ/country_code_select (Stores country code, not name)
82
+
83
+
84
+ Copyright (c) 2008 Karel Minarik (www.karmi.cz), released under the MIT license
data/Rakefile ADDED
@@ -0,0 +1,24 @@
1
+ require 'rake'
2
+ require 'rake/testtask'
3
+ require 'rake/task'
4
+
5
+ load File.join(File.dirname(__FILE__), 'lib', 'tasks', 'localized_country_select_tasks.rake')
6
+
7
+ desc 'Default: run unit tests.'
8
+ task :default => :test
9
+
10
+ desc 'Test the localized_country_select plugin.'
11
+ Rake::TestTask.new(:test) do |t|
12
+ t.libs << 'lib'
13
+ t.pattern = 'test/**/*_test.rb'
14
+ t.verbose = true
15
+ end
16
+
17
+ #desc 'Generate documentation for the localized_country_select plugin.'
18
+ #Rake::Task.new(:rdoc) do |rdoc|
19
+ #rdoc.rdoc_dir = 'rdoc'
20
+ #rdoc.title = 'LocalizedCountrySelect'
21
+ #rdoc.options << '--line-numbers' << '--inline-source'
22
+ #rdoc.rdoc_files.include('README.rdoc')
23
+ #rdoc.rdoc_files.include('lib/**/*.rb')
24
+ #end
data/install.rb ADDED
@@ -0,0 +1,4 @@
1
+ # Show the README text file
2
+ puts "\n\n"
3
+ puts IO.read(File.join(File.dirname(__FILE__), 'README.rdoc'))
4
+ puts "\n"
@@ -0,0 +1,13 @@
1
+ require 'localized_country_select'
2
+
3
+ module LocalizedCountrySelect
4
+ if defined? Rails::Railtie
5
+ require 'rails'
6
+ class Railtie < Rails::Railtie
7
+ rake_tasks do
8
+ load "tasks/localized_country_select_tasks.rake"
9
+ end
10
+ end
11
+ end
12
+
13
+ end
@@ -0,0 +1,3 @@
1
+ module LocalizedCountrySelect
2
+ VERSION = "0.9.10"
3
+ end
@@ -0,0 +1,134 @@
1
+ # = LocalizedCountrySelect
2
+ #
3
+ # View helper for displaying select list with countries:
4
+ #
5
+ # localized_country_select(:user, :country)
6
+ #
7
+ # Works just like the default Rails' +country_select+ plugin, but stores countries as
8
+ # country *codes*, not *names*, in the database.
9
+ #
10
+ # You can easily translate country codes in your application like this:
11
+ # <%= I18n.t @user.country, :scope => 'countries' %>
12
+ #
13
+ # Uses the Rails internationalization framework (I18n) for translating the names of countries.
14
+ #
15
+ # Use Rake task <tt>rake import:country_select 'de'</tt> for importing country names
16
+ # from Unicode.org's CLDR repository (http://www.unicode.org/cldr/data/charts/summary/root.html)
17
+ #
18
+ # Code adapted from Rails' default +country_select+ plugin (previously in core)
19
+ # See http://github.com/rails/country_select/tree/master/lib/country_select.rb
20
+ #
21
+
22
+ module LocalizedCountrySelect
23
+ class << self
24
+ # Returns array with codes and localized country names (according to <tt>I18n.locale</tt>)
25
+ # for <tt><option></tt> tags
26
+ def localized_countries_array(options={})
27
+ exclude = Array(options[:exclude]).map {|code| code.to_s.upcase }
28
+ locale = options.delete(:locale) || I18n.locale
29
+
30
+ if(options[:description]==:abbreviated)
31
+ I18n.translate(:countries, locale: locale).map { |key, value| [key.to_s.upcase] if !exclude.include?(key.to_s.upcase) }
32
+ else
33
+ I18n.translate(:countries, locale: locale).map { |key, value| [value, key.to_s.upcase] if !exclude.include?(key.to_s.upcase) }
34
+ end.compact.sort_by { |country| country.first.parameterize }
35
+ end
36
+
37
+ # Return array with codes and localized country names for array of country codes passed as argument
38
+ # == Example
39
+ # priority_countries_array([:TW, :CN])
40
+ # # => [ ['Taiwan', 'TW'], ['China', 'CN'] ]
41
+ def priority_countries_array(country_codes=[],options={})
42
+ if(options[:description]==:abbreviated)
43
+ country_codes.map { |code| [code.to_s.upcase] }
44
+ else
45
+ countries = I18n.translate(:countries)
46
+ country_codes.map { |code| [countries[code.to_s.upcase.to_sym], code.to_s.upcase] }
47
+ end
48
+ end
49
+ end
50
+ end
51
+
52
+ module ActionView
53
+ module Helpers
54
+
55
+ module FormOptionsHelper
56
+ # Return select and option tags for the given object and method, using +localized_country_options_for_select+
57
+ # to generate the list of option tags. Uses <b>country code</b>, not name as option +value+.
58
+ # Country codes listed as an array of symbols in +priority_countries+ argument will be listed first
59
+ # TODO : Implement pseudo-named args with a hash, not the "somebody said PHP?" multiple args sillines
60
+ def localized_country_select(object, method, priority_countries = nil, options = {}, html_options = {})
61
+ tag = if defined?(ActionView::Helpers::InstanceTag) &&
62
+ ActionView::Helpers::InstanceTag.instance_method(:initialize).arity != 0
63
+
64
+ InstanceTag.new(object, method, self, options.delete(:object))
65
+ else
66
+ CountrySelect.new(object, method, self, options)
67
+ end
68
+
69
+ tag.to_localized_country_select_tag(priority_countries, options, html_options)
70
+ end
71
+ alias_method :country_select, :localized_country_select
72
+
73
+ # Return "named" select and option tags according to given arguments.
74
+ # Use +selected_value+ for setting initial value
75
+ # It behaves likes older object-binded brother +localized_country_select+ otherwise
76
+ # TODO : Implement pseudo-named args with a hash, not the "somebody said PHP?" multiple args sillines
77
+ def localized_country_select_tag(name, selected_value = nil, priority_countries = nil, html_options = {})
78
+ select_tag name.to_sym, localized_country_options_for_select(selected_value, priority_countries).html_safe, html_options.stringify_keys
79
+ end
80
+ alias_method :country_select_tag, :localized_country_select_tag
81
+
82
+ # Returns a string of option tags for countries according to locale. Supply the country code in upper-case ('US', 'DE')
83
+ # as +selected+ to have it marked as the selected option tag.
84
+ # Country codes listed as an array of symbols in +priority_countries+ argument will be listed first
85
+ def localized_country_options_for_select(selected = nil, priority_countries = nil, options={})
86
+ country_options = "".html_safe
87
+ if priority_countries
88
+ country_options += options_for_select(LocalizedCountrySelect::priority_countries_array(priority_countries, options), selected)
89
+ country_options += "<option value=\"\" disabled=\"disabled\">-------------</option>\n".html_safe
90
+ return country_options + options_for_select(LocalizedCountrySelect::localized_countries_array(options) - LocalizedCountrySelect::priority_countries_array(priority_countries, options), selected)
91
+ else
92
+ return country_options + options_for_select(LocalizedCountrySelect::localized_countries_array(options), selected)
93
+ end
94
+ end
95
+ alias_method :country_options_for_select, :localized_country_options_for_select
96
+ end
97
+
98
+ module ToCountrySelectTag
99
+ def to_localized_country_select_tag(priority_countries, options, html_options)
100
+ html_options = html_options.stringify_keys
101
+ add_default_name_and_id(html_options)
102
+ value = value(object)
103
+ content_tag("select",
104
+ add_options(
105
+ localized_country_options_for_select(value, priority_countries, options).html_safe,
106
+ options, value
107
+ ), html_options
108
+ )
109
+ end
110
+ end
111
+
112
+ if defined?(ActionView::Helpers::InstanceTag) && ActionView::Helpers::InstanceTag.instance_method(:initialize).arity != 0
113
+ class InstanceTag
114
+ include ToCountrySelectTag
115
+ end
116
+ else
117
+ class CountrySelect < Tags::Base
118
+ include ToCountrySelectTag
119
+ end
120
+ end
121
+
122
+ class FormBuilder
123
+ def localized_country_select(method, priority_countries = nil, options = {}, html_options = {})
124
+ @template.localized_country_select(@object_name, method, priority_countries, options.merge(:object => @object), html_options)
125
+ end
126
+ alias_method :country_select, :localized_country_select
127
+ end
128
+
129
+ end
130
+ end
131
+
132
+ if defined?(Rails)
133
+ require "localized_country_select/railtie"
134
+ end
@@ -0,0 +1,222 @@
1
+ require 'rubygems'
2
+ require 'open-uri'
3
+ require 'active_support/inflector'
4
+
5
+ # Rake task for importing country names from Unicode.org's CLDR repository
6
+ # (http://www.unicode.org/cldr/data/charts/summary/root.html).
7
+ #
8
+ # It parses a HTML file from Unicode.org for given locale and saves the
9
+ # Rails' I18n hash in the plugin +locale+ directory
10
+ #
11
+ # Don't forget to restart the application when you add new locale to load it into Rails!
12
+ #
13
+ # == Parameters
14
+ # LOCALE (required): Sets the locale to use. Output file name will include this.
15
+ # FORMAT (optional): Output format, either 'rb' or 'yml'. Defaults to 'rb' if not specified.
16
+ # WEB_LOCALE (optional): Forces a locale code to use when querying the Unicode.org CLDR archive.
17
+ # PARSER (optional): Forces parser to use. Available are nokogiri, hpricot and libxml.
18
+ #
19
+ # == Examples
20
+ # rake import:country_select LOCALE=de
21
+ # rake import:country_select LOCALE=pt-BR WEB_LOCALE=pt FORMAT=yml
22
+ #
23
+ # The code is deliberately procedural and simple, so it's easily
24
+ # understandable by beginners as an introduction to Rake tasks power.
25
+ # See https://github.com/svenfuchs/ruby-cldr for much more robust solution
26
+
27
+ namespace :import do
28
+
29
+ desc "Import country codes and names for various languages from the Unicode.org CLDR archive."
30
+ task :country_select do
31
+ # TODO : Implement locale import chooser from CLDR root via Highline
32
+
33
+ # Setup variables
34
+ locale = ENV['LOCALE']
35
+ unless locale
36
+ puts "\n[!] Usage: rake import:country_select LOCALE=de\n\n"
37
+ exit 0
38
+ end
39
+
40
+ # convert locale code to Unicode.org CLDR acceptable code
41
+ web_locale = if ENV['WEB_LOCALE'] then ENV['WEB_LOCALE']
42
+ elsif %w(zht zhtw).include?(locale.downcase.gsub(/[-_]/,'')) then 'zh_Hant'
43
+ elsif %w(zhs zhcn).include?(locale.downcase.gsub(/[-_]/,'')) then 'zh_Hans'
44
+ else locale.underscore.split('_')[0] end
45
+
46
+ # ----- Get the CLDR HTML --------------------------------------------------
47
+ begin
48
+ puts "... getting the HTML file for locale '#{web_locale}'"
49
+ url = "http://www.unicode.org/cldr/data/charts/summary/#{web_locale}.html"
50
+ html = open(url).read
51
+ rescue => e
52
+ puts "[!] Invalid locale name '#{web_locale}'! Not found in CLDR (#{e})"
53
+ exit 0
54
+ end
55
+
56
+
57
+ set_parser(ENV['PARSER']) if ENV['PARSER']
58
+ puts "... parsing the HTML file using #{parser.name.split("::").last}"
59
+ countries = parser.parse(html).inject([]) { |arr, (code, attrs)| arr << attrs }
60
+ countries.sort_by! { |c| c[:code] }
61
+ puts "\n\n... imported #{countries.count} countries:"
62
+ puts countries.map { |c| "#{c[:code]}: #{c[:name]}" }.join(", ")
63
+
64
+
65
+ # ----- Prepare the output format ------------------------------------------
66
+
67
+ format = if ENV['FORMAT'].nil?||%(rb ruby).include?(ENV['FORMAT'].downcase) then :rb
68
+ elsif %(yml yaml).include?(ENV['FORMAT'].downcase) then :yml end
69
+
70
+ unless format
71
+ puts "\n[!] FORMAT must be either 'rb' or 'yml'\n\n"
72
+ exit 0
73
+ end
74
+
75
+ if format==:yml
76
+ output =<<HEAD
77
+ #{locale}:
78
+ countries:
79
+ HEAD
80
+ countries.each do |country|
81
+ output << " \"#{country[:code]}\": \"#{country[:name]}\"\n"
82
+ end
83
+
84
+ else # rb format
85
+ output = "#encoding: UTF-8\n"
86
+ output <<<<HEAD
87
+ { :#{locale} => {
88
+
89
+ :countries => {
90
+ HEAD
91
+ countries.each do |country|
92
+ output << "\t\t\t:#{country[:code]} => \"#{country[:name]}\",\n"
93
+ end
94
+ output <<<<TAIL
95
+ }
96
+
97
+ }
98
+ }
99
+ TAIL
100
+ end
101
+
102
+ # ----- Write the parsed values into file ---------------------------------
103
+ puts "\n... writing the output"
104
+ filename = Rails.root.join('config', 'locales', "countries.#{locale}.#{format}")
105
+ if filename.exist?
106
+ filename = Pathname.new("#{filename.to_s}.NEW")
107
+ end
108
+ File.open(filename, 'w+') { |f| f << output }
109
+ puts "\n---\nWritten values for the '#{locale}' into file: #{filename}\n"
110
+ # ------------------------------------------------------------------------------
111
+ end
112
+
113
+ module LocalizedCountrySelectTasks
114
+ class Parser
115
+ attr_reader :html
116
+
117
+ def initialize(html)
118
+ @html = html
119
+ end
120
+
121
+ def self.parse(html)
122
+ self.new(html).parse
123
+ end
124
+
125
+ def parse
126
+ raise NotImplementedError, "#parse method need to be implemented in child class!"
127
+ end
128
+ end
129
+
130
+ class NokogiriParser < Parser
131
+ def document
132
+ @document ||= Nokogiri::HTML(html)
133
+ end
134
+
135
+ def parse
136
+ document.search("//tr").inject({}) do |hash, row|
137
+ n = row.search("td[@class='n']")
138
+ g = row.search("td")
139
+ if n.inner_html =~ /NamesTerritories/ && g.count >= 6 && g[4].inner_html =~ /^[A-Z]{2}/
140
+ code = g[4].inner_text
141
+ code = code[-code.size, 2].to_sym
142
+ name = row.search("td[@class='v']:not([@title])").inner_text
143
+
144
+ hash[code] = {:code => code, :name => name.to_s}
145
+ end
146
+ hash
147
+ end
148
+ end
149
+ end
150
+
151
+ class HpricotParser < NokogiriParser
152
+ def document
153
+ @document ||= Hpricot(html)
154
+ end
155
+ end
156
+
157
+ class LibXMLParser < Parser
158
+ def document
159
+ @document ||= LibXML::XML::HTMLParser.string(html, options: LibXML::XML::HTMLParser::Options::RECOVER).parse
160
+ end
161
+
162
+ def parse
163
+ document.find("//tr").inject({}) do |hash, row|
164
+ n = row.find("td[@class='n']")
165
+ g = row.find("td")
166
+ if n.map(&:content).join =~ /NamesTerritories/ && g.count >= 6 && g[4].inner_xml =~ /^[A-Z]{2}/
167
+ code = g[4].content
168
+ code = code[-code.size, 2].to_sym
169
+ name = row.find("td[@class='v' and not(@title)]").map(&:content).join
170
+
171
+ hash[code] ||= {:code => code, :name => name.to_s}
172
+ end
173
+ hash
174
+ end
175
+ end
176
+ end
177
+
178
+ REQUIREMENTS_MAP = [
179
+ ['nokogiri', :Nokogiri],
180
+ ['hpricot', :Hpricot],
181
+ ['libxml', :LibXML]
182
+ ]
183
+
184
+ def self.detect_parser
185
+ REQUIREMENTS_MAP.each do |library, klass|
186
+ return const_get(:"#{klass}Parser") if const_defined?(klass)
187
+ end
188
+
189
+ REQUIREMENTS_MAP.each do |library, klass|
190
+ begin
191
+ require library
192
+ return const_get(:"#{klass}Parser")
193
+ rescue LoadError
194
+ end
195
+ end
196
+
197
+ raise StandardError, "One of nokogiri, hpricot or libxml-ruby gem is required! Add \"gem 'nokogiri'\" to your Gemfile to resolve this issue."
198
+ end
199
+ end
200
+
201
+ def parser
202
+ @parser ||= LocalizedCountrySelectTasks.detect_parser
203
+ end
204
+
205
+ def set_parser(arg)
206
+ @parser = begin
207
+ parser = nil
208
+ requirements = LocalizedCountrySelectTasks::REQUIREMENTS_MAP
209
+ found = requirements.detect { |library, _| library == arg }
210
+ raise ArgumentError, "Can't find parser for #{arg}! Supported parsers are: #{requirements.map(&:first).join(", ")}." unless found
211
+ library, klass = found
212
+ begin
213
+ require library
214
+ parser = LocalizedCountrySelectTasks.const_get(:"#{klass}Parser")
215
+ rescue LoadError
216
+ gem_name = library == 'libxml' ? 'libxml-ruby' : library
217
+ raise ArgumentError, "Can't find #{library} library! Add \"gem '#{gem_name}'\" to Gemfile."
218
+ end
219
+ parser
220
+ end
221
+ end
222
+ end
data/locale/cz.rb ADDED
@@ -0,0 +1,259 @@
1
+ { :cz => {
2
+
3
+ :countries => {
4
+ :AD => "Andorra",
5
+ :AE => "Spojené arabské emiráty",
6
+ :AF => "Afghánistán",
7
+ :AG => "Antigua a Barbuda",
8
+ :AI => "Anguila",
9
+ :AL => "Albánie",
10
+ :AM => "Arménie",
11
+ :AN => "Nizozemské Antily",
12
+ :AO => "Angola",
13
+ :AQ => "Antarktida",
14
+ :AR => "Argentina",
15
+ :AS => "Americká Samoa",
16
+ :AT => "Rakousko",
17
+ :AU => "Austrálie",
18
+ :AW => "Aruba",
19
+ :AX => "Alandy",
20
+ :AZ => "Ázerbájdžán",
21
+ :BA => "Bosna a Hercegovina",
22
+ :BB => "Barbados",
23
+ :BD => "Bangladéš",
24
+ :BE => "Belgie",
25
+ :BF => "Burkina Faso",
26
+ :BG => "Bulharsko",
27
+ :BH => "Bahrajn",
28
+ :BI => "Burundi",
29
+ :BJ => "Benin",
30
+ :BL => "Svatý Bartolomějd",
31
+ :BM => "Bermudy",
32
+ :BN => "Brunej Darussalam",
33
+ :BO => "Bolívie",
34
+ :BR => "Brazílie",
35
+ :BS => "Bahamy",
36
+ :BT => "Bhútán",
37
+ :BV => "Ostrov Bouvet",
38
+ :BW => "Botswana",
39
+ :BY => "Bělorusko",
40
+ :BZ => "Belize",
41
+ :CA => "Kanada",
42
+ :CC => "Kokosové ostrovy",
43
+ :CD => "Demokratická republika Kongo",
44
+ :CF => "Středoafrická republika",
45
+ :CG => "Kongo",
46
+ :CH => "Švýcarsko",
47
+ :CI => "Pobřeží slonoviny",
48
+ :CK => "Cookovy ostrovy",
49
+ :CL => "Chile",
50
+ :CM => "Kamerun",
51
+ :CN => "Čína",
52
+ :CO => "Kolumbie",
53
+ :CR => "Kostarika",
54
+ :CS => "Srbsko a Černá HoraR014",
55
+ :CU => "Kuba",
56
+ :CV => "Kapverdy",
57
+ :CX => "Vánoční ostrovy",
58
+ :CY => "Kypr",
59
+ :CZ => "Česká republika",
60
+ :DE => "Německo",
61
+ :DJ => "Džibuti",
62
+ :DK => "Dánsko",
63
+ :DM => "Dominika",
64
+ :DO => "Dominikánská republika",
65
+ :DZ => "Alžírsko",
66
+ :EC => "Ekvádor",
67
+ :EE => "Estonsko",
68
+ :EG => "Egypt",
69
+ :EH => "Západní Sahara",
70
+ :ER => "Eritrea",
71
+ :ES => "Španělsko",
72
+ :ET => "Etiopie",
73
+ :FI => "Finsko",
74
+ :FJ => "Fidži",
75
+ :FK => "Falklandské ostrovy",
76
+ :FM => "Mikronézie",
77
+ :FO => "Faerské ostrovy",
78
+ :FR => "Francie",
79
+ :GA => "Gabon",
80
+ :GB => "Velká Británie",
81
+ :GD => "Grenada",
82
+ :GE => "Gruzie",
83
+ :GF => "Francouzská Guyana",
84
+ :GG => "Guernsey",
85
+ :GH => "Ghana",
86
+ :GI => "Gibraltar",
87
+ :GL => "Grónsko",
88
+ :GM => "Gambie",
89
+ :GN => "Guinea",
90
+ :GP => "Guadeloupe",
91
+ :GQ => "Rovníková Guinea",
92
+ :GR => "Řecko",
93
+ :GS => "Jižní Georgie a Jižní Sandwichovy ostrovy",
94
+ :GT => "Guatemala",
95
+ :GU => "Guam",
96
+ :GW => "Guinea-Bissau",
97
+ :GY => "Guyana",
98
+ :HK => "Hongkong, zvláštní administrativní oblast Číny",
99
+ :HK => "Hongkong",
100
+ :HM => "Ostrovy Heard a McDonald",
101
+ :HN => "Honduras",
102
+ :HR => "Chorvatsko",
103
+ :HT => "Haiti",
104
+ :HU => "Maďarsko",
105
+ :ID => "Indonésie",
106
+ :IE => "Irsko",
107
+ :IL => "Izrael",
108
+ :IM => "Ostrov Man",
109
+ :IN => "Indie",
110
+ :IO => "Britské území v Indickém oceánu",
111
+ :IQ => "Irák",
112
+ :IR => "Írán",
113
+ :IS => "Island",
114
+ :IT => "Itálie",
115
+ :JE => "Jersey",
116
+ :JM => "Jamajka",
117
+ :JO => "Jordánsko",
118
+ :JP => "Japonsko",
119
+ :KE => "Keňa",
120
+ :KG => "Kyrgyzstán",
121
+ :KH => "Kambodža",
122
+ :KI => "Kiribati",
123
+ :KM => "Komory",
124
+ :KN => "Svatý Kitts a Nevis",
125
+ :KP => "Severní Korea",
126
+ :KR => "Jižní Korea",
127
+ :KW => "Kuvajt",
128
+ :KY => "Kajmanské ostrovy",
129
+ :KZ => "Kazachstán",
130
+ :LA => "Lidově demokratická republika Laos",
131
+ :LB => "Libanon",
132
+ :LC => "Svatá Lucie",
133
+ :LI => "Lichtenštejnsko",
134
+ :LK => "Srí Lanka",
135
+ :LR => "Libérie",
136
+ :LS => "Lesotho",
137
+ :LT => "Litva",
138
+ :LU => "Lucembursko",
139
+ :LV => "Lotyšsko",
140
+ :LY => "Libye",
141
+ :MA => "Maroko",
142
+ :MC => "Monako",
143
+ :MD => "Moldavsko, republika",
144
+ :ME => "Černá Hora",
145
+ :MF => "Svatý Martin; [draft=contributed]",
146
+ :MG => "Madagaskar",
147
+ :MH => "Marshallovy ostrovy",
148
+ :MK => "Macedonia",
149
+ :ML => "Mali",
150
+ :MM => "Myanmar",
151
+ :MN => "Mongolsko",
152
+ :MO => "Zvláštní administrativní oblast Číny Macao",
153
+ :MO => "Macao",
154
+ :MP => "Severní Mariany",
155
+ :MQ => "Martinik",
156
+ :MR => "Mauritánie",
157
+ :MS => "Montserrat",
158
+ :MT => "Malta",
159
+ :MU => "Mauricius",
160
+ :MV => "Maladivy",
161
+ :MW => "Malawi",
162
+ :MX => "Mexiko",
163
+ :MY => "Malajsie",
164
+ :MZ => "Mosambik",
165
+ :NA => "Namibie",
166
+ :NC => "Nová Kaledonie",
167
+ :NE => "Niger",
168
+ :NF => "Norfolk",
169
+ :NG => "Nigérie",
170
+ :NI => "Nikaragua",
171
+ :NL => "Nizozemsko",
172
+ :NO => "Norsko",
173
+ :NP => "Nepál",
174
+ :NR => "Nauru",
175
+ :NU => "Niue",
176
+ :NZ => "Nový Zéland",
177
+ :OM => "Omán",
178
+ :PA => "Panama",
179
+ :PE => "Peru",
180
+ :PF => "Francouzská Polynésie",
181
+ :PG => "Papua-Nová Guinea",
182
+ :PH => "Filipíny",
183
+ :PK => "Pákistán",
184
+ :PL => "Polsko",
185
+ :PM => "Svatý Pierre a Miquelon",
186
+ :PN => "Pitcairn",
187
+ :PR => "Portoriko",
188
+ :PS => "Palestinian Territory",
189
+ :PT => "Portugalsko",
190
+ :PW => "Palau",
191
+ :PY => "Paraguay",
192
+ :QA => "Katar",
193
+ :QO => "Vnější Oceánie",
194
+ :QU => "Evropská unie",
195
+ :RE => "Réunion",
196
+ :RO => "Rumunsko",
197
+ :RS => "Srbsko",
198
+ :RU => "Rusko",
199
+ :RW => "Rwanda",
200
+ :SA => "Saúdská Arábie",
201
+ :SB => "Šalamounovy ostrovy",
202
+ :SC => "Seychely",
203
+ :SD => "Súdán",
204
+ :SE => "Švédsko",
205
+ :SG => "Singapur",
206
+ :SH => "Svatá Helena",
207
+ :SI => "Slovinsko",
208
+ :SJ => "Svalbard a Jan Mayen",
209
+ :SK => "Slovensko",
210
+ :SL => "Sierra Leone",
211
+ :SM => "San Marino",
212
+ :SN => "Senegal",
213
+ :SO => "Somálsko",
214
+ :SR => "Surinam",
215
+ :ST => "Svatý Tomáš",
216
+ :SV => "El Salvador",
217
+ :SY => "Sýrie",
218
+ :SZ => "Svazijsko",
219
+ :TC => "Ostrovy Caicos a Turks",
220
+ :TD => "Čad",
221
+ :TF => "Francouzská jižní teritoria",
222
+ :TG => "Togo",
223
+ :TH => "Thajsko",
224
+ :TJ => "Tádžikistán",
225
+ :TK => "Tokelau",
226
+ :TL => "Východní Timor",
227
+ :TM => "Turkmenistán",
228
+ :TN => "Tunisko",
229
+ :TO => "Tonga",
230
+ :TR => "Turecko",
231
+ :TT => "Trinidad a Tobago",
232
+ :TV => "Tuvalu",
233
+ :TW => "Tchaj-wan",
234
+ :TZ => "Tanzanie",
235
+ :UA => "Ukrajina",
236
+ :UG => "Uganda",
237
+ :UM => "Menší odlehlé ostrovy USA",
238
+ :US => "Spojené státy",
239
+ :UY => "Uruguay",
240
+ :UZ => "Uzbekistán",
241
+ :VA => "Svatý stolec",
242
+ :VC => "Svatý Vincent a Grenadiny",
243
+ :VE => "Venezuela",
244
+ :VG => "Britské Panenské ostrovy",
245
+ :VI => "Americké Panenské ostrovy",
246
+ :VN => "Vietnam",
247
+ :VU => "Vanuatu",
248
+ :WF => "Wallis a Futuna",
249
+ :WS => "Samoa",
250
+ :YE => "Jemen",
251
+ :YT => "Mayotte",
252
+ :ZA => "Jihoafrická republika",
253
+ :ZM => "Zambie",
254
+ :ZW => "Zimbabwe",
255
+ :ZZ => "Neznámá nebo neplatná oblast",
256
+ }
257
+
258
+ }
259
+ }
data/locale/en.rb ADDED
@@ -0,0 +1,275 @@
1
+ { :en => {
2
+
3
+ :countries => {
4
+ :AD => "Andorra",
5
+ :AE => "United Arab Emirates",
6
+ :AF => "Afghanistan",
7
+ :AG => "Antigua and Barbuda",
8
+ :AI => "Anguilla",
9
+ :AL => "Albania",
10
+ :AM => "Armenia",
11
+ :AN => "Netherlands Antilles",
12
+ :AO => "Angola",
13
+ :AQ => "Antarctica",
14
+ :AR => "Argentina",
15
+ :AS => "American Samoa",
16
+ :AT => "Austria",
17
+ :AU => "Australia",
18
+ :AW => "Aruba",
19
+ :AX => "Aland Islands",
20
+ :AZ => "Azerbaijan",
21
+ :BA => "Bosnia and Herzegovina",
22
+ :BB => "Barbados",
23
+ :BD => "Bangladesh",
24
+ :BE => "Belgium",
25
+ :BF => "Burkina Faso",
26
+ :BG => "Bulgaria",
27
+ :BH => "Bahrain",
28
+ :BI => "Burundi",
29
+ :BJ => "Benin",
30
+ :BL => "Saint Barthélemy",
31
+ :BM => "Bermuda",
32
+ :BN => "Brunei",
33
+ :BO => "Bolivia",
34
+ :BQ => "British Antarctic Territory",
35
+ :BR => "Brazil",
36
+ :BS => "Bahamas",
37
+ :BT => "Bhutan",
38
+ :BV => "Bouvet Island",
39
+ :BW => "Botswana",
40
+ :BY => "Belarus",
41
+ :BZ => "Belize",
42
+ :CA => "Canada",
43
+ :CC => "Cocos Islands",
44
+ :CD => "Congo - Kinshasa",
45
+ :CF => "Central African Republic",
46
+ :CG => "Congo - Brazzaville",
47
+ :CH => "Switzerland",
48
+ :CI => "Ivory Coast",
49
+ :CK => "Cook Islands",
50
+ :CL => "Chile",
51
+ :CM => "Cameroon",
52
+ :CN => "China",
53
+ :CO => "Colombia",
54
+ :CR => "Costa Rica",
55
+ :CS => "Serbia and Montenegro",
56
+ :CT => "Canton and Enderbury Islands",
57
+ :CU => "Cuba",
58
+ :CV => "Cape Verde",
59
+ :CX => "Christmas Island",
60
+ :CY => "Cyprus",
61
+ :CZ => "Czech Republic",
62
+ :DD => "East Germany",
63
+ :DE => "Germany",
64
+ :DJ => "Djibouti",
65
+ :DK => "Denmark",
66
+ :DM => "Dominica",
67
+ :DO => "Dominican Republic",
68
+ :DZ => "Algeria",
69
+ :EC => "Ecuador",
70
+ :EE => "Estonia",
71
+ :EG => "Egypt",
72
+ :EH => "Western Sahara",
73
+ :ER => "Eritrea",
74
+ :ES => "Spain",
75
+ :ET => "Ethiopia",
76
+ :FI => "Finland",
77
+ :FJ => "Fiji",
78
+ :FK => "Falkland Islands",
79
+ :FM => "Micronesia",
80
+ :FO => "Faroe Islands",
81
+ :FQ => "French Southern and Antarctic Territories",
82
+ :FR => "France",
83
+ :FX => "Metropolitan France",
84
+ :GA => "Gabon",
85
+ :GB => "United Kingdom",
86
+ :GD => "Grenada",
87
+ :GE => "Georgia",
88
+ :GF => "French Guiana",
89
+ :GG => "Guernsey",
90
+ :GH => "Ghana",
91
+ :GI => "Gibraltar",
92
+ :GL => "Greenland",
93
+ :GM => "Gambia",
94
+ :GN => "Guinea",
95
+ :GP => "Guadeloupe",
96
+ :GQ => "Equatorial Guinea",
97
+ :GR => "Greece",
98
+ :GS => "South Georgia and the South Sandwich Islands",
99
+ :GT => "Guatemala",
100
+ :GU => "Guam",
101
+ :GW => "Guinea-Bissau",
102
+ :GY => "Guyana",
103
+ :HK => "Hong Kong SAR China",
104
+ :HK => "Hong Kong",
105
+ :HM => "Heard Island and McDonald Islands",
106
+ :HN => "Honduras",
107
+ :HR => "Croatia",
108
+ :HT => "Haiti",
109
+ :HU => "Hungary",
110
+ :ID => "Indonesia",
111
+ :IE => "Ireland",
112
+ :IL => "Israel",
113
+ :IM => "Isle of Man",
114
+ :IN => "India",
115
+ :IO => "British Indian Ocean Territory",
116
+ :IQ => "Iraq",
117
+ :IR => "Iran",
118
+ :IS => "Iceland",
119
+ :IT => "Italy",
120
+ :JE => "Jersey",
121
+ :JM => "Jamaica",
122
+ :JO => "Jordan",
123
+ :JP => "Japan",
124
+ :JT => "Johnston Island",
125
+ :KE => "Kenya",
126
+ :KG => "Kyrgyzstan",
127
+ :KH => "Cambodia",
128
+ :KI => "Kiribati",
129
+ :KM => "Comoros",
130
+ :KN => "Saint Kitts and Nevis",
131
+ :KP => "North Korea",
132
+ :KR => "South Korea",
133
+ :KW => "Kuwait",
134
+ :KY => "Cayman Islands",
135
+ :KZ => "Kazakhstan",
136
+ :LA => "Laos",
137
+ :LB => "Lebanon",
138
+ :LC => "Saint Lucia",
139
+ :LI => "Liechtenstein",
140
+ :LK => "Sri Lanka",
141
+ :LR => "Liberia",
142
+ :LS => "Lesotho",
143
+ :LT => "Lithuania",
144
+ :LU => "Luxembourg",
145
+ :LV => "Latvia",
146
+ :LY => "Libya",
147
+ :MA => "Morocco",
148
+ :MC => "Monaco",
149
+ :MD => "Moldova",
150
+ :ME => "Montenegro",
151
+ :MF => "Saint Martin",
152
+ :MG => "Madagascar",
153
+ :MH => "Marshall Islands",
154
+ :MI => "Midway Islands",
155
+ :MK => "Macedonia",
156
+ :ML => "Mali",
157
+ :MM => "Myanmar",
158
+ :MN => "Mongolia",
159
+ :MO => "Macau SAR China",
160
+ :MO => "Macau",
161
+ :MP => "Northern Mariana Islands",
162
+ :MQ => "Martinique",
163
+ :MR => "Mauritania",
164
+ :MS => "Montserrat",
165
+ :MT => "Malta",
166
+ :MU => "Mauritius",
167
+ :MV => "Maldives",
168
+ :MW => "Malawi",
169
+ :MX => "Mexico",
170
+ :MY => "Malaysia",
171
+ :MZ => "Mozambique",
172
+ :NA => "Namibia",
173
+ :NC => "New Caledonia",
174
+ :NE => "Niger",
175
+ :NF => "Norfolk Island",
176
+ :NG => "Nigeria",
177
+ :NI => "Nicaragua",
178
+ :NL => "Netherlands",
179
+ :NO => "Norway",
180
+ :NP => "Nepal",
181
+ :NQ => "Dronning Maud Land",
182
+ :NR => "Nauru",
183
+ :NT => "Neutral Zone",
184
+ :NU => "Niue",
185
+ :NZ => "New Zealand",
186
+ :OM => "Oman",
187
+ :PA => "Panama",
188
+ :PC => "Pacific Islands Trust Territory",
189
+ :PE => "Peru",
190
+ :PF => "French Polynesia",
191
+ :PG => "Papua New Guinea",
192
+ :PH => "Philippines",
193
+ :PK => "Pakistan",
194
+ :PL => "Poland",
195
+ :PM => "Saint Pierre and Miquelon",
196
+ :PN => "Pitcairn",
197
+ :PR => "Puerto Rico",
198
+ :PS => "Palestinian Territory",
199
+ :PT => "Portugal",
200
+ :PU => "U.S. Miscellaneous Pacific Islands",
201
+ :PW => "Palau",
202
+ :PY => "Paraguay",
203
+ :PZ => "Panama Canal Zone",
204
+ :QA => "Qatar",
205
+ :QO => "Outlying Oceania",
206
+ :QU => "European Union",
207
+ :RE => "Reunion",
208
+ :RO => "Romania",
209
+ :RS => "Serbia",
210
+ :RU => "Russia",
211
+ :RW => "Rwanda",
212
+ :SA => "Saudi Arabia",
213
+ :SB => "Solomon Islands",
214
+ :SC => "Seychelles",
215
+ :SD => "Sudan",
216
+ :SE => "Sweden",
217
+ :SG => "Singapore",
218
+ :SH => "Saint Helena",
219
+ :SI => "Slovenia",
220
+ :SJ => "Svalbard and Jan Mayen",
221
+ :SK => "Slovakia",
222
+ :SL => "Sierra Leone",
223
+ :SM => "San Marino",
224
+ :SN => "Senegal",
225
+ :SO => "Somalia",
226
+ :SR => "Suriname",
227
+ :ST => "Sao Tome and Principe",
228
+ :SU => "Union of Soviet Socialist Republics",
229
+ :SV => "El Salvador",
230
+ :SY => "Syria",
231
+ :SZ => "Swaziland",
232
+ :TC => "Turks and Caicos Islands",
233
+ :TD => "Chad",
234
+ :TF => "French Southern Territories",
235
+ :TG => "Togo",
236
+ :TH => "Thailand",
237
+ :TJ => "Tajikistan",
238
+ :TK => "Tokelau",
239
+ :TL => "East Timor",
240
+ :TM => "Turkmenistan",
241
+ :TN => "Tunisia",
242
+ :TO => "Tonga",
243
+ :TR => "Turkey",
244
+ :TT => "Trinidad and Tobago",
245
+ :TV => "Tuvalu",
246
+ :TW => "Taiwan",
247
+ :TZ => "Tanzania",
248
+ :UA => "Ukraine",
249
+ :UG => "Uganda",
250
+ :UM => "United States Minor Outlying Islands",
251
+ :US => "United States",
252
+ :UY => "Uruguay",
253
+ :UZ => "Uzbekistan",
254
+ :VA => "Vatican",
255
+ :VC => "Saint Vincent and the Grenadines",
256
+ :VD => "North Vietnam",
257
+ :VE => "Venezuela",
258
+ :VG => "British Virgin Islands",
259
+ :VI => "U.S. Virgin Islands",
260
+ :VN => "Vietnam",
261
+ :VU => "Vanuatu",
262
+ :WF => "Wallis and Futuna",
263
+ :WK => "Wake Island",
264
+ :WS => "Samoa",
265
+ :YD => "People's Democratic Republic of Yemen",
266
+ :YE => "Yemen",
267
+ :YT => "Mayotte",
268
+ :ZA => "South Africa",
269
+ :ZM => "Zambia",
270
+ :ZW => "Zimbabwe",
271
+ :ZZ => "Unknown or Invalid Region",
272
+ }
273
+
274
+ }
275
+ }
@@ -0,0 +1,132 @@
1
+ # encoding: utf-8
2
+ require 'test/unit'
3
+
4
+ require 'rubygems'
5
+ require 'active_support'
6
+ require 'action_dispatch'
7
+ require 'action_dispatch/testing/test_process'
8
+ require 'action_view'
9
+ require 'action_view/helpers'
10
+ require 'action_view/helpers/tag_helper'
11
+ require 'i18n'
12
+
13
+ begin
14
+ require 'redgreen'
15
+ rescue LoadError
16
+ puts "[!] Install redgreen gem for better test output ($ sudo gem install redgreen)"
17
+ end unless ENV["TM_FILEPATH"]
18
+
19
+ require 'localized_country_select'
20
+
21
+ class LocalizedCountrySelectTest < Test::Unit::TestCase
22
+
23
+ include ActionView::Helpers::TagHelper
24
+ include ActionView::Helpers::FormOptionsHelper
25
+ include ActionView::Helpers::FormTagHelper
26
+
27
+ def test_action_view_should_include_helper_for_object
28
+ assert ActionView::Helpers::FormBuilder.instance_methods.member?(:localized_country_select)
29
+ assert ActionView::Helpers::FormOptionsHelper.instance_methods.include?(:localized_country_select)
30
+ end
31
+
32
+ def test_action_view_should_include_helper_tag
33
+ assert ActionView::Helpers::FormOptionsHelper.instance_methods.include?(:localized_country_select_tag)
34
+ end
35
+
36
+ def test_should_return_select_tag_with_proper_name_for_object
37
+ # puts localized_country_select(:user, :country)
38
+ assert localized_country_select(:user, :country) =~
39
+ Regexp.new(Regexp.escape('<select id="user_country" name="user[country]">')),
40
+ "Should have proper name for object"
41
+ end
42
+
43
+ def test_should_return_select_tag_with_proper_name
44
+ # puts localized_country_select_tag( "competition_submission[data][citizenship]", nil)
45
+ assert localized_country_select_tag( "competition_submission[data][citizenship]", nil) =~
46
+ Regexp.new(
47
+ Regexp.escape('<select id="competition_submission_data_citizenship" name="competition_submission[data][citizenship]">') ),
48
+ "Should have proper name"
49
+ end
50
+
51
+ def test_should_return_option_tags
52
+ assert localized_country_select(:user, :country) =~ Regexp.new(Regexp.escape('<option value="ES">Spain</option>'))
53
+ end
54
+
55
+ def test_should_return_localized_option_tags
56
+ I18n.locale = 'cz'
57
+ assert localized_country_select(:user, :country) =~ Regexp.new(Regexp.escape('<option value="ES">Španělsko</option>'))
58
+ end
59
+
60
+ def test_should_return_priority_countries_first
61
+ assert localized_country_options_for_select(nil, [:ES, :CZ]) =~ Regexp.new(
62
+ Regexp.escape("<option value=\"ES\">Spain</option>\n<option value=\"CZ\">Czech Republic</option><option value=\"\" disabled=\"disabled\">-------------</option>\n<option value=\"AF\">Afghanistan</option>\n"))
63
+ end
64
+
65
+ def test_i18n_should_know_about_countries
66
+ assert_equal 'Spain', I18n.t('ES', :scope => 'countries')
67
+ I18n.locale = 'cz'
68
+ assert_equal 'Španělsko', I18n.t('ES', :scope => 'countries')
69
+ end
70
+
71
+ def test_excludes_countries
72
+ assert_nothing_raised { LocalizedCountrySelect::localized_countries_array(:exclude => :ZZ) }
73
+
74
+ assert_block do
75
+ not LocalizedCountrySelect::localized_countries_array(:exclude => :ZZ).any? {|country| country.last == "ZZ"}
76
+ end
77
+
78
+ assert_block do
79
+ not LocalizedCountrySelect::localized_countries_array(:exclude => [:ZZ, :US]).any? {|country| country.last == "ZZ" or country.last == "US"}
80
+ end
81
+ end
82
+
83
+ def test_localized_countries_array_returns_correctly
84
+ assert_nothing_raised { LocalizedCountrySelect::localized_countries_array() }
85
+ # puts LocalizedCountrySelect::localized_countries_array.inspect
86
+ I18n.locale = 'en'
87
+ assert_equal 266, LocalizedCountrySelect::localized_countries_array.size
88
+ assert_equal 'Afghanistan', LocalizedCountrySelect::localized_countries_array.first[0]
89
+ assert_equal 250, LocalizedCountrySelect::localized_countries_array(locale: :cz).size
90
+ assert_equal 'Afghánistán', LocalizedCountrySelect::localized_countries_array(locale: :cz).first[0]
91
+
92
+ I18n.locale = 'cz'
93
+ assert_equal 250, LocalizedCountrySelect::localized_countries_array.size
94
+ assert_equal 'Afghánistán', LocalizedCountrySelect::localized_countries_array.first[0]
95
+ assert_equal 266, LocalizedCountrySelect::localized_countries_array(locale: :en).size
96
+ assert_equal 'Afghanistan', LocalizedCountrySelect::localized_countries_array(locale: :en).first[0]
97
+ end
98
+
99
+ def test_priority_countries_returns_correctly_and_in_correct_order
100
+ assert_nothing_raised { LocalizedCountrySelect::priority_countries_array([:TW, :CN]) }
101
+ I18n.locale = 'en'
102
+ assert_equal [ ['Taiwan', 'TW'], ['China', 'CN'] ], LocalizedCountrySelect::priority_countries_array([:TW, :CN])
103
+ end
104
+
105
+ def test_priority_countries_allows_passing_either_symbol_or_string
106
+ I18n.locale = 'en'
107
+ assert_equal [ ['United States', 'US'], ['Canada', 'CA'] ], LocalizedCountrySelect::priority_countries_array(['US', 'CA'])
108
+ end
109
+
110
+ def test_priority_countries_allows_passing_upcase_or_lowercase
111
+ I18n.locale = 'en'
112
+ assert_equal [ ['United States', 'US'], ['Canada', 'CA'] ], LocalizedCountrySelect::priority_countries_array(['us', 'ca'])
113
+ assert_equal [ ['United States', 'US'], ['Canada', 'CA'] ], LocalizedCountrySelect::priority_countries_array([:us, :ca])
114
+ end
115
+
116
+ def test_should_list_countries_with_accented_names_in_correct_order
117
+ I18n.locale = 'cz'
118
+ assert_match Regexp.new(Regexp.escape(%Q{<option value="BI">Burundi</option>\n<option value="TD">Čad</option>})), localized_country_select(:user, :country)
119
+ end
120
+
121
+ #private
122
+
123
+ def setup
124
+ ['cz', 'en'].each do |locale|
125
+ # I18n.load_translations( File.join(File.dirname(__FILE__), '..', 'locale', "#{locale}.rb") ) # <-- Old style! :)
126
+ I18n.load_path += Dir[ File.join(File.dirname(__FILE__), '..', 'locale', "#{locale}.rb") ]
127
+ end
128
+ # I18n.locale = I18n.default_locale
129
+ I18n.locale = 'en'
130
+ end
131
+
132
+ end
data/uninstall.rb ADDED
@@ -0,0 +1 @@
1
+ # Uninstall hook code here
metadata ADDED
@@ -0,0 +1,103 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: brainsome_localized_country_select
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.9.10
5
+ platform: ruby
6
+ authors:
7
+ - karmi
8
+ - mlitwiniuk
9
+ - LIM SAS
10
+ - Damien MATHIEU
11
+ - Julien SANCHEZ
12
+ - Hervé GAUCHER
13
+ - RainerBlessing
14
+ - Brainsome-Developers
15
+ autorequire:
16
+ bindir: bin
17
+ cert_chain: []
18
+ date: 2014-12-09 00:00:00.000000000 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: actionpack
22
+ requirement: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '3.0'
27
+ type: :runtime
28
+ prerelease: false
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '3.0'
34
+ - !ruby/object:Gem::Dependency
35
+ name: rspec
36
+ requirement: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: 2.0.0
41
+ type: :development
42
+ prerelease: false
43
+ version_requirements: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: 2.0.0
48
+ description: Localized "country_select" helper with Rake task for downloading locales
49
+ from Unicode.org's CLDR
50
+ email:
51
+ -
52
+ - maciej@litwiniuk.net
53
+ -
54
+ -
55
+ -
56
+ -
57
+ -
58
+ -
59
+ executables: []
60
+ extensions: []
61
+ extra_rdoc_files: []
62
+ files:
63
+ - ".gitignore"
64
+ - ".travis.yml"
65
+ - MIT-LICENSE
66
+ - README.rdoc
67
+ - Rakefile
68
+ - install.rb
69
+ - lib/localized_country_select.rb
70
+ - lib/localized_country_select/railtie.rb
71
+ - lib/localized_country_select/version.rb
72
+ - lib/tasks/localized_country_select_tasks.rake
73
+ - locale/cz.rb
74
+ - locale/en.rb
75
+ - test/localized_country_select_test.rb
76
+ - uninstall.rb
77
+ homepage: https://github.com/brainsome-de/localized_country_select
78
+ licenses:
79
+ - MIT
80
+ metadata: {}
81
+ post_install_message:
82
+ rdoc_options: []
83
+ require_paths:
84
+ - lib
85
+ required_ruby_version: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ required_rubygems_version: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ requirements: []
96
+ rubyforge_project:
97
+ rubygems_version: 2.4.5
98
+ signing_key:
99
+ specification_version: 4
100
+ summary: Localized "country_select" helper with Rake task for downloading locales
101
+ from Unicode.org's CLDR
102
+ test_files:
103
+ - test/localized_country_select_test.rb