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