model_un 0.1
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/.gitignore +4 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +24 -0
- data/README.md +48 -0
- data/Rakefile +2 -0
- data/lib/model_un/data.rb +189 -0
- data/lib/model_un/version.rb +3 -0
- data/lib/model_un.rb +40 -0
- data/model_un.gemspec +22 -0
- data/spec/model_un_spec.rb +30 -0
- metadata +89 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
model_un (0.0.1)
|
5
|
+
|
6
|
+
GEM
|
7
|
+
remote: http://rubygems.org/
|
8
|
+
specs:
|
9
|
+
diff-lcs (1.1.2)
|
10
|
+
rspec (2.4.0)
|
11
|
+
rspec-core (~> 2.4.0)
|
12
|
+
rspec-expectations (~> 2.4.0)
|
13
|
+
rspec-mocks (~> 2.4.0)
|
14
|
+
rspec-core (2.4.0)
|
15
|
+
rspec-expectations (2.4.0)
|
16
|
+
diff-lcs (~> 1.1.2)
|
17
|
+
rspec-mocks (2.4.0)
|
18
|
+
|
19
|
+
PLATFORMS
|
20
|
+
ruby
|
21
|
+
|
22
|
+
DEPENDENCIES
|
23
|
+
model_un!
|
24
|
+
rspec
|
data/README.md
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
ModelUN - Quick and easy country and US State abbreviations
|
2
|
+
===========================================================
|
3
|
+
|
4
|
+
ModelUN is a tiny little Ruby library for abbreviating and, er, de-abbreviating Countries and US State names.
|
5
|
+
|
6
|
+
Brought to you by [Uh Huh Yeah](http://uhhuhyeah.com/) and [Climber](http://www.climber.com/)
|
7
|
+
|
8
|
+
Installation
|
9
|
+
-------------
|
10
|
+
|
11
|
+
gem install model_un
|
12
|
+
|
13
|
+
|
14
|
+
ModelUN API
|
15
|
+
===========
|
16
|
+
|
17
|
+
Convert a US State to it's abbreviated name
|
18
|
+
-------------------------------------------
|
19
|
+
|
20
|
+
my_state = 'California'
|
21
|
+
my_state_abbr = ModelUN.convert_state_name(my_state) # returns 'CA'
|
22
|
+
|
23
|
+
Convert a US State abbreviation to it's full name
|
24
|
+
-------------------------------------------------
|
25
|
+
|
26
|
+
my_state_abbr = 'CA'
|
27
|
+
my_state_name = ModelUN.convert_state_abbr(my_state_abbr) # returns 'California'
|
28
|
+
|
29
|
+
Or, a shortcut for either method
|
30
|
+
--------------------------------
|
31
|
+
|
32
|
+
my_state = 'California'
|
33
|
+
my_state_abbr = ModelUN.convert(my_state) # returns 'CA'
|
34
|
+
|
35
|
+
my_state_abbr = 'CA'
|
36
|
+
my_state_name = ModelUN.convert(my_state_abbr) # returns 'California'
|
37
|
+
|
38
|
+
|
39
|
+
Current version: v0.1 (February 2011)
|
40
|
+
=====================================
|
41
|
+
|
42
|
+
* Supports conversion of US State names (including Guam, Marshal and Virgin Islands)
|
43
|
+
* [Country conversions to be added in next release]
|
44
|
+
|
45
|
+
Known issues
|
46
|
+
------------
|
47
|
+
|
48
|
+
* No known issues. Please report bugs to [david@uhhuhyeah.com](mailto:david@uhhuhyeah.com?subject=ModelUN), or fee free for send me a patch.
|
data/Rakefile
ADDED
@@ -0,0 +1,189 @@
|
|
1
|
+
module ModelUN
|
2
|
+
US_STATE_ABBR = [
|
3
|
+
'AL',
|
4
|
+
'AK',
|
5
|
+
'AS',
|
6
|
+
'AZ',
|
7
|
+
'AR',
|
8
|
+
'CA',
|
9
|
+
'CO',
|
10
|
+
'CT',
|
11
|
+
'DE',
|
12
|
+
'DC',
|
13
|
+
'FM',
|
14
|
+
'FL',
|
15
|
+
'GA',
|
16
|
+
'GU',
|
17
|
+
'HI',
|
18
|
+
'ID',
|
19
|
+
'IL',
|
20
|
+
'IN',
|
21
|
+
'IA',
|
22
|
+
'KS',
|
23
|
+
'KY',
|
24
|
+
'LA',
|
25
|
+
'ME',
|
26
|
+
'MH',
|
27
|
+
'MD',
|
28
|
+
'MA',
|
29
|
+
'MI',
|
30
|
+
'MN',
|
31
|
+
'MS',
|
32
|
+
'MO',
|
33
|
+
'MT',
|
34
|
+
'NE',
|
35
|
+
'NV',
|
36
|
+
'NH',
|
37
|
+
'NJ',
|
38
|
+
'NM',
|
39
|
+
'NY',
|
40
|
+
'NC',
|
41
|
+
'ND',
|
42
|
+
'MP',
|
43
|
+
'OH',
|
44
|
+
'OK',
|
45
|
+
'OR',
|
46
|
+
'PW',
|
47
|
+
'PA',
|
48
|
+
'PR',
|
49
|
+
'RI',
|
50
|
+
'SC',
|
51
|
+
'SD',
|
52
|
+
'TN',
|
53
|
+
'TX',
|
54
|
+
'UT',
|
55
|
+
'VT',
|
56
|
+
'VI',
|
57
|
+
'VA',
|
58
|
+
'WA',
|
59
|
+
'WV',
|
60
|
+
'WI',
|
61
|
+
'WY'
|
62
|
+
]
|
63
|
+
|
64
|
+
|
65
|
+
US_STATE_NAMES = [
|
66
|
+
'ALABAMA',
|
67
|
+
'ALASKA',
|
68
|
+
'AMERICAN SAMOA',
|
69
|
+
'ARIZONA',
|
70
|
+
'ARKANSAS',
|
71
|
+
'CALIFORNIA',
|
72
|
+
'COLORADO',
|
73
|
+
'CONNECTICUT',
|
74
|
+
'DELAWARE',
|
75
|
+
'DISTRICT OF COLUMBIA',
|
76
|
+
'FEDERATED STATES OF MICRONESIA',
|
77
|
+
'FLORIDA',
|
78
|
+
'GEORGIA',
|
79
|
+
'GUAM',
|
80
|
+
'HAWAII',
|
81
|
+
'IDAHO',
|
82
|
+
'ILLINOIS',
|
83
|
+
'INDIANA',
|
84
|
+
'IOWA',
|
85
|
+
'KANSAS',
|
86
|
+
'KENTUCKY',
|
87
|
+
'LOUISIANA',
|
88
|
+
'MAINE',
|
89
|
+
'MARSHALL ISLANDS',
|
90
|
+
'MARYLAND',
|
91
|
+
'MASSACHUSETTS',
|
92
|
+
'MICHIGAN',
|
93
|
+
'MINNESOTA',
|
94
|
+
'MISSISSIPPI',
|
95
|
+
'MISSOURI',
|
96
|
+
'MONTANA',
|
97
|
+
'NEBRASKA',
|
98
|
+
'NEVADA',
|
99
|
+
'NEW HAMPSHIRE',
|
100
|
+
'NEW JERSEY',
|
101
|
+
'NEW MEXICO',
|
102
|
+
'NEW YORK',
|
103
|
+
'NORTH CAROLINA',
|
104
|
+
'NORTH DAKOTA',
|
105
|
+
'NORTHERN MARIANA ISLANDS',
|
106
|
+
'OHIO',
|
107
|
+
'OKLAHOMA',
|
108
|
+
'OREGON',
|
109
|
+
'PALAU',
|
110
|
+
'PENNSYLVANIA',
|
111
|
+
'PUERTO RICO',
|
112
|
+
'RHODE ISLAND',
|
113
|
+
'SOUTH CAROLINA',
|
114
|
+
'SOUTH DAKOTA',
|
115
|
+
'TENNESSEE',
|
116
|
+
'TEXAS',
|
117
|
+
'UTAH',
|
118
|
+
'VERMONT',
|
119
|
+
'VIRGIN ISLANDS',
|
120
|
+
'VIRGINIA',
|
121
|
+
'WASHINGTON',
|
122
|
+
'WEST VIRGINIA',
|
123
|
+
'WISCONSIN',
|
124
|
+
'WYOMING',
|
125
|
+
]
|
126
|
+
|
127
|
+
US_STATES = [
|
128
|
+
{'full' => 'ALABAMA', 'abbr' => 'AL'},
|
129
|
+
{'full' => 'ALASKA', 'abbr' => 'AK'},
|
130
|
+
{'full' => 'AMERICAN SAMOA', 'abbr' => 'AS'},
|
131
|
+
{'full' => 'ARIZONA', 'abbr' => 'AZ'},
|
132
|
+
{'full' => 'ARKANSAS', 'abbr' => 'AR'},
|
133
|
+
{'full' => 'CALIFORNIA', 'abbr' => 'CA'},
|
134
|
+
{'full' => 'COLORADO', 'abbr' => 'CO'},
|
135
|
+
{'full' => 'CONNECTICUT', 'abbr' => 'CT'},
|
136
|
+
{'full' => 'DELAWARE', 'abbr' => 'DE'},
|
137
|
+
{'full' => 'DISTRICT OF COLUMBIA', 'abbr' => 'DC'},
|
138
|
+
{'full' => 'FEDERATED STATES OF MICRONESIA', 'abbr' => 'FM'},
|
139
|
+
{'full' => 'FLORIDA', 'abbr' => 'FL'},
|
140
|
+
{'full' => 'GEORGIA', 'abbr' => 'GA'},
|
141
|
+
{'full' => 'GUAM', 'abbr' => 'GU'},
|
142
|
+
{'full' => 'HAWAII', 'abbr' => 'HI'},
|
143
|
+
{'full' => 'IDAHO', 'abbr' => 'ID'},
|
144
|
+
{'full' => 'ILLINOIS', 'abbr' => 'IL'},
|
145
|
+
{'full' => 'INDIANA', 'abbr' => 'IN'},
|
146
|
+
{'full' => 'IOWA', 'abbr' => 'IA'},
|
147
|
+
{'full' => 'KANSAS', 'abbr' => 'KS'},
|
148
|
+
{'full' => 'KENTUCKY', 'abbr' => 'KY'},
|
149
|
+
{'full' => 'LOUISIANA', 'abbr' => 'LA'},
|
150
|
+
{'full' => 'MAINE', 'abbr' => 'ME'},
|
151
|
+
{'full' => 'MARSHALL ISLANDS', 'abbr' => 'MH'},
|
152
|
+
{'full' => 'MARYLAND', 'abbr' => 'MD'},
|
153
|
+
{'full' => 'MASSACHUSETTS', 'abbr' => 'MA'},
|
154
|
+
{'full' => 'MICHIGAN', 'abbr' => 'MI'},
|
155
|
+
{'full' => 'MINNESOTA', 'abbr' => 'MN'},
|
156
|
+
{'full' => 'MISSISSIPPI', 'abbr' => 'MS'},
|
157
|
+
{'full' => 'MISSOURI', 'abbr' => 'MO'},
|
158
|
+
{'full' => 'MONTANA', 'abbr' => 'MT'},
|
159
|
+
{'full' => 'NEBRASKA', 'abbr' => 'NE'},
|
160
|
+
{'full' => 'NEVADA', 'abbr' => 'NV'},
|
161
|
+
{'full' => 'NEW HAMPSHIRE', 'abbr' => 'NH'},
|
162
|
+
{'full' => 'NEW JERSEY', 'abbr' => 'NJ'},
|
163
|
+
{'full' => 'NEW MEXICO', 'abbr' => 'NM'},
|
164
|
+
{'full' => 'NEW YORK', 'abbr' => 'NY'},
|
165
|
+
{'full' => 'NORTH CAROLINA', 'abbr' => 'NC'},
|
166
|
+
{'full' => 'NORTH DAKOTA', 'abbr' => 'ND'},
|
167
|
+
{'full' => 'NORTHERN MARIANA ISLANDS', 'abbr' => 'MP'},
|
168
|
+
{'full' => 'OHIO', 'abbr' => 'OH'},
|
169
|
+
{'full' => 'OKLAHOMA', 'abbr' => 'OK'},
|
170
|
+
{'full' => 'OREGON', 'abbr' => 'OR'},
|
171
|
+
{'full' => 'PALAU', 'abbr' => 'PW'},
|
172
|
+
{'full' => 'PENNSYLVANIA', 'abbr' => 'PA'},
|
173
|
+
{'full' => 'PUERTO RICO', 'abbr' => 'PR'},
|
174
|
+
{'full' => 'RHODE ISLAND', 'abbr' => 'RI'},
|
175
|
+
{'full' => 'SOUTH CAROLINA', 'abbr' => 'SC'},
|
176
|
+
{'full' => 'SOUTH DAKOTA', 'abbr' => 'SD'},
|
177
|
+
{'full' => 'TENNESSEE', 'abbr' => 'TN'},
|
178
|
+
{'full' => 'TEXAS', 'abbr' => 'TX'},
|
179
|
+
{'full' => 'UTAH', 'abbr' => 'UT'},
|
180
|
+
{'full' => 'VERMONT', 'abbr' => 'VT'},
|
181
|
+
{'full' => 'VIRGIN ISLANDS', 'abbr' => 'VI'},
|
182
|
+
{'full' => 'VIRGINIA', 'abbr' => 'VA'},
|
183
|
+
{'full' => 'WASHINGTON', 'abbr' => 'WA'},
|
184
|
+
{'full' => 'WEST VIRGINIA', 'abbr' => 'WV'},
|
185
|
+
{'full' => 'WISCONSIN', 'abbr' => 'WI'},
|
186
|
+
{'full' => 'WYOMING', 'abbr' => 'WY'}
|
187
|
+
]
|
188
|
+
|
189
|
+
end
|
data/lib/model_un.rb
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
module ModelUN
|
2
|
+
require "model_un/data"
|
3
|
+
require 'yaml'
|
4
|
+
|
5
|
+
class << self
|
6
|
+
|
7
|
+
def convert(string)
|
8
|
+
if string.length == 2
|
9
|
+
self.convert_state_abbr(string.upcase)
|
10
|
+
else
|
11
|
+
self.convert_state_name(string.upcase)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def convert_state_abbr(state_abbr)
|
16
|
+
self.convert_state_abbreviation(state_abbr)
|
17
|
+
end
|
18
|
+
|
19
|
+
def convert_state_abbreviation(state_abbr)
|
20
|
+
begin
|
21
|
+
return US_STATE_NAMES[US_STATE_ABBR.index(state_abbr)].downcase.gsub(/\b\w/){$&.upcase}
|
22
|
+
rescue Exception
|
23
|
+
return state_abbr
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def convert_state_name(state_name)
|
28
|
+
begin
|
29
|
+
return US_STATE_ABBR[US_STATE_NAMES.index(state_name)]
|
30
|
+
rescue Exception
|
31
|
+
return state_name.downcase.gsub(/\b\w/){$&.upcase}
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def export_states_list
|
36
|
+
{'US States' => US_STATES}.to_yaml.gsub(/\n/,'').gsub(/-/, '').strip
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
end
|
data/model_un.gemspec
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "model_un/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "model_un"
|
7
|
+
s.version = ModelUN::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = ["Uh Huh Yeah"]
|
10
|
+
s.email = ["david@uhhuhyeah.com"]
|
11
|
+
s.homepage = "https://github.com/uhhuhyeah/model_un"
|
12
|
+
s.summary = %q{Quick and easy country and US State abbreviations}
|
13
|
+
s.description = %q{Converts US State names and (most) country names to their normally accepted abbreviations and back.}
|
14
|
+
|
15
|
+
s.add_development_dependency "rspec"
|
16
|
+
s.rubyforge_project = "model_un"
|
17
|
+
|
18
|
+
s.files = `git ls-files`.split("\n")
|
19
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
20
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
21
|
+
s.require_paths = ["lib"]
|
22
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'model_un'
|
2
|
+
|
3
|
+
describe ModelUN do
|
4
|
+
|
5
|
+
it "should be able to read the data hash" do
|
6
|
+
ModelUN::US_STATE_NAMES.should_not == nil
|
7
|
+
ModelUN::US_STATE_ABBR.should_not == nil
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should return an abbreviation for a full state" do
|
11
|
+
state = 'California'
|
12
|
+
ModelUN.convert(state).should == 'CA'
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should return a full state for an abbreviation" do
|
16
|
+
abbr = 'CA'
|
17
|
+
ModelUN.convert(abbr).should == 'California'
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should return the input if no match on abbreviation" do
|
21
|
+
abbr = 'XX'
|
22
|
+
ModelUN.convert(abbr).should == 'XX'
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should return the input if no match on full name" do
|
26
|
+
state = 'Foobar'
|
27
|
+
ModelUN.convert(state).should == state
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
metadata
ADDED
@@ -0,0 +1,89 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: model_un
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 9
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 1
|
9
|
+
version: "0.1"
|
10
|
+
platform: ruby
|
11
|
+
authors:
|
12
|
+
- Uh Huh Yeah
|
13
|
+
autorequire:
|
14
|
+
bindir: bin
|
15
|
+
cert_chain: []
|
16
|
+
|
17
|
+
date: 2011-02-05 00:00:00 -08:00
|
18
|
+
default_executable:
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: rspec
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
hash: 3
|
29
|
+
segments:
|
30
|
+
- 0
|
31
|
+
version: "0"
|
32
|
+
type: :development
|
33
|
+
version_requirements: *id001
|
34
|
+
description: Converts US State names and (most) country names to their normally accepted abbreviations and back.
|
35
|
+
email:
|
36
|
+
- david@uhhuhyeah.com
|
37
|
+
executables: []
|
38
|
+
|
39
|
+
extensions: []
|
40
|
+
|
41
|
+
extra_rdoc_files: []
|
42
|
+
|
43
|
+
files:
|
44
|
+
- .gitignore
|
45
|
+
- Gemfile
|
46
|
+
- Gemfile.lock
|
47
|
+
- README.md
|
48
|
+
- Rakefile
|
49
|
+
- lib/model_un.rb
|
50
|
+
- lib/model_un/data.rb
|
51
|
+
- lib/model_un/version.rb
|
52
|
+
- model_un.gemspec
|
53
|
+
- spec/model_un_spec.rb
|
54
|
+
has_rdoc: true
|
55
|
+
homepage: https://github.com/uhhuhyeah/model_un
|
56
|
+
licenses: []
|
57
|
+
|
58
|
+
post_install_message:
|
59
|
+
rdoc_options: []
|
60
|
+
|
61
|
+
require_paths:
|
62
|
+
- lib
|
63
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
64
|
+
none: false
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
hash: 3
|
69
|
+
segments:
|
70
|
+
- 0
|
71
|
+
version: "0"
|
72
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ">="
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
hash: 3
|
78
|
+
segments:
|
79
|
+
- 0
|
80
|
+
version: "0"
|
81
|
+
requirements: []
|
82
|
+
|
83
|
+
rubyforge_project: model_un
|
84
|
+
rubygems_version: 1.3.7
|
85
|
+
signing_key:
|
86
|
+
specification_version: 3
|
87
|
+
summary: Quick and easy country and US State abbreviations
|
88
|
+
test_files:
|
89
|
+
- spec/model_un_spec.rb
|