bcardarella-decoder 0.6.1 → 0.6.3

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.6.1
1
+ 0.6.3
data/decoder.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{decoder}
8
- s.version = "0.6.1"
8
+ s.version = "0.6.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Brian Cardarella"]
@@ -1,19 +1,22 @@
1
1
  module Decoder
2
2
  class Countries
3
- attr_accessor :countries
4
-
3
+
5
4
  def initialize
6
- self.load_yaml
5
+ self.countries = Decoder.locale[Decoder.i18n]
7
6
  end
8
7
 
9
- def load_yaml
10
- self.countries = YAML.load_file(yaml_file_name)[Decoder.i18n]
8
+ def inspect
9
+ %{#<#{self.class}>}
11
10
  end
12
-
13
- def yaml_file_name
14
- "#{File.dirname(__FILE__)}/../locales/#{Decoder.i18n}.yml"
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]
@@ -1,24 +1,25 @@
1
1
  module Decoder
2
2
  class Country
3
3
  include ::CommonMethods
4
- attr_accessor :states, :code, :name
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 = args[:code].to_s
10
- self.name = args[: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 load_yaml
16
- self.states = YAML.load_file(yaml_file_name)[Decoder.i18n][self.code][:states]
12
+ def states
13
+ @states
17
14
  end
18
15
 
19
- def yaml_file_name
20
- "#{File.dirname(__FILE__)}/../locales/#{Decoder.i18n}.yml"
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::Countries.any_instance.expects(:load_yaml)
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 "Loading the YAML" do
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::Country.any_instance.expects(:load_yaml)
34
- Decoder::Country.new(:code => "US", :name => "United States")
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
- end
66
-
67
- context "#states aliases" do
68
- setup do
69
- @country = Decoder::Country.new(:code => "US", :name => "United States")
70
- end
71
-
72
- should "be equal for #states and #provinces" do
73
- assert_equal @country.states, @country.provinces
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
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bcardarella-decoder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.6.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Cardarella