world-flags 0.3.4 → 0.3.5
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/README.md +13 -18
- data/VERSION +1 -1
- data/config/countries/locale_countries.en.json +4 -4
- data/config/languages/locale_languages.en.json +3 -3
- data/lib/world-flags.rb +19 -69
- data/lib/world_flags/countries.rb +8 -11
- data/lib/world_flags/languages.rb +8 -15
- data/lib/world_flags/util.rb +13 -0
- data/lib/world_flags/util/config.rb +65 -0
- data/lib/world_flags/util/country.rb +50 -0
- data/lib/world_flags/util/language.rb +50 -0
- data/spec/spec_helper.rb +2 -0
- data/spec/world_flags/{locale_helper_spec.rb → helper/locale_helper_spec.rb} +0 -0
- data/spec/world_flags/json/json_countries_spec.rb +27 -0
- data/spec/world_flags/json/json_languages_spec.rb +27 -0
- data/spec/world_flags/json/locale_flag_spec.rb +28 -0
- data/spec/world_flags/view_helper_spec.rb +8 -8
- data/world-flags.gemspec +9 -4
- metadata +10 -5
- data/lib/world_flags/country_util.rb +0 -46
- data/lib/world_flags/lang_util.rb +0 -46
data/README.md
CHANGED
@@ -67,7 +67,7 @@ You can run the Rails generator `world_flags:init` in order to create a basic in
|
|
67
67
|
You can setup WorldFlags to use a localization map for the labels of the flag icons
|
68
68
|
|
69
69
|
```ruby
|
70
|
-
WorldFlags.
|
70
|
+
WorldFlags.language_map = some_language_hash # fx loaded from a yaml file
|
71
71
|
WorldFlags.countries = some_country_hash # fx loaded from a yaml file
|
72
72
|
```
|
73
73
|
|
@@ -96,9 +96,11 @@ def countries locale = :en
|
|
96
96
|
JSON.parse File.read(path)
|
97
97
|
end
|
98
98
|
|
99
|
-
WorldFlags.countries = countries
|
99
|
+
WorldFlags.countries = Hashie::Mash.new countries
|
100
100
|
```
|
101
101
|
|
102
|
+
PS: See the json specs for examples.
|
103
|
+
|
102
104
|
### Languages mappings
|
103
105
|
|
104
106
|
A country code to languages mappping file (also in json), can be found in `app/config/languages`.
|
@@ -109,20 +111,22 @@ def languages locale = :en
|
|
109
111
|
JSON.parse File.read(path)
|
110
112
|
end
|
111
113
|
|
112
|
-
WorldFlags.languages = languages
|
114
|
+
WorldFlags.languages = Hashie::Mash.new languages
|
113
115
|
```
|
114
116
|
|
115
|
-
|
117
|
+
PS: See the json specs for examples.
|
118
|
+
|
119
|
+
Another approach more suited to adding single files is the following. Note that both `countries` and `languages` are instances of classes that inherit from the `Hashie::Mash` class (hash access via method missing).
|
116
120
|
|
117
121
|
```
|
118
122
|
WorldFlags.countries.en = countries_en
|
119
123
|
WorldFlags.languages.en = languages_en
|
120
124
|
```
|
121
125
|
|
122
|
-
You can set the
|
126
|
+
You can set the available locales. By default they are the same as `I18n.available_locales`.
|
123
127
|
|
124
128
|
```ruby
|
125
|
-
WorldFlags.
|
129
|
+
WorldFlags.available_locales = [:en, :da]
|
126
130
|
```
|
127
131
|
|
128
132
|
## Locale to country code
|
@@ -248,7 +252,6 @@ A small helper module is provided that can be inserted into a Controller or wher
|
|
248
252
|
```ruby
|
249
253
|
class MainController < ApplicationController
|
250
254
|
def home
|
251
|
-
@json = Property.all.to_gmaps4rails
|
252
255
|
@country_code = WorldFlags::Helper::Geo.ip_country_code
|
253
256
|
end
|
254
257
|
end
|
@@ -262,7 +265,6 @@ class MainController < ApplicationController
|
|
262
265
|
include WorldFlags::Helper::Browser
|
263
266
|
|
264
267
|
def home
|
265
|
-
@json = Property.all.to_gmaps4rails
|
266
268
|
@country_code = ip_country_code
|
267
269
|
@locale = browser_locale
|
268
270
|
end
|
@@ -305,16 +307,7 @@ class MainController < ApplicationController
|
|
305
307
|
end
|
306
308
|
```
|
307
309
|
|
308
|
-
You can
|
309
|
-
|
310
|
-
```ruby
|
311
|
-
# fx [:da, :en] or even ['da', 'en']
|
312
|
-
WorldFlags.valid_locales = my_valid_locales_list
|
313
|
-
```
|
314
|
-
|
315
|
-
Note that if not set, this list is preconfigured to: `['en', 'de', 'es', 'ru']`
|
316
|
-
|
317
|
-
Alternatively configure in your `application.rb` file:
|
310
|
+
You can define the available locales for your app in your `application.rb` file:
|
318
311
|
|
319
312
|
```ruby
|
320
313
|
class Application < Rails::Application
|
@@ -322,6 +315,8 @@ class Application < Rails::Application
|
|
322
315
|
config.i18n.available_locales = [:da, :sv, :no]
|
323
316
|
``
|
324
317
|
|
318
|
+
The perhaps sync i18n `I18n.available_locales = MyCool::Application.i18n.available_locales`
|
319
|
+
|
325
320
|
Note: This approach in turn works well with the `i18n-docs` gem ;)
|
326
321
|
|
327
322
|
## Post flag selection
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.5
|
@@ -75,10 +75,10 @@
|
|
75
75
|
"fm": "Federated States of Micronesia",
|
76
76
|
"fo": "Faroe Islands",
|
77
77
|
"fr": "France",
|
78
|
-
"ga": "
|
79
|
-
"gb": "
|
80
|
-
"gd": "
|
81
|
-
"ge": "
|
78
|
+
"ga": "Gabon",
|
79
|
+
"gb": "United Kingdom",
|
80
|
+
"gd": "Grenada",
|
81
|
+
"ge": "Georgia",
|
82
82
|
"gf": "French Guiana",
|
83
83
|
"gg": "Guernsey",
|
84
84
|
"gh": "Ghana",
|
@@ -54,7 +54,7 @@
|
|
54
54
|
"cv": "Portuguese",
|
55
55
|
"cw": ["Papiamentu", "Dutch"],
|
56
56
|
"cx": "English",
|
57
|
-
"cy": ["Greek", "Turkish"]
|
57
|
+
"cy": ["Greek", "Turkish"],
|
58
58
|
"cz": "Czech",
|
59
59
|
"de": "German",
|
60
60
|
"dj": ["French", "Arabic"],
|
@@ -75,8 +75,8 @@
|
|
75
75
|
"fm": "English",
|
76
76
|
"fo": ["Faroese", "Danish"],
|
77
77
|
"fr": "French",
|
78
|
-
"ga": "
|
79
|
-
"gb": "
|
78
|
+
"ga": "French",
|
79
|
+
"gb": "English",
|
80
80
|
"gd": "English",
|
81
81
|
"ge": "English",
|
82
82
|
"gf": "French",
|
data/lib/world-flags.rb
CHANGED
@@ -1,69 +1,25 @@
|
|
1
1
|
require 'hashie'
|
2
|
-
require
|
3
|
-
require
|
2
|
+
require 'world_flags/core_ext'
|
3
|
+
require 'world_flags/helpers'
|
4
4
|
|
5
5
|
require 'world_flags/rails/engine' if defined?(::Rails::Engine)
|
6
6
|
|
7
|
-
require
|
8
|
-
require
|
9
|
-
|
10
|
-
require "world_flags/lang_util"
|
11
|
-
require "world_flags/country_util"
|
12
|
-
|
7
|
+
require 'world_flags/languages'
|
8
|
+
require 'world_flags/countries'
|
9
|
+
require 'world_flags/util'
|
13
10
|
|
14
11
|
module WorldFlags
|
15
12
|
class << self
|
16
|
-
|
13
|
+
include Util
|
17
14
|
|
18
|
-
# TODO: Why both active and valid locales? Does this even make sense!?
|
19
15
|
attr_writer :active_locales
|
20
|
-
|
21
|
-
def active_locales
|
22
|
-
@active_locales ||= I18n.available_locales unless I18n.available_locales.blank?
|
23
|
-
@active_locales ||= [:en]
|
24
|
-
end
|
25
|
-
|
26
|
-
# for WorldFlags::Helper::Locale
|
27
|
-
def valid_locales
|
28
|
-
@valid_locales ||= ['en', 'de', 'es', 'ru']
|
29
|
-
end
|
30
|
-
|
31
|
-
def valid_locales= *list
|
32
|
-
raise ArgumentError, "Must be a list of locales, was #{list}" if list.empty?
|
33
|
-
@valid_locales ||= list.flatten
|
34
|
-
end
|
35
|
-
|
36
|
-
def raise_error?
|
37
|
-
@raise_error
|
38
|
-
end
|
39
|
-
|
40
|
-
def raise_error!
|
41
|
-
@raise_error = true
|
42
|
-
end
|
43
|
-
|
44
|
-
def raise_error_off!
|
45
|
-
@raise_error = false
|
46
|
-
end
|
47
|
-
|
48
|
-
def auto_select?
|
49
|
-
auto_select
|
50
|
-
end
|
51
|
-
|
52
|
-
def auto_select!
|
53
|
-
@auto_select = true
|
54
|
-
end
|
16
|
+
attr_writer :locale_flag_map
|
55
17
|
|
56
18
|
def label code = :us, options = {:language => :en}
|
57
19
|
locale = extract_locale!(options) || default_locale_used || :en
|
58
20
|
options[:country] ? country_label(code, locale) : language_label(code, locale)
|
59
21
|
end
|
60
22
|
|
61
|
-
def extract_locale! options
|
62
|
-
options[:country] ? options.delete(:country) : options.delete(:language)
|
63
|
-
end
|
64
|
-
|
65
|
-
# Locale translation helper macros
|
66
|
-
|
67
23
|
def flag_code code = :us
|
68
24
|
# ensure that 'en_US' becomes simply 'us'
|
69
25
|
code = code.to_s.sub(/^\w+_/, '').downcase
|
@@ -73,14 +29,19 @@ module WorldFlags
|
|
73
29
|
def locale code = :us
|
74
30
|
flag_locale_map[code.to_sym] || code
|
75
31
|
end
|
76
|
-
|
77
|
-
attr_writer :locale_flag_map
|
78
|
-
|
32
|
+
|
79
33
|
# override using fx 'locale_to_country_code.json' file
|
80
34
|
def locale_flag_map
|
81
35
|
@locale_flag_map ||= keys_to_sym(locale_flag_hash)
|
82
36
|
end
|
83
37
|
|
38
|
+
# see core_ext
|
39
|
+
def flag_locale_map
|
40
|
+
locale_flag_map.hash_revert
|
41
|
+
end
|
42
|
+
|
43
|
+
protected
|
44
|
+
|
84
45
|
def keys_to_sym hash
|
85
46
|
hash.inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo}
|
86
47
|
end
|
@@ -95,21 +56,10 @@ module WorldFlags
|
|
95
56
|
:ja => "jp",
|
96
57
|
:uk => "ua"
|
97
58
|
}
|
98
|
-
end
|
59
|
+
end
|
99
60
|
|
100
|
-
def
|
101
|
-
|
102
|
-
end
|
103
|
-
|
104
|
-
def default_code_used
|
105
|
-
WorldFlags.default_code || :us
|
106
|
-
end
|
107
|
-
|
108
|
-
def default_locale_used
|
109
|
-
WorldFlags.default_locale || I18n.locale
|
110
|
-
end
|
111
|
-
|
112
|
-
include WorldFlags::LangUtil
|
113
|
-
include WorldFlags::CountryUtil
|
61
|
+
def extract_locale! options
|
62
|
+
options[:country] ? options.delete(:country) : options.delete(:language)
|
63
|
+
end
|
114
64
|
end
|
115
65
|
end
|
@@ -1,10 +1,10 @@
|
|
1
1
|
module WorldFlags
|
2
2
|
class Countries < Hashie::Mash
|
3
3
|
def en
|
4
|
-
|
4
|
+
{
|
5
5
|
:ar => 'Argentina',
|
6
6
|
:br => 'Brazil',
|
7
|
-
:gb => '
|
7
|
+
:gb => 'United Kingdom',
|
8
8
|
:us => 'United States',
|
9
9
|
:es => 'Spain',
|
10
10
|
:gr => 'Greece',
|
@@ -12,39 +12,37 @@ module WorldFlags
|
|
12
12
|
:nl => 'Netherlands',
|
13
13
|
:de => 'Germany',
|
14
14
|
:dk => 'Denmark',
|
15
|
-
:
|
15
|
+
:se => 'Sweden',
|
16
16
|
:no => 'Norway',
|
17
17
|
:fi => 'Finland'
|
18
18
|
}
|
19
19
|
end
|
20
20
|
|
21
21
|
def da
|
22
|
-
|
22
|
+
{
|
23
23
|
:gb => 'England',
|
24
24
|
:us => 'USA',
|
25
25
|
:es => 'Spanien',
|
26
26
|
:de => 'Tyskland',
|
27
27
|
:dk => 'Danmark',
|
28
|
-
:
|
28
|
+
:se => 'Sverige',
|
29
29
|
:no => 'Norge',
|
30
30
|
}
|
31
31
|
end
|
32
|
-
alias_method :dk, :da
|
33
32
|
|
34
|
-
def
|
33
|
+
def sv
|
35
34
|
{
|
36
35
|
:gb => 'England',
|
37
36
|
:us => 'USA',
|
38
37
|
:es => 'Spanien',
|
39
38
|
:de => 'Tyskland',
|
40
39
|
:dk => 'Danmark',
|
41
|
-
:
|
40
|
+
:se => 'Sverige',
|
42
41
|
:no => 'Norge',
|
43
42
|
}
|
44
43
|
end
|
45
|
-
alias_method :sv, :se
|
46
44
|
|
47
|
-
def
|
45
|
+
def nb
|
48
46
|
{
|
49
47
|
:gb => 'England',
|
50
48
|
:us => 'USA',
|
@@ -55,6 +53,5 @@ module WorldFlags
|
|
55
53
|
:no => 'Norge'
|
56
54
|
}
|
57
55
|
end
|
58
|
-
alias_method :nb, :no
|
59
56
|
end
|
60
57
|
end
|
@@ -1,9 +1,9 @@
|
|
1
1
|
module WorldFlags
|
2
2
|
class Languages < Hashie::Mash
|
3
3
|
def en
|
4
|
-
|
5
|
-
:ar => '
|
6
|
-
:br => '
|
4
|
+
{
|
5
|
+
:ar => 'Spanish',
|
6
|
+
:br => 'Portuguese',
|
7
7
|
:po => 'Portuguese',
|
8
8
|
:gr => 'Greek',
|
9
9
|
:gb => 'British English',
|
@@ -14,43 +14,37 @@ module WorldFlags
|
|
14
14
|
:de => 'German',
|
15
15
|
:dk => 'Danish',
|
16
16
|
:se => 'Swedish',
|
17
|
-
:sv => 'Swedish',
|
18
17
|
:no => 'Norwegian',
|
19
|
-
:nb => 'Norwegian',
|
20
18
|
:fi => 'Finnish'
|
21
19
|
}
|
22
20
|
end
|
23
21
|
|
24
22
|
def da
|
25
|
-
|
23
|
+
{
|
26
24
|
:gb => 'Engelsk',
|
27
25
|
:us => 'Engelsk',
|
28
26
|
:es => 'Spansk',
|
29
27
|
:de => 'Tysk',
|
30
28
|
:dk => 'Dansk',
|
31
29
|
:se => 'Svensk',
|
32
|
-
:sv => 'Svensk',
|
33
30
|
:no => 'Norsk'
|
34
31
|
}
|
35
32
|
end
|
36
|
-
alias_method :dk, :da
|
37
33
|
|
38
|
-
def
|
39
|
-
|
34
|
+
def sv
|
35
|
+
{
|
40
36
|
:gb => 'Engelska',
|
41
37
|
:us => 'Engelska',
|
42
38
|
:es => 'Spansk',
|
43
39
|
:de => 'Tysk',
|
44
40
|
:dk => 'Dansk',
|
45
41
|
:se => 'Svenska',
|
46
|
-
:sv => 'Svenska',
|
47
42
|
:no => 'Norsk'
|
48
43
|
}
|
49
44
|
end
|
50
|
-
alias_method :sv, :se
|
51
45
|
|
52
|
-
def
|
53
|
-
|
46
|
+
def nb
|
47
|
+
{
|
54
48
|
:gb => 'Engelsk',
|
55
49
|
:us => 'Engelsk',
|
56
50
|
:es => 'Spansk',
|
@@ -61,6 +55,5 @@ module WorldFlags
|
|
61
55
|
:no => 'Norsk'
|
62
56
|
}
|
63
57
|
end
|
64
|
-
alias_method :nb, :no
|
65
58
|
end
|
66
59
|
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require "world_flags/util/language"
|
2
|
+
require "world_flags/util/country"
|
3
|
+
require "world_flags/util/config"
|
4
|
+
|
5
|
+
module WorldFlags
|
6
|
+
module Util
|
7
|
+
def self.included base
|
8
|
+
base.send :include, Language
|
9
|
+
base.send :include, Country
|
10
|
+
base.send :include, Config
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
module WorldFlags
|
2
|
+
module Util
|
3
|
+
module Config
|
4
|
+
attr_accessor :auto_select, :raise_error
|
5
|
+
attr_accessor :default_code, :default_locale
|
6
|
+
|
7
|
+
def reset!
|
8
|
+
raise_error_off!
|
9
|
+
auto_select_off!
|
10
|
+
|
11
|
+
self.countries = nil
|
12
|
+
self.countries_map = nil
|
13
|
+
|
14
|
+
self.languages_map = nil
|
15
|
+
self.languages = nil
|
16
|
+
end
|
17
|
+
|
18
|
+
def default_code_used
|
19
|
+
WorldFlags.default_code || :us
|
20
|
+
end
|
21
|
+
|
22
|
+
def default_locale_used
|
23
|
+
WorldFlags.default_locale || I18n.locale
|
24
|
+
end
|
25
|
+
|
26
|
+
def available_locales
|
27
|
+
@available_locales ||= I18n.available_locales unless I18n.available_locales.blank?
|
28
|
+
@available_locales ||= default_locales
|
29
|
+
end
|
30
|
+
|
31
|
+
def available_locales= *list
|
32
|
+
raise ArgumentError, "Must be a list of locales, was #{list}" if list.empty?
|
33
|
+
@available_locales = list.flatten
|
34
|
+
end
|
35
|
+
|
36
|
+
def default_locales
|
37
|
+
['en', 'fr', 'es', 'ru']
|
38
|
+
end
|
39
|
+
|
40
|
+
def auto_select?
|
41
|
+
auto_select
|
42
|
+
end
|
43
|
+
|
44
|
+
def auto_select!
|
45
|
+
@auto_select = true
|
46
|
+
end
|
47
|
+
|
48
|
+
def auto_select_off!
|
49
|
+
@auto_select = true
|
50
|
+
end
|
51
|
+
|
52
|
+
def raise_error?
|
53
|
+
@raise_error
|
54
|
+
end
|
55
|
+
|
56
|
+
def raise_error!
|
57
|
+
@raise_error = true
|
58
|
+
end
|
59
|
+
|
60
|
+
def raise_error_off!
|
61
|
+
@raise_error = false
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module WorldFlags
|
2
|
+
module Util
|
3
|
+
module Country
|
4
|
+
attr_writer :countries_map
|
5
|
+
|
6
|
+
def country_label code, locale
|
7
|
+
WorldFlags.country code, locale
|
8
|
+
end
|
9
|
+
|
10
|
+
def countries
|
11
|
+
@countries ||= Countries.new
|
12
|
+
end
|
13
|
+
|
14
|
+
def country code = :us, locale = :en
|
15
|
+
locale ||= default_locale_used
|
16
|
+
|
17
|
+
locale_countries_map = countries_map[locale] || countries_map[default_locale_used]
|
18
|
+
locale_countries_map = countries_map[:en] if locale_countries_map.blank?
|
19
|
+
|
20
|
+
raise "No country-locale map defined for locale: #{locale} or :en in #{countries.inspect}" if locale_countries_map.blank?
|
21
|
+
|
22
|
+
# raise("No country map defined for country code: #{code} in #{locale_countries_map[code]}")
|
23
|
+
locale_countries_map[code] ? locale_countries_map[code] : locale_countries_map[default_code_used]
|
24
|
+
rescue Exception => e
|
25
|
+
raise e if WorldFlags.raise_error?
|
26
|
+
"Undefined"
|
27
|
+
end
|
28
|
+
|
29
|
+
def countries= countries
|
30
|
+
raise ArgumentError, "Must be a hash, was: #{countries}" unless !countries || countries.kind_of?(Hash)
|
31
|
+
@countries = countries
|
32
|
+
end
|
33
|
+
|
34
|
+
def countries_map
|
35
|
+
@countries_map ||= begin
|
36
|
+
available_locales.inject({}) do |res, loc|
|
37
|
+
res[loc] = find_country_map(loc)
|
38
|
+
res
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def find_country_map loc
|
44
|
+
countries.respond_to?(loc) ? countries.send(loc) : languages.send(locale(loc))
|
45
|
+
rescue
|
46
|
+
countries.send(default_locale_used)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module WorldFlags
|
2
|
+
module Util
|
3
|
+
module Language
|
4
|
+
attr_writer :languages_map
|
5
|
+
|
6
|
+
def language_label code, locale
|
7
|
+
WorldFlags.language code, locale
|
8
|
+
end
|
9
|
+
|
10
|
+
def language code = :us, locale = :en
|
11
|
+
locale ||= default_locale_used
|
12
|
+
|
13
|
+
locale_languages_map = languages_map[locale] || languages_map[default_locale_used]
|
14
|
+
locale_languages_map = languages_map[:en] if locale_languages_map.blank?
|
15
|
+
|
16
|
+
raise "No language-locale map defined for locale: #{locale} or :en in #{languages.inspect}" if locale_languages_map.blank?
|
17
|
+
|
18
|
+
# raise("No language map defined for language code: #{code} in #{locale_languages_map[code]}")
|
19
|
+
locale_languages_map[code] ? locale_languages_map[code] : locale_languages_map[default_code_used]
|
20
|
+
rescue Exception => e
|
21
|
+
raise e if WorldFlags.raise_error?
|
22
|
+
"Undefined"
|
23
|
+
end
|
24
|
+
|
25
|
+
def languages
|
26
|
+
@languages ||= Languages.new
|
27
|
+
end
|
28
|
+
|
29
|
+
def languages= languages
|
30
|
+
raise ArgumentError, "Must be a hash, was: #{languages}" unless !languages || languages.kind_of?(Hash)
|
31
|
+
@languages = languages
|
32
|
+
end
|
33
|
+
|
34
|
+
def languages_map
|
35
|
+
@languages_map ||= begin
|
36
|
+
available_locales.inject({}) do |res, loc|
|
37
|
+
res[loc] = find_language_map(loc)
|
38
|
+
res
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def find_language_map loc
|
44
|
+
languages.respond_to?(loc) ? languages.send(loc) : languages.send(locale(loc))
|
45
|
+
rescue
|
46
|
+
languages.send(default_locale_used)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
data/spec/spec_helper.rb
CHANGED
File without changes
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe WorldFlags::Helper::View do
|
4
|
+
include ControllerTestHelpers,
|
5
|
+
WorldFlags::Helper::View
|
6
|
+
|
7
|
+
def countries locale = :en
|
8
|
+
path = File.join(SPEC_DIR, "../config/countries/locale_countries.#{locale}.json")
|
9
|
+
JSON.parse File.read(path)
|
10
|
+
end
|
11
|
+
|
12
|
+
before do
|
13
|
+
WorldFlags.auto_select!
|
14
|
+
I18n.locale = :en
|
15
|
+
WorldFlags.available_locales = [:da, :sv, :nb, :en]
|
16
|
+
WorldFlags.reset!
|
17
|
+
WorldFlags.countries = Hashie::Mash.new countries
|
18
|
+
WorldFlags.raise_error!
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should list flags using Array" do
|
22
|
+
output = flags_list 32 do
|
23
|
+
flags [:ar, :gb]
|
24
|
+
end
|
25
|
+
output.should == "<ul class=\"f32\"><li class=\"flag ar\" data-cc=\"ar\" data-country_name=\"Argentina\" data-language_name=\"Spanish\" data-locale=\"ar\"> </li><li class=\"flag gb\" data-cc=\"gb\" data-country_name=\"United Kingdom\" data-language_name=\"British English\" data-locale=\"gb\"> </li></ul>"
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe WorldFlags::Helper::View do
|
4
|
+
include ControllerTestHelpers,
|
5
|
+
WorldFlags::Helper::View
|
6
|
+
|
7
|
+
def languages locale = :en
|
8
|
+
path = File.join(SPEC_DIR, "../config/languages/locale_languages.#{locale}.json")
|
9
|
+
JSON.parse(File.read(path))
|
10
|
+
end
|
11
|
+
|
12
|
+
before do
|
13
|
+
WorldFlags.auto_select!
|
14
|
+
I18n.locale = :en
|
15
|
+
WorldFlags.available_locales = [:da, :sv, :nb, :en]
|
16
|
+
WorldFlags.reset!
|
17
|
+
WorldFlags.languages = Hashie::Mash.new languages
|
18
|
+
WorldFlags.raise_error!
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should list flags using Array" do
|
22
|
+
output = flags_list 32 do
|
23
|
+
flags [:ar, :gb]
|
24
|
+
end
|
25
|
+
output.should == "<ul class=\"f32\"><li class=\"flag ar\" data-cc=\"ar\" data-country_name=\"Argentina\" data-language_name=\"Spanish\" data-locale=\"ar\"> </li><li class=\"flag gb\" data-cc=\"gb\" data-country_name=\"United Kingdom\" data-language_name=\"English\" data-locale=\"gb\"> </li></ul>"
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe WorldFlags::Helper::View do
|
4
|
+
include ControllerTestHelpers,
|
5
|
+
WorldFlags::Helper::View
|
6
|
+
|
7
|
+
def locale_flag_map
|
8
|
+
path = File.join(SPEC_DIR, "../config/locale_map/locale_to_country_code.json")
|
9
|
+
JSON.parse(File.read(path))
|
10
|
+
end
|
11
|
+
|
12
|
+
before do
|
13
|
+
WorldFlags.auto_select!
|
14
|
+
I18n.locale = :en
|
15
|
+
WorldFlags.available_locales = [:da, :sv, :nb, :en]
|
16
|
+
WorldFlags.reset!
|
17
|
+
WorldFlags.locale_flag_map = Hashie::Mash.new locale_flag_map
|
18
|
+
|
19
|
+
WorldFlags.raise_error!
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should list flags using Array" do
|
23
|
+
output = flags_list 32 do
|
24
|
+
flags [:ar, :gb]
|
25
|
+
end
|
26
|
+
output.should == "<ul class=\"f32\"><li class=\"flag ar\" data-cc=\"ar\" data-country_name=\"Argentina\" data-language_name=\"Spanish\" data-locale=\"ar\"> </li><li class=\"flag gb\" data-cc=\"gb\" data-country_name=\"United Kingdom\" data-language_name=\"British English\" data-locale=\"gb\"> </li></ul>"
|
27
|
+
end
|
28
|
+
end
|
@@ -7,8 +7,8 @@ describe WorldFlags::Helper::View do
|
|
7
7
|
before do
|
8
8
|
WorldFlags.auto_select!
|
9
9
|
I18n.locale = 'ar'
|
10
|
-
WorldFlags.
|
11
|
-
|
10
|
+
WorldFlags.available_locales = [:da, :sv, :nb, :en]
|
11
|
+
WorldFlags.reset!
|
12
12
|
WorldFlags.raise_error!
|
13
13
|
end
|
14
14
|
|
@@ -39,26 +39,26 @@ describe WorldFlags::Helper::View do
|
|
39
39
|
output = flags_list 32 do
|
40
40
|
flags [:ar, :gb]
|
41
41
|
end
|
42
|
-
output.should == "<ul class=\"f32\"><li class=\"flag ar selected\" data-cc=\"ar\" data-country_name=\"Argentina\" data-language_name=\"
|
42
|
+
output.should == "<ul class=\"f32\"><li class=\"flag ar selected\" data-cc=\"ar\" data-country_name=\"Argentina\" data-language_name=\"Spanish\" data-locale=\"ar\"> </li><li class=\"flag gb\" data-cc=\"gb\" data-country_name=\"United Kingdom\" data-language_name=\"British English\" data-locale=\"gb\"> </li></ul>"
|
43
43
|
end
|
44
44
|
|
45
45
|
it "should list flags using args" do
|
46
46
|
output = flags_list 32 do
|
47
47
|
flags :ar, :gb
|
48
48
|
end
|
49
|
-
output.should == "<ul class=\"f32\"><li class=\"flag ar selected\" data-cc=\"ar\" data-country_name=\"Argentina\" data-language_name=\"
|
49
|
+
output.should == "<ul class=\"f32\"><li class=\"flag ar selected\" data-cc=\"ar\" data-country_name=\"Argentina\" data-language_name=\"Spanish\" data-locale=\"ar\"> </li><li class=\"flag gb\" data-cc=\"gb\" data-country_name=\"United Kingdom\" data-language_name=\"British English\" data-locale=\"gb\"> </li></ul>"
|
50
50
|
end
|
51
51
|
|
52
52
|
it "should list flags using args and :with_semi" do
|
53
53
|
output = flags_list 32 do
|
54
54
|
flags :ar, :gb, :with_semi => true
|
55
55
|
end
|
56
|
-
output.should == "<ul class=\"f32\"><li class=\"flag ar selected\" data-cc=\"ar\" data-country_name=\"Argentina\" data-language_name=\"
|
56
|
+
output.should == "<ul class=\"f32\"><li class=\"flag ar selected\" data-cc=\"ar\" data-country_name=\"Argentina\" data-language_name=\"Spanish\" data-locale=\"ar\"> </li><li class=\"flag gb semi\" data-cc=\"gb\" data-country_name=\"United Kingdom\" data-language_name=\"British English\" data-locale=\"gb\"> </li></ul>"
|
57
57
|
end
|
58
58
|
|
59
59
|
it "should list flags" do
|
60
60
|
output = flag_title :ar, 'Argentina'
|
61
|
-
output.should == "<li class=\"flag ar selected\" data-cc=\"ar\" data-country_name=\"Argentina\" data-language_name=\"
|
61
|
+
output.should == "<li class=\"flag ar selected\" data-cc=\"ar\" data-country_name=\"Argentina\" data-language_name=\"Spanish\" data-locale=\"ar\" title=\"Argentina\"> </li>"
|
62
62
|
end
|
63
63
|
|
64
64
|
describe 'Countries' do
|
@@ -71,7 +71,7 @@ describe WorldFlags::Helper::View do
|
|
71
71
|
output = flags_list 32 do
|
72
72
|
flags :dk, :se, :no, :with_semi => true, :country => :da
|
73
73
|
end
|
74
|
-
output.should == "<ul class=\"f32\"><li class=\"flag dk selected\" data-cc=\"dk\" data-country_name=\"Danmark\" data-language_name=\"Dansk\" data-locale=\"dk\"> </li><li class=\"flag se semi\" data-cc=\"se\" data-country_name=\"
|
74
|
+
output.should == "<ul class=\"f32\"><li class=\"flag dk selected\" data-cc=\"dk\" data-country_name=\"Danmark\" data-language_name=\"Dansk\" data-locale=\"dk\"> </li><li class=\"flag se semi\" data-cc=\"se\" data-country_name=\"Sverige\" data-language_name=\"Svensk\" data-locale=\"se\"> </li><li class=\"flag no semi\" data-cc=\"no\" data-country_name=\"Norge\" data-language_name=\"Norsk\" data-locale=\"no\"> </li></ul>"
|
75
75
|
end
|
76
76
|
end
|
77
77
|
|
@@ -84,7 +84,7 @@ describe WorldFlags::Helper::View do
|
|
84
84
|
output = flags_list 32 do
|
85
85
|
flags :dk, :se, :no, :with_semi => true, :country => :da
|
86
86
|
end
|
87
|
-
output.should == "<ul class=\"f32\"><li class=\"flag dk semi\" data-cc=\"dk\" data-country_name=\"Danmark\" data-language_name=\"Dansk\" data-locale=\"dk\"> </li><li class=\"flag se selected\" data-cc=\"se\" data-country_name=\"
|
87
|
+
output.should == "<ul class=\"f32\"><li class=\"flag dk semi\" data-cc=\"dk\" data-country_name=\"Danmark\" data-language_name=\"Dansk\" data-locale=\"dk\"> </li><li class=\"flag se selected\" data-cc=\"se\" data-country_name=\"Sverige\" data-language_name=\"Svenska\" data-locale=\"se\"> </li><li class=\"flag no semi\" data-cc=\"no\" data-country_name=\"Norge\" data-language_name=\"Norsk\" data-locale=\"no\"> </li></ul>"
|
88
88
|
end
|
89
89
|
end
|
90
90
|
|
data/world-flags.gemspec
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "world-flags"
|
8
|
-
s.version = "0.3.
|
8
|
+
s.version = "0.3.5"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Kristian Mandrup"]
|
@@ -34,7 +34,6 @@ Gem::Specification.new do |s|
|
|
34
34
|
"lib/world-flags.rb",
|
35
35
|
"lib/world_flags/core_ext.rb",
|
36
36
|
"lib/world_flags/countries.rb",
|
37
|
-
"lib/world_flags/country_util.rb",
|
38
37
|
"lib/world_flags/helper/all.rb",
|
39
38
|
"lib/world_flags/helper/browser.rb",
|
40
39
|
"lib/world_flags/helper/geo.rb",
|
@@ -42,9 +41,12 @@ Gem::Specification.new do |s|
|
|
42
41
|
"lib/world_flags/helper/view.rb",
|
43
42
|
"lib/world_flags/helper/view/util.rb",
|
44
43
|
"lib/world_flags/helpers.rb",
|
45
|
-
"lib/world_flags/lang_util.rb",
|
46
44
|
"lib/world_flags/languages.rb",
|
47
45
|
"lib/world_flags/rails/engine.rb",
|
46
|
+
"lib/world_flags/util.rb",
|
47
|
+
"lib/world_flags/util/config.rb",
|
48
|
+
"lib/world_flags/util/country.rb",
|
49
|
+
"lib/world_flags/util/language.rb",
|
48
50
|
"sandbox/country_codes_table.html",
|
49
51
|
"sandbox/extract_codes.rb",
|
50
52
|
"sandbox/languages_country_extract.rb",
|
@@ -53,8 +55,11 @@ Gem::Specification.new do |s|
|
|
53
55
|
"sandbox/official_languages.txt",
|
54
56
|
"spec/spec_helper.rb",
|
55
57
|
"spec/world_flags/country_spec.rb",
|
58
|
+
"spec/world_flags/helper/locale_helper_spec.rb",
|
59
|
+
"spec/world_flags/json/json_countries_spec.rb",
|
60
|
+
"spec/world_flags/json/json_languages_spec.rb",
|
61
|
+
"spec/world_flags/json/locale_flag_spec.rb",
|
56
62
|
"spec/world_flags/language_spec.rb",
|
57
|
-
"spec/world_flags/locale_helper_spec.rb",
|
58
63
|
"spec/world_flags/view_helper_spec.rb",
|
59
64
|
"vendor/assets/images/flags/flags16.png",
|
60
65
|
"vendor/assets/images/flags/flags16_semi.png",
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: world-flags
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -132,7 +132,6 @@ files:
|
|
132
132
|
- lib/world-flags.rb
|
133
133
|
- lib/world_flags/core_ext.rb
|
134
134
|
- lib/world_flags/countries.rb
|
135
|
-
- lib/world_flags/country_util.rb
|
136
135
|
- lib/world_flags/helper/all.rb
|
137
136
|
- lib/world_flags/helper/browser.rb
|
138
137
|
- lib/world_flags/helper/geo.rb
|
@@ -140,9 +139,12 @@ files:
|
|
140
139
|
- lib/world_flags/helper/view.rb
|
141
140
|
- lib/world_flags/helper/view/util.rb
|
142
141
|
- lib/world_flags/helpers.rb
|
143
|
-
- lib/world_flags/lang_util.rb
|
144
142
|
- lib/world_flags/languages.rb
|
145
143
|
- lib/world_flags/rails/engine.rb
|
144
|
+
- lib/world_flags/util.rb
|
145
|
+
- lib/world_flags/util/config.rb
|
146
|
+
- lib/world_flags/util/country.rb
|
147
|
+
- lib/world_flags/util/language.rb
|
146
148
|
- sandbox/country_codes_table.html
|
147
149
|
- sandbox/extract_codes.rb
|
148
150
|
- sandbox/languages_country_extract.rb
|
@@ -151,8 +153,11 @@ files:
|
|
151
153
|
- sandbox/official_languages.txt
|
152
154
|
- spec/spec_helper.rb
|
153
155
|
- spec/world_flags/country_spec.rb
|
156
|
+
- spec/world_flags/helper/locale_helper_spec.rb
|
157
|
+
- spec/world_flags/json/json_countries_spec.rb
|
158
|
+
- spec/world_flags/json/json_languages_spec.rb
|
159
|
+
- spec/world_flags/json/locale_flag_spec.rb
|
154
160
|
- spec/world_flags/language_spec.rb
|
155
|
-
- spec/world_flags/locale_helper_spec.rb
|
156
161
|
- spec/world_flags/view_helper_spec.rb
|
157
162
|
- vendor/assets/images/flags/flags16.png
|
158
163
|
- vendor/assets/images/flags/flags16_semi.png
|
@@ -189,7 +194,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
189
194
|
version: '0'
|
190
195
|
segments:
|
191
196
|
- 0
|
192
|
-
hash:
|
197
|
+
hash: 240785203955185004
|
193
198
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
194
199
|
none: false
|
195
200
|
requirements:
|
@@ -1,46 +0,0 @@
|
|
1
|
-
module WorldFlags
|
2
|
-
module CountryUtil
|
3
|
-
def country_label code, locale
|
4
|
-
WorldFlags.country code, locale
|
5
|
-
end
|
6
|
-
|
7
|
-
def countries
|
8
|
-
@countries ||= Countries.new
|
9
|
-
end
|
10
|
-
|
11
|
-
def country code = :us, locale = :en
|
12
|
-
locale ||= default_locale_used
|
13
|
-
|
14
|
-
locale_countries_map = countries_map[locale] || countries_map[default_locale_used]
|
15
|
-
locale_countries_map = countries_map[:en] if locale_countries_map.blank?
|
16
|
-
|
17
|
-
raise "No country-locale map defined for locale: #{locale} or :en in #{countries.inspect}" if locale_countries_map.blank?
|
18
|
-
|
19
|
-
# raise("No country map defined for country code: #{code} in #{locale_countries_map[code]}")
|
20
|
-
locale_countries_map[code] ? locale_countries_map[code] : locale_countries_map[default_code_used]
|
21
|
-
rescue Exception => e
|
22
|
-
raise e if WorldFlags.raise_error?
|
23
|
-
"Undefined"
|
24
|
-
end
|
25
|
-
|
26
|
-
def countries= countries
|
27
|
-
raise ArgumentError, "Must be a hash, was: #{countries}" unless countries.kind_of?(Hash)
|
28
|
-
@countries = countries
|
29
|
-
end
|
30
|
-
|
31
|
-
def countries_map
|
32
|
-
@countries_map ||= begin
|
33
|
-
active_locales.inject({}) do |res, loc|
|
34
|
-
res[loc] = find_country_map(loc)
|
35
|
-
res
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
def find_country_map loc
|
41
|
-
countries.respond_to?(loc) ? countries.send(loc) : languages.send(locale(loc))
|
42
|
-
rescue
|
43
|
-
countries.send(default_locale_used)
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
@@ -1,46 +0,0 @@
|
|
1
|
-
module WorldFlags
|
2
|
-
module LangUtil
|
3
|
-
def language_label code, locale
|
4
|
-
WorldFlags.language code, locale
|
5
|
-
end
|
6
|
-
|
7
|
-
def language code = :us, locale = :en
|
8
|
-
locale ||= default_locale_used
|
9
|
-
|
10
|
-
locale_languages_map = languages_map[locale] || languages_map[default_locale_used]
|
11
|
-
locale_languages_map = languages_map[:en] if locale_languages_map.blank?
|
12
|
-
|
13
|
-
raise "No language-locale map defined for locale: #{locale} or :en in #{languages.inspect}" if locale_languages_map.blank?
|
14
|
-
|
15
|
-
# raise("No language map defined for language code: #{code} in #{locale_languages_map[code]}")
|
16
|
-
locale_languages_map[code] ? locale_languages_map[code] : locale_languages_map[default_code_used]
|
17
|
-
rescue Exception => e
|
18
|
-
raise e if WorldFlags.raise_error?
|
19
|
-
"Undefined"
|
20
|
-
end
|
21
|
-
|
22
|
-
def languages
|
23
|
-
@languages ||= Languages.new
|
24
|
-
end
|
25
|
-
|
26
|
-
def languages= languages
|
27
|
-
raise ArgumentError, "Must be a hash, was: #{languages}" unless languages.kind_of?(Hash)
|
28
|
-
@languages = languages
|
29
|
-
end
|
30
|
-
|
31
|
-
def languages_map
|
32
|
-
@languages_map ||= begin
|
33
|
-
active_locales.inject({}) do |res, loc|
|
34
|
-
res[loc] = find_language_map(loc)
|
35
|
-
res
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
def find_language_map loc
|
41
|
-
languages.respond_to?(loc) ? languages.send(loc) : languages.send(locale(loc))
|
42
|
-
rescue
|
43
|
-
languages.send(default_locale_used)
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|