decoder 0.7.2 → 0.8.0

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.rdoc CHANGED
@@ -12,6 +12,20 @@
12
12
 
13
13
  Currently the yaml files are still quite incomplete. Please fork and populate!
14
14
 
15
+ = FIPS
16
+ http://en.wikipedia.org/wiki/Federal_Information_Processing_Standard
17
+ Certain US States have FIPS codes. You can either get the code for a state
18
+ or look up a state by its FIPS code:
19
+
20
+ >> Decoder.i18n = :en
21
+ >> country = Decoder::Countries[:US]
22
+ >> state = country[:MA]
23
+ >> state.fips
24
+ => 25
25
+ >> state = country.by_fips(25)
26
+ >> state.to_s
27
+ => "Massachusetts"
28
+
15
29
  = i18n
16
30
  When adding a new language please use the ISO 639-1 Code 2-letter standard.
17
31
  You can find the appropriate code for a given language here:
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.7.2
1
+ 0.8.0
data/decoder.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{decoder}
8
- s.version = "0.7.2"
8
+ s.version = "0.6.5"
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"]
12
- s.date = %q{2010-07-23}
12
+ s.date = %q{2009-11-22}
13
13
  s.description = %q{Decoder}
14
14
  s.email = %q{bcardarella@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -40,7 +40,7 @@ Gem::Specification.new do |s|
40
40
  s.homepage = %q{http://github.com/bcardarella/decoder}
41
41
  s.rdoc_options = ["--charset=UTF-8"]
42
42
  s.require_paths = ["lib"]
43
- s.rubygems_version = %q{1.3.7}
43
+ s.rubygems_version = %q{1.3.5}
44
44
  s.summary = %q{Decoder}
45
45
  s.test_files = [
46
46
  "test/common_methods_test.rb",
@@ -55,13 +55,12 @@ Gem::Specification.new do |s|
55
55
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
56
56
  s.specification_version = 3
57
57
 
58
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
59
- s.add_development_dependency(%q<shoulda>, [">= 0"])
58
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
59
+ s.add_development_dependency(%q<thoughtbot-shoulda>, [">= 0"])
60
60
  else
61
- s.add_dependency(%q<shoulda>, [">= 0"])
61
+ s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
62
62
  end
63
63
  else
64
- s.add_dependency(%q<shoulda>, [">= 0"])
64
+ s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
65
65
  end
66
66
  end
67
-
@@ -24,7 +24,17 @@ module Decoder
24
24
  def [](_code)
25
25
  _code = _code.to_s.upcase
26
26
  state = states[_code]
27
- Decoder::State.new(:code => _code, :name => state)
27
+ if state.is_a?(Array)
28
+ fips = state.last
29
+ state = state.first
30
+ end
31
+ Decoder::State.new(:code => _code, :name => state, :fips => fips)
32
+ end
33
+
34
+ def by_fips(fips)
35
+ fips = fips.to_s
36
+ state = states.detect { |k,v| v.include?(fips) if v.is_a?(Array) }
37
+ self[state.first]
28
38
  end
29
39
  end
30
40
  end
data/lib/decoder/state.rb CHANGED
@@ -1,11 +1,12 @@
1
1
  module Decoder
2
2
  class State
3
3
  include ::CommonMethods
4
- attr_accessor :code, :name
4
+ attr_accessor :code, :name, :fips
5
5
 
6
6
  def initialize(args)
7
7
  self.code = args[:code].to_s
8
8
  self.name = args[:name]
9
+ self.fips = args[:fips].to_i if args[:fips]
9
10
  end
10
11
  end
11
12
  end
data/lib/locales/en.yml CHANGED
@@ -607,66 +607,170 @@
607
607
  US:
608
608
  :name: United States
609
609
  :states:
610
- VA: Virginia
611
- NY: New York
612
- ND: North Dakota
613
- AL: Alabama
614
- HI: Hawaii
615
- MN: Minnesota
616
- DE: Delaware
617
- RI: Rhode Island
618
- MD: Maryland
619
- NE: Nebraska
620
- CO: Colorado
621
- IA: Iowa
622
- MO: Missouri
623
- PR: Puerto Rico
624
- WY: Wyoming
625
- ME: Maine
626
- KY: Kentucky
627
- OR: Oregon
628
- IL: Illinois
629
610
  MP: Northern Mariana Islands
630
- GU: Guam
631
- AZ: Arizona
632
- OH: Ohio
633
- TX: Texas
634
- TN: Tennessee
635
- GA: Georgia
636
- NH: New Hampshire
611
+ MT:
612
+ - Montana
613
+ - "30"
614
+ NE:
615
+ - Nebraska
616
+ - "31"
617
+ VA:
618
+ - Virginia
619
+ - "51"
620
+ ME:
621
+ - Maine
622
+ - "23"
637
623
  MH: Marshall Islands
638
- ID: Idaho
639
- IN: Indiana
640
- SC: South Carolina
641
- OK: Oklahoma
642
- NJ: New Jersey
643
- SD: South Dakota
644
- CT: Connecticut
645
- MI: Michigan
646
- AR: Arkansas
647
- FL: Florida
648
- MS: Mississippi
649
- PA: Pennsylvania
650
- FM: Federated States Of Micronesia
651
- MT: Montana
652
- PW: Palau
653
- WI: Wisconsin
624
+ TN:
625
+ - Tennessee
626
+ - "47"
627
+ LA:
628
+ - Louisiana
629
+ - "22"
630
+ MS:
631
+ - Mississippi
632
+ - "28"
633
+ PA:
634
+ - Pennsylvania
635
+ - "42"
636
+ ND:
637
+ - North Dakota
638
+ - "38"
654
639
  AS: American Samoa
655
- VI: Virgin Islands
656
- KS: Kansas
657
- NV: Nevada
658
- CA: California
659
- VT: Vermont
660
- NM: New Mexico
661
- WV: West Virginia
662
- MA: Massachusetts
663
- DC: District Of Columbia
664
- UT: Utah
665
- WA: Washington
666
- AK: Alaska
667
- LA: Louisiana
668
- NC: North Carolina
640
+ SC:
641
+ - South Carolina
642
+ - "45"
643
+ NC:
644
+ - North Carolina
645
+ - "37"
646
+ KY:
647
+ - Kentucky
648
+ - "21"
649
+ MI:
650
+ - Michigan
651
+ - "26"
669
652
  AE: Armed Forces
653
+ DE:
654
+ - Delaware
655
+ - "10"
656
+ MO:
657
+ - Missouri
658
+ - "29"
659
+ VT:
660
+ - Vermont
661
+ - "50"
662
+ WI:
663
+ - Wisconsin
664
+ - "55"
665
+ OH:
666
+ - Ohio
667
+ - "39"
668
+ UT:
669
+ - Utah
670
+ - "49"
671
+ NY:
672
+ - New York
673
+ - "36"
674
+ SD:
675
+ - South Dakota
676
+ - "46"
677
+ DC:
678
+ - District of Columbia
679
+ - "11"
680
+ AL:
681
+ - Alabama
682
+ - "01"
683
+ VI: Virgin Islands
684
+ GA:
685
+ - Georgia
686
+ - "13"
687
+ TX:
688
+ - Texas
689
+ - "48"
690
+ WY:
691
+ - Wyoming
692
+ - "56"
693
+ IL:
694
+ - Illinois
695
+ - "17"
696
+ AR:
697
+ - Arkansas
698
+ - "05"
699
+ RI:
700
+ - Rhode Island
701
+ - "44"
702
+ AZ:
703
+ - Arizona
704
+ - "04"
705
+ OR:
706
+ - Oregon
707
+ - "41"
708
+ CA:
709
+ - California
710
+ - "06"
711
+ IN:
712
+ - Indiana
713
+ - "18"
714
+ CO:
715
+ - Colorado
716
+ - 08
717
+ PW: Palau
718
+ MD:
719
+ - Maryland
720
+ - "24"
721
+ WA:
722
+ - Washington
723
+ - "53"
724
+ CT:
725
+ - Connecticut
726
+ - 09
727
+ WV:
728
+ - West Virginia
729
+ - "54"
730
+ FL:
731
+ - Florida
732
+ - "12"
733
+ HI:
734
+ - Hawaii
735
+ - "15"
736
+ ID:
737
+ - Idaho
738
+ - "16"
739
+ NM:
740
+ - New Mexico
741
+ - "35"
742
+ MN:
743
+ - Minnesota
744
+ - "27"
745
+ GU: Guam
746
+ MA:
747
+ - Massachusetts
748
+ - "25"
749
+ AK:
750
+ - Alaska
751
+ - "02"
752
+ NJ:
753
+ - New Jersey
754
+ - "34"
755
+ PR:
756
+ - Puerto Rico
757
+ - "72"
758
+ FM: Federated States Of Micronesia
759
+ NV:
760
+ - Nevada
761
+ - "32"
762
+ IA:
763
+ - Iowa
764
+ - "19"
765
+ KS:
766
+ - Kansas
767
+ - "20"
768
+ OK:
769
+ - Oklahoma
770
+ - "40"
771
+ NH:
772
+ - New Hampshire
773
+ - "33"
670
774
  BV:
671
775
  :name: Bouvet Island
672
776
  :states: {}
@@ -10,7 +10,7 @@ class CountriesTest < Test::Unit::TestCase
10
10
  Decoder.i18n = :en
11
11
  end
12
12
 
13
- context "a new object" do
13
+ context "A new object" do
14
14
  should "load the yaml" do
15
15
  Decoder.expects(:load_yaml).returns({:en => {"US" => {:name => "United States", :states => {"MA" => "Massachusetts"}}}})
16
16
  countries = Decoder::Countries.new
@@ -1,7 +1,6 @@
1
1
  require 'test_helper'
2
2
 
3
3
  class CountryTest < Test::Unit::TestCase
4
-
5
4
  should "include 'Common Methods' module" do
6
5
  assert_contains Decoder::State.included_modules, CommonMethods
7
6
  end
@@ -24,27 +23,46 @@ class CountryTest < Test::Unit::TestCase
24
23
  setup do
25
24
  @country = Decoder::Country.new(:code => "US", :name => "United States")
26
25
  end
26
+
27
+ context "by code" do
28
+ should "return a state object of \"Massachusetts\" for :MA" do
29
+ state = @country[:MA]
30
+ assert_equal Decoder::State, state.class
31
+ assert_equal "Massachusetts", state.name
32
+ end
27
33
 
28
- should "return a state object of \"Massachusetts\" for :MA" do
29
- state = @country[:MA]
30
- assert_equal Decoder::State, state.class
31
- end
34
+ should "return a state object of \"Massachusetts\" for :ma" do
35
+ state = @country[:ma]
36
+ assert_equal Decoder::State, state.class
37
+ assert_equal "Massachusetts", state.name
38
+ end
32
39
 
33
- should "return a state object of \"Massachusetts\" for :ma" do
34
- state = @country[:ma]
35
- assert_equal Decoder::State, state.class
36
- end
40
+ should "return a state object of \"Massachusetts\" for \"MA\"" do
41
+ state = @country["MA"]
42
+ assert_equal Decoder::State, state.class
43
+ assert_equal "Massachusetts", state.name
44
+ end
37
45
 
38
- should "return a state object of \"Massachusetts\" for \"MA\"" do
39
- state = @country["MA"]
40
- assert_equal Decoder::State, state.class
46
+ should "return a state object of \"Massachusetts\" for \"ma\"" do
47
+ state = @country["ma"]
48
+ assert_equal Decoder::State, state.class
49
+ assert_equal "Massachusetts", state.name
50
+ end
41
51
  end
52
+
53
+ context "by FIPS" do
54
+ should "return a state object of \"Massachusetts\" for 25" do
55
+ state = @country.by_fips(25)
56
+ assert_equal Decoder::State, state.class
57
+ assert_equal "Massachusetts", state.name
58
+ end
42
59
 
43
- should "return a state object of \"Massachusetts\" for \"ma\"" do
44
- state = @country["ma"]
45
- assert_equal Decoder::State, state.class
60
+ should "return a state object of \"Massachusetts\" for \"25\"" do
61
+ state = @country.by_fips("25")
62
+ assert_equal Decoder::State, state.class
63
+ assert_equal "Massachusetts", state.name
64
+ end
46
65
  end
47
-
48
66
  end
49
67
 
50
68
  context "#states" do
@@ -52,10 +70,18 @@ class CountryTest < Test::Unit::TestCase
52
70
  @country = Decoder::Country.new(:code => "US", :name => "United States")
53
71
  end
54
72
 
55
- should "a hash of states" do
56
- assert_equal "Massachusetts", @country.states["MA"]
73
+ context "For a FIPS state" do
74
+ should "be a hash of states" do
75
+ assert_equal ["Massachusetts", "25"], @country.states["MA"]
76
+ end
57
77
  end
58
-
78
+
79
+ context "For a non-FIPS state" do
80
+ should "be a hash of states" do
81
+ assert_equal "Northern Mariana Islands", @country.states["MP"]
82
+ end
83
+ end
84
+
59
85
  context "aliases" do
60
86
  should "be equal for #states and #counties" do
61
87
  assert_equal @country.states, @country.counties
@@ -24,6 +24,21 @@ class StateTest < Test::Unit::TestCase
24
24
  assert_equal "MA", @state.code
25
25
  end
26
26
  end
27
+
28
+ context "FIPS states from a country" do
29
+ setup do
30
+ @country = Decoder::Countries["US"]
31
+ @state = @country["MA"]
32
+ end
33
+
34
+ should "properly assign the name" do
35
+ assert_equal "Massachusetts", @state.name
36
+ end
37
+
38
+ should "properly assign the fips" do
39
+ assert_equal 25, @state.fips
40
+ end
41
+ end
27
42
  end
28
43
 
29
44
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: decoder
3
3
  version: !ruby/object:Gem::Version
4
- hash: 7
4
+ hash: 63
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 7
9
- - 2
10
- version: 0.7.2
8
+ - 8
9
+ - 0
10
+ version: 0.8.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Brian Cardarella
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-07-23 00:00:00 -04:00
18
+ date: 2010-09-12 00:00:00 -04:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -66,8 +66,8 @@ homepage: http://github.com/bcardarella/decoder
66
66
  licenses: []
67
67
 
68
68
  post_install_message:
69
- rdoc_options:
70
- - --charset=UTF-8
69
+ rdoc_options: []
70
+
71
71
  require_paths:
72
72
  - lib
73
73
  required_ruby_version: !ruby/object:Gem::Requirement