bcardarella-decoder 0.6.1 → 0.6.3
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/VERSION +1 -1
- data/decoder.gemspec +1 -1
- data/lib/countries/countries.rb +11 -8
- data/lib/countries/country.rb +12 -11
- data/lib/decoder.rb +19 -0
- data/test/countries/countries_test.rb +7 -19
- data/test/countries/country_test.rb +29 -34
- data/test/decoder_test.rb +16 -0
- metadata +1 -1
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.6.
|
1
|
+
0.6.3
|
data/decoder.gemspec
CHANGED
data/lib/countries/countries.rb
CHANGED
@@ -1,19 +1,22 @@
|
|
1
1
|
module Decoder
|
2
2
|
class Countries
|
3
|
-
|
4
|
-
|
3
|
+
|
5
4
|
def initialize
|
6
|
-
self.
|
5
|
+
self.countries = Decoder.locale[Decoder.i18n]
|
7
6
|
end
|
8
7
|
|
9
|
-
def
|
10
|
-
self.
|
8
|
+
def inspect
|
9
|
+
%{#<#{self.class}>}
|
11
10
|
end
|
12
|
-
|
13
|
-
def
|
14
|
-
|
11
|
+
|
12
|
+
def countries=(_countries)
|
13
|
+
@countries = _countries
|
15
14
|
end
|
16
15
|
|
16
|
+
def countries
|
17
|
+
@countries
|
18
|
+
end
|
19
|
+
|
17
20
|
def [](_code)
|
18
21
|
_code = _code.to_s.upcase
|
19
22
|
country = countries[_code]
|
data/lib/countries/country.rb
CHANGED
@@ -1,24 +1,25 @@
|
|
1
1
|
module Decoder
|
2
2
|
class Country
|
3
3
|
include ::CommonMethods
|
4
|
-
attr_accessor :
|
5
|
-
alias_method :provinces, :states
|
6
|
-
alias_method :territories, :states
|
4
|
+
attr_accessor :code, :name
|
7
5
|
|
8
6
|
def initialize(args)
|
9
|
-
self.code
|
10
|
-
self.name
|
11
|
-
|
12
|
-
self.load_yaml
|
7
|
+
self.code = args[:code].to_s
|
8
|
+
self.name = args[:name]
|
9
|
+
self.states = Decoder.locale[Decoder.i18n][self.code][:states]
|
13
10
|
end
|
14
11
|
|
15
|
-
def
|
16
|
-
|
12
|
+
def states
|
13
|
+
@states
|
17
14
|
end
|
18
15
|
|
19
|
-
def
|
20
|
-
|
16
|
+
def states=(_states)
|
17
|
+
@states = _states
|
21
18
|
end
|
19
|
+
|
20
|
+
alias_method :counties, :states
|
21
|
+
alias_method :provinces, :states
|
22
|
+
alias_method :territories, :states
|
22
23
|
|
23
24
|
def [](_code)
|
24
25
|
_code = _code.to_s.upcase
|
data/lib/decoder.rb
CHANGED
@@ -4,11 +4,30 @@ require 'countries/country'
|
|
4
4
|
require 'states/state'
|
5
5
|
|
6
6
|
module Decoder
|
7
|
+
|
7
8
|
def self.i18n
|
8
9
|
@i18n ||= :en
|
9
10
|
end
|
10
11
|
|
11
12
|
def self.i18n=(code)
|
12
13
|
@i18n = code
|
14
|
+
self.locale = nil
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.locale
|
18
|
+
@locale || self.locale = self.load_yaml
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.locale=(_locale)
|
22
|
+
@locale = _locale
|
13
23
|
end
|
24
|
+
|
25
|
+
def self.load_yaml
|
26
|
+
Decoder.locale = YAML.load_file(yaml_file_name)
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.yaml_file_name
|
30
|
+
"#{File.dirname(__FILE__)}/locales/#{Decoder.i18n}.yml"
|
31
|
+
end
|
32
|
+
|
14
33
|
end
|
@@ -1,32 +1,20 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
3
|
class CountriesTest < Test::Unit::TestCase
|
4
|
+
should "print '#<#class>" do
|
5
|
+
assert_equal "#<Decoder::Countries>", Decoder::Countries.new.inspect
|
6
|
+
end
|
7
|
+
|
4
8
|
context "English" do
|
5
9
|
setup do
|
6
10
|
Decoder.i18n = :en
|
7
11
|
end
|
8
12
|
|
9
|
-
context "Loading the YAML" do
|
10
|
-
setup do
|
11
|
-
@countries = Decoder::Countries.new
|
12
|
-
end
|
13
|
-
|
14
|
-
should "load locales/en.yml" do
|
15
|
-
assert_match /en.yml/, @countries.yaml_file_name
|
16
|
-
end
|
17
|
-
|
18
|
-
should "set the #countries with the country data" do
|
19
|
-
YAML.expects(:load_file).returns({:en => {"US" => {:name => "United States",
|
20
|
-
:states => {}}}})
|
21
|
-
@countries.load_yaml
|
22
|
-
assert "United States", @countries.countries["US"][:name]
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
13
|
context "a new object" do
|
27
14
|
should "load the yaml" do
|
28
|
-
Decoder
|
29
|
-
Decoder::Countries.new
|
15
|
+
Decoder.expects(:load_yaml).returns({:en => {"US" => {:name => "United States", :states => {"MA" => "Massachusetts"}}}})
|
16
|
+
countries = Decoder::Countries.new
|
17
|
+
assert_not_nil countries.countries
|
30
18
|
end
|
31
19
|
end
|
32
20
|
|
@@ -6,32 +6,17 @@ class CountryTest < Test::Unit::TestCase
|
|
6
6
|
assert_contains Decoder::State.included_modules, CommonMethods
|
7
7
|
end
|
8
8
|
|
9
|
-
context "English" do
|
9
|
+
context "English for US" do
|
10
10
|
setup do
|
11
11
|
Decoder.i18n = :en
|
12
12
|
end
|
13
13
|
|
14
|
-
context "
|
15
|
-
setup do
|
16
|
-
@country = Decoder::Country.new(:code => "US", :name => "United States")
|
17
|
-
end
|
18
|
-
|
19
|
-
should "load yaml/states/us/en.yml" do
|
20
|
-
assert_match /en.yml/, @country.yaml_file_name
|
21
|
-
end
|
22
|
-
|
23
|
-
should "set the #states with the US state data" do
|
24
|
-
YAML.expects(:load_file).returns({:en => {"US" => {:name => "United States",
|
25
|
-
:states => {"MA" => "Massachusetts"}}}})
|
26
|
-
@country.load_yaml
|
27
|
-
assert "Massachusetts", @country.states[:MA]
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
context "a new object" do
|
14
|
+
context "A new country" do
|
32
15
|
should "load the yaml" do
|
33
|
-
Decoder
|
34
|
-
|
16
|
+
Decoder.expects(:load_yaml).returns({:en => {"US" => {:name => "United States", :states => {"MA" => "Massachusetts"}}}})
|
17
|
+
|
18
|
+
country = Decoder::Country.new(:code => "US", :name => "United States")
|
19
|
+
assert_not_nil country.states
|
35
20
|
end
|
36
21
|
end
|
37
22
|
|
@@ -61,21 +46,31 @@ class CountryTest < Test::Unit::TestCase
|
|
61
46
|
end
|
62
47
|
|
63
48
|
end
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
49
|
+
|
50
|
+
context "#states" do
|
51
|
+
setup do
|
52
|
+
@country = Decoder::Country.new(:code => "US", :name => "United States")
|
53
|
+
end
|
54
|
+
|
55
|
+
should "a hash of states" do
|
56
|
+
assert_equal "Massachusetts", @country.states["MA"]
|
57
|
+
end
|
58
|
+
|
59
|
+
context "aliases" do
|
60
|
+
should "be equal for #states and #counties" do
|
61
|
+
assert_equal @country.states, @country.counties
|
62
|
+
end
|
63
|
+
|
64
|
+
should "be equal for #states and #provinces" do
|
65
|
+
assert_equal @country.states, @country.provinces
|
66
|
+
end
|
67
|
+
|
68
|
+
should "be equal for #states and #territories" do
|
69
|
+
assert_equal @country.states, @country.territories
|
70
|
+
end
|
71
|
+
end
|
74
72
|
end
|
75
73
|
|
76
|
-
should "be equal for #states and #territories" do
|
77
|
-
assert_equal @country.states, @country.territories
|
78
|
-
end
|
79
74
|
end
|
80
75
|
|
81
76
|
end
|
data/test/decoder_test.rb
CHANGED
@@ -9,6 +9,22 @@ class DecoderTest < Test::Unit::TestCase
|
|
9
9
|
should "set the Internationalization code to :de (German)" do
|
10
10
|
Decoder.i18n = :de
|
11
11
|
assert_equal :de, Decoder.i18n
|
12
|
+
assert_nil Decoder.class_eval { @locale }
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
context "File loading" do
|
17
|
+
setup do
|
18
|
+
Decoder.locale = nil
|
19
|
+
end
|
20
|
+
|
21
|
+
should "only load once" do
|
22
|
+
YAML.expects(:load_file).returns({:en => {"US" => {:name => "United States",
|
23
|
+
:states => {"MA" => "Massachusetts"}}}})
|
24
|
+
locale = Decoder.locale
|
25
|
+
Decoder.locale
|
26
|
+
Decoder::Countries.new
|
27
|
+
Decoder::Country.new(:code => "US", :name => "United States")
|
12
28
|
end
|
13
29
|
end
|
14
30
|
end
|