brainsome_localized_country_select 0.9.10

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.
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