carmen 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +4 -0
- data/MIT-LICENSE +21 -0
- data/README.rdoc +35 -0
- data/Rakefile +55 -0
- data/VERSION +1 -0
- data/carmen.gemspec +61 -0
- data/data/countries.yml +487 -0
- data/data/states/au.yml +17 -0
- data/data/states/br.yml +55 -0
- data/data/states/ca.yml +27 -0
- data/data/states/cu.yml +31 -0
- data/data/states/de.yml +33 -0
- data/data/states/dk.yml +11 -0
- data/data/states/it.yml +207 -0
- data/data/states/mx.yml +65 -0
- data/data/states/ua.yml +51 -0
- data/data/states/us.yml +124 -0
- data/lib/carmen.rb +105 -0
- data/lib/carmen/action_view_helpers.rb +68 -0
- data/rails/init.rb +2 -0
- data/test/carmen_test.rb +73 -0
- data/test/carmen_view_helper_test.rb +43 -0
- metadata +77 -0
data/data/states/ua.yml
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
---
|
2
|
+
- - Autonomous Republic of Crimea
|
3
|
+
- CR
|
4
|
+
- - Cherkashchyna
|
5
|
+
- CK
|
6
|
+
- - Chernihivshchyna
|
7
|
+
- CN
|
8
|
+
- - Chernivechchyna
|
9
|
+
- CV
|
10
|
+
- - Dnipropetrovshchyna
|
11
|
+
- DP
|
12
|
+
- - Donechchyna
|
13
|
+
- DN
|
14
|
+
- - Ivano-Frankivshchyna
|
15
|
+
- IF
|
16
|
+
- - Kharkivshchyna
|
17
|
+
- KH
|
18
|
+
- - Khersonshchyna
|
19
|
+
- KS
|
20
|
+
- - Khmel'nychchyna
|
21
|
+
- KM
|
22
|
+
- - Kyivshchyna
|
23
|
+
- KV
|
24
|
+
- - Kirovohradshchyna
|
25
|
+
- KR
|
26
|
+
- - Luhanshchyna
|
27
|
+
- LG
|
28
|
+
- - L'vivshchyna
|
29
|
+
- LV
|
30
|
+
- - Mykolaivshchyna
|
31
|
+
- MK
|
32
|
+
- - Odeshchyna
|
33
|
+
- OD
|
34
|
+
- - Poltavshchyna
|
35
|
+
- PL
|
36
|
+
- - Rivnenshchyna
|
37
|
+
- RV
|
38
|
+
- - Sumshchyna
|
39
|
+
- SM
|
40
|
+
- - Ternopil'shchyna
|
41
|
+
- TAS
|
42
|
+
- - Vinnychchyna
|
43
|
+
- VN
|
44
|
+
- - Volyn'
|
45
|
+
- VOLYN
|
46
|
+
- - Zakarpattia
|
47
|
+
- ZK
|
48
|
+
- - Zaporizhzhia
|
49
|
+
- ZP
|
50
|
+
- - Zhytomyrshchyna
|
51
|
+
- ZT
|
data/data/states/us.yml
ADDED
@@ -0,0 +1,124 @@
|
|
1
|
+
# from http://www.usps.com/ncsc/lookups/usps_abbreviations.html
|
2
|
+
---
|
3
|
+
- - Alabama
|
4
|
+
- AL
|
5
|
+
- - Alaska
|
6
|
+
- AK
|
7
|
+
- - Arizona
|
8
|
+
- AZ
|
9
|
+
- - Arkansas
|
10
|
+
- AR
|
11
|
+
- - California
|
12
|
+
- CA
|
13
|
+
- - Colorado
|
14
|
+
- CO
|
15
|
+
- - Connecticut
|
16
|
+
- CT
|
17
|
+
- - Delaware
|
18
|
+
- DE
|
19
|
+
- - District Of Columbia
|
20
|
+
- DC
|
21
|
+
- - Florida
|
22
|
+
- FL
|
23
|
+
- - Georgia
|
24
|
+
- GA
|
25
|
+
- - Hawaii
|
26
|
+
- HI
|
27
|
+
- - Idaho
|
28
|
+
- ID
|
29
|
+
- - Illinois
|
30
|
+
- IL
|
31
|
+
- - Indiana
|
32
|
+
- IN
|
33
|
+
- - Iowa
|
34
|
+
- IA
|
35
|
+
- - Kansas
|
36
|
+
- KS
|
37
|
+
- - Kentucky
|
38
|
+
- KY
|
39
|
+
- - Louisiana
|
40
|
+
- LA
|
41
|
+
- - Maine
|
42
|
+
- ME
|
43
|
+
- - Maryland
|
44
|
+
- MD
|
45
|
+
- - Massachusetts
|
46
|
+
- MA
|
47
|
+
- - Michigan
|
48
|
+
- MI
|
49
|
+
- - Minnesota
|
50
|
+
- MN
|
51
|
+
- - Mississippi
|
52
|
+
- MS
|
53
|
+
- - Missouri
|
54
|
+
- MO
|
55
|
+
- - Montana
|
56
|
+
- MT
|
57
|
+
- - Nebraska
|
58
|
+
- NE
|
59
|
+
- - Nevada
|
60
|
+
- NV
|
61
|
+
- - New Hampshire
|
62
|
+
- NH
|
63
|
+
- - New Jersey
|
64
|
+
- NJ
|
65
|
+
- - New Mexico
|
66
|
+
- NM
|
67
|
+
- - New York
|
68
|
+
- NY
|
69
|
+
- - North Carolina
|
70
|
+
- NC
|
71
|
+
- - North Dakota
|
72
|
+
- ND
|
73
|
+
- - Ohio
|
74
|
+
- OH
|
75
|
+
- - Oklahoma
|
76
|
+
- OK
|
77
|
+
- - Oregon
|
78
|
+
- OR
|
79
|
+
- - Pennsylvania
|
80
|
+
- PA
|
81
|
+
- - Rhode Island
|
82
|
+
- RI
|
83
|
+
- - South Carolina
|
84
|
+
- SC
|
85
|
+
- - South Dakota
|
86
|
+
- SD
|
87
|
+
- - Tennessee
|
88
|
+
- TN
|
89
|
+
- - Texas
|
90
|
+
- TX
|
91
|
+
- - Utah
|
92
|
+
- UT
|
93
|
+
- - Vermont
|
94
|
+
- VT
|
95
|
+
- - Virginia
|
96
|
+
- VA
|
97
|
+
- - Washington
|
98
|
+
- WA
|
99
|
+
- - West Virginia
|
100
|
+
- WV
|
101
|
+
- - Wisconsin
|
102
|
+
- WI
|
103
|
+
- - Wyoming
|
104
|
+
- WY
|
105
|
+
- - Federated States of Micronesia
|
106
|
+
- FM
|
107
|
+
- - Guam
|
108
|
+
- GU
|
109
|
+
- - Marshall Islands
|
110
|
+
- MH
|
111
|
+
- - Northern Mariana Islands
|
112
|
+
- MP
|
113
|
+
- - Palau
|
114
|
+
- PW
|
115
|
+
- - Puerto Rico
|
116
|
+
- PR
|
117
|
+
- - Virgin Islands
|
118
|
+
- VI
|
119
|
+
- - Armed Forces Americas (except Canada)
|
120
|
+
- AA
|
121
|
+
- - Armed Forces Europe, Armed Forces Canada, Armed Forces Africa, or Armed Forces Middle East
|
122
|
+
- AE
|
123
|
+
- - Armed Forces Pacific
|
124
|
+
- AP
|
data/lib/carmen.rb
ADDED
@@ -0,0 +1,105 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
begin
|
3
|
+
require 'ftools'
|
4
|
+
rescue LoadError
|
5
|
+
require 'fileutils' # ftools is now fileutils in Ruby 1.9
|
6
|
+
end
|
7
|
+
|
8
|
+
module Carmen
|
9
|
+
|
10
|
+
class << self
|
11
|
+
attr_accessor :default_country
|
12
|
+
end
|
13
|
+
|
14
|
+
self.default_country = 'US'
|
15
|
+
|
16
|
+
data_path = File.join(File.dirname(__FILE__), '../data')
|
17
|
+
|
18
|
+
COUNTRIES = YAML.load_file(File.join(data_path, 'countries.yml'))
|
19
|
+
|
20
|
+
STATES = Dir[data_path + '/states/*.yml'].map do |file_name|
|
21
|
+
[File::basename(file_name, '.yml').upcase, YAML.load_file(file_name)]
|
22
|
+
end
|
23
|
+
|
24
|
+
# Raised when attempting to retrieve states for an unsupported country
|
25
|
+
class StatesNotSupported < RuntimeError; end
|
26
|
+
|
27
|
+
# Raised when attempting to work with a country not in the data set
|
28
|
+
class NonexistentCountry < RuntimeError; end
|
29
|
+
|
30
|
+
# Returns the country name corresponding to the supplied country code
|
31
|
+
# Carmen::country_name('TV') => 'Tuvalu'
|
32
|
+
def self.country_name(country_code)
|
33
|
+
search_collection(COUNTRIES, country_code, 1, 0)
|
34
|
+
end
|
35
|
+
|
36
|
+
# Returns the country code corresponding to the supplied country name
|
37
|
+
# Carmen::country_code('Canada') => 'CA'
|
38
|
+
def self.country_code(country_name)
|
39
|
+
search_collection(COUNTRIES, country_name, 0, 1)
|
40
|
+
end
|
41
|
+
|
42
|
+
# Returns an array of all country codes
|
43
|
+
# Carmen::country_codes => ['AF', 'AX', 'AL', ... ]
|
44
|
+
def self.country_codes
|
45
|
+
COUNTRIES.map {|c| c[1] }
|
46
|
+
end
|
47
|
+
|
48
|
+
# Returns an array of all country codes
|
49
|
+
# Carmen::country_name => ['Afghanistan', 'Aland Islands', 'Albania', ... ]
|
50
|
+
def self.country_names
|
51
|
+
COUNTRIES.map {|c| c[0] }
|
52
|
+
end
|
53
|
+
|
54
|
+
# Returns the state name corresponding to the supplied state code within the specified country
|
55
|
+
# Carmen::state_code('New Hampshire') => 'NH'
|
56
|
+
def self.state_name(state_code, country_code = Carmen.default_country)
|
57
|
+
search_collection(self.states(country_code), state_code, 1, 0)
|
58
|
+
end
|
59
|
+
|
60
|
+
# Returns the state code corresponding to the supplied state name within the specified country
|
61
|
+
# Carmen::state_code('IL', 'US') => Illinois
|
62
|
+
def self.state_code(state_name, country_code = Carmen.default_country)
|
63
|
+
search_collection(self.states(country_code), state_name, 0, 1)
|
64
|
+
end
|
65
|
+
|
66
|
+
# Returns an array of state names within the specified country code
|
67
|
+
# Carmen::state_names('US') => ['Alabama', 'Arkansas', ... ]
|
68
|
+
def self.state_names(country_code = Carmen.default_country)
|
69
|
+
self.states(country_code).map{|name, code| name}
|
70
|
+
end
|
71
|
+
|
72
|
+
# Returns an array of state codes within the specified country code
|
73
|
+
# Carmen::state_codes('US') => ['AL', 'AR', ... ]
|
74
|
+
def self.state_codes(country_code = Carmen.default_country)
|
75
|
+
self.states(country_code).map{|name, code| code}
|
76
|
+
end
|
77
|
+
|
78
|
+
# Returns an array structure of state names and codes within the specified country code
|
79
|
+
# Carmen::states('US') => [['Alabama', 'AL'], ['Arkansas', 'AR'], ... ]
|
80
|
+
def self.states(country_code = Carmen.default_country)
|
81
|
+
raise NonexistentCountry unless country_codes.include?(country_code)
|
82
|
+
raise StatesNotSupported unless states?(country_code)
|
83
|
+
search_collection(STATES, country_code, 0, 1)
|
84
|
+
end
|
85
|
+
|
86
|
+
# Returns whether states are supported for the given country code
|
87
|
+
# Carmen::states?('US') => true
|
88
|
+
# Carmen::states?('ZZ') => false
|
89
|
+
def self.states?(country_code)
|
90
|
+
STATES.any? do |array| k,v = array
|
91
|
+
k == country_code
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
protected
|
96
|
+
|
97
|
+
def self.search_collection(collection, value, index_to_match, index_to_retrieve)
|
98
|
+
return nil if collection.nil?
|
99
|
+
collection.each do |m|
|
100
|
+
return m[index_to_retrieve] if m[index_to_match] == value
|
101
|
+
end
|
102
|
+
nil
|
103
|
+
end
|
104
|
+
|
105
|
+
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
module ActionView
|
2
|
+
module Helpers
|
3
|
+
module FormOptionsHelper
|
4
|
+
|
5
|
+
# Return select and option tags for the given object and method, using state_options_for_select to generate the list of option tags.
|
6
|
+
def state_select(object, method, country = Carmen.default_country, options={}, html_options={})
|
7
|
+
InstanceTag.new(object, method, self, options.delete(:object)).to_state_select_tag(country, options, html_options)
|
8
|
+
end
|
9
|
+
|
10
|
+
# Return select and option tags for the given object and method, using country_options_for_select to generate the list of option tags.
|
11
|
+
def country_select(object, method, priority_countries = nil, options = {}, html_options = {})
|
12
|
+
InstanceTag.new(object, method, self, options.delete(:object)).to_country_select_tag(priority_countries, options, html_options)
|
13
|
+
end
|
14
|
+
|
15
|
+
# Returns a string of option tags containing the state names and codes for the specified country code, or nil
|
16
|
+
# if the states are not know for that country. Supply a state code as +selected+ to have it marked as the selected option tag.
|
17
|
+
def state_options_for_select(selected = nil, country = Carmen.default_country)
|
18
|
+
options_for_select(Carmen.states(country), selected)
|
19
|
+
end
|
20
|
+
|
21
|
+
# Returns a string of option tags for pretty much any country in the world. Supply a country name as +selected+ to
|
22
|
+
# have it marked as the selected option tag. You can also supply a list of country codes as additional parameters, so
|
23
|
+
# that they will be listed above the rest of the (long) list.
|
24
|
+
def country_options_for_select(selected = nil, *priority_country_codes)
|
25
|
+
country_options = ""
|
26
|
+
|
27
|
+
unless priority_country_codes.empty?
|
28
|
+
priority_countries = Carmen::COUNTRIES.select do |pair| name, code = pair
|
29
|
+
priority_country_codes.include?(code)
|
30
|
+
end
|
31
|
+
unless priority_countries.empty?
|
32
|
+
country_options += options_for_select(priority_countries, selected)
|
33
|
+
country_options += "\n<option value=\"\" disabled=\"disabled\">-------------</option>\n"
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
return country_options + options_for_select(Carmen::COUNTRIES, priority_country_codes.include?(selected) ? nil : selected)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
class InstanceTag
|
42
|
+
def to_country_select_tag(priority_countries, options, html_options)
|
43
|
+
html_options = html_options.stringify_keys
|
44
|
+
add_default_name_and_id(html_options)
|
45
|
+
value = value(object)
|
46
|
+
opts = add_options(country_options_for_select(value, *priority_countries), options, value)
|
47
|
+
content_tag("select", opts, html_options)
|
48
|
+
end
|
49
|
+
|
50
|
+
def to_state_select_tag(country, options, html_options)
|
51
|
+
html_options = html_options.stringify_keys
|
52
|
+
add_default_name_and_id(html_options)
|
53
|
+
value = value(object)
|
54
|
+
opts = add_options(state_options_for_select(value, country), options, value)
|
55
|
+
content_tag("select", opts, html_options)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
class FormBuilder
|
60
|
+
def country_select(method, priority_countries = nil, options = {}, html_options = {})
|
61
|
+
@template.country_select(@object_name, method, priority_countries, options.merge(:object => @object), html_options)
|
62
|
+
end
|
63
|
+
def state_select(method, country_code = Carmen.default_country, options = {}, html_options = {})
|
64
|
+
@template.state_select(@object_name, method, country_code, options.merge(:object => @object), html_options)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
data/rails/init.rb
ADDED
data/test/carmen_test.rb
ADDED
@@ -0,0 +1,73 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require File.join(File.dirname(__FILE__), '../lib/carmen')
|
3
|
+
|
4
|
+
class TestCarmen < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def test_country_name
|
7
|
+
assert_equal 'United States', Carmen.country_name('US')
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_country_code
|
11
|
+
assert_equal 'CA', Carmen.country_code('Canada')
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_country_codes
|
15
|
+
assert_equal 'AF', Carmen.country_codes.first
|
16
|
+
assert_equal 243, Carmen.country_codes.length
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_country_names
|
20
|
+
assert_equal 'Afghanistan', Carmen.country_names.first
|
21
|
+
assert_equal 243, Carmen.country_names.length
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_state_name
|
25
|
+
assert_equal 'IL', Carmen.state_code('Illinois')
|
26
|
+
assert_equal 'MB', Carmen.state_code('Manitoba', 'CA')
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_state_code
|
30
|
+
assert_equal 'Arizona', Carmen.state_name('AZ')
|
31
|
+
assert_equal 'Prince Edward Island', Carmen.state_name('PE', 'CA')
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_states
|
35
|
+
assert_equal 61, Carmen.states.length
|
36
|
+
assert_equal ['Alabama', 'AL'], Carmen.states.first
|
37
|
+
assert_equal 13, Carmen.states('CA').length
|
38
|
+
assert_equal ['Alberta', 'AB'], Carmen.states('CA').first
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_state_names
|
42
|
+
assert_equal 61, Carmen::state_names.length
|
43
|
+
assert_equal 'Alabama', Carmen::state_names.first
|
44
|
+
assert_equal 13, Carmen.state_names('CA').length
|
45
|
+
assert_equal 'Alberta', Carmen.state_names('CA').first
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_state_codes
|
49
|
+
assert_equal 61, Carmen::state_codes.length
|
50
|
+
assert_equal 'AL', Carmen::state_codes.first
|
51
|
+
assert_equal 13, Carmen.state_codes('CA').length
|
52
|
+
assert_equal 'AB', Carmen.state_codes('CA').first
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_supported_states
|
56
|
+
assert Carmen::states?('US')
|
57
|
+
assert_equal Carmen::states?('ZZ'), false
|
58
|
+
end
|
59
|
+
|
60
|
+
def test_invalid_country_exception
|
61
|
+
assert_raises Carmen::NonexistentCountry do
|
62
|
+
Carmen::state_codes('ZZ')
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def test_unsupported_states_exception
|
67
|
+
assert_raises Carmen::StatesNotSupported do
|
68
|
+
Carmen::state_codes('ID')
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
|
73
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'active_support'
|
3
|
+
require 'action_view'
|
4
|
+
require 'action_controller'
|
5
|
+
require 'action_view/test_case'
|
6
|
+
require 'mocha'
|
7
|
+
require File.join(File.dirname(__FILE__), '../lib/carmen')
|
8
|
+
require File.join(File.dirname(__FILE__), '../lib/carmen/action_view_helpers')
|
9
|
+
|
10
|
+
class CarmenViewHelperTest < ActionView::TestCase
|
11
|
+
|
12
|
+
include ActionView::Helpers::FormOptionsHelper
|
13
|
+
|
14
|
+
def setup
|
15
|
+
@address = stub(:state => 'IL', :country => 'US', :to_s => 'address')
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_state_select_for_us
|
19
|
+
@address.stubs(:state => 'nil')
|
20
|
+
assert_equal US_STATE_SELECT_HTML.chomp, state_select(@address, :state, 'US')
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_state_select_for_canada
|
24
|
+
@address.stubs(:state => 'nil')
|
25
|
+
assert_equal CANADA_STATE_SELECT_HTML.chomp, state_select(@address, :state, 'CA')
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_country_options_for_select_with_priorities
|
29
|
+
assert_equal COUNTRY_SELECT_OPTIONS_HTML.chomp, country_options_for_select('US', 'US')
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_selected_option
|
33
|
+
@address.stubs(:state => 'ON')
|
34
|
+
assert_match /<option value="ON" selected="selected">Ontario<\/option>/, state_select(@address, :state, 'CA')
|
35
|
+
end
|
36
|
+
|
37
|
+
COUNTRY_SELECT_OPTIONS_HTML = "<option value=\"US\" selected=\"selected\">United States</option>\n<option value=\"\" disabled=\"disabled\">-------------</option>\n<option value=\"AF\">Afghanistan</option>\n<option value=\"AX\">Aland Islands</option>\n<option value=\"AL\">Albania</option>\n<option value=\"DZ\">Algeria</option>\n<option value=\"AS\">American Samoa</option>\n<option value=\"AD\">Andorra</option>\n<option value=\"AO\">Angola</option>\n<option value=\"AI\">Anguilla</option>\n<option value=\"AQ\">Antarctica</option>\n<option value=\"AG\">Antigua and Barbuda</option>\n<option value=\"AR\">Argentina</option>\n<option value=\"AM\">Armenia</option>\n<option value=\"AW\">Aruba</option>\n<option value=\"AU\">Australia</option>\n<option value=\"AT\">Austria</option>\n<option value=\"AZ\">Azerbaijan</option>\n<option value=\"BS\">Bahamas</option>\n<option value=\"BH\">Bahrain</option>\n<option value=\"BD\">Bangladesh</option>\n<option value=\"BB\">Barbados</option>\n<option value=\"BY\">Belarus</option>\n<option value=\"BE\">Belgium</option>\n<option value=\"BZ\">Belize</option>\n<option value=\"BJ\">Benin</option>\n<option value=\"BM\">Bermuda</option>\n<option value=\"BT\">Bhutan</option>\n<option value=\"BO\">Bolivia</option>\n<option value=\"BA\">Bosnia and Herzegovina</option>\n<option value=\"BW\">Botswana</option>\n<option value=\"BV\">Bouvet Island</option>\n<option value=\"BR\">Brazil</option>\n<option value=\"IO\">British Indian Ocean Territory</option>\n<option value=\"BN\">Brunei Darussalam</option>\n<option value=\"BG\">Bulgaria</option>\n<option value=\"BF\">Burkina Faso</option>\n<option value=\"BI\">Burundi</option>\n<option value=\"KH\">Cambodia</option>\n<option value=\"CM\">Cameroon</option>\n<option value=\"CA\">Canada</option>\n<option value=\"CV\">Cape Verde</option>\n<option value=\"KY\">Cayman Islands</option>\n<option value=\"CF\">Central African Republic</option>\n<option value=\"TD\">Chad</option>\n<option value=\"CL\">Chile</option>\n<option value=\"CN\">China</option>\n<option value=\"CX\">Christmas Island</option>\n<option value=\"CC\">Cocos (Keeling) Islands</option>\n<option value=\"CO\">Colombia</option>\n<option value=\"KM\">Comoros</option>\n<option value=\"CG\">Congo</option>\n<option value=\"CD\">Congo, the Democratic Republic of the</option>\n<option value=\"CK\">Cook Islands</option>\n<option value=\"CR\">Costa Rica</option>\n<option value=\"CI\">Cote D'ivoire</option>\n<option value=\"HR\">Croatia</option>\n<option value=\"CU\">Cuba</option>\n<option value=\"CY\">Cyprus</option>\n<option value=\"CZ\">Czech Republic</option>\n<option value=\"DK\">Denmark</option>\n<option value=\"DJ\">Djibouti</option>\n<option value=\"DM\">Dominica</option>\n<option value=\"DO\">Dominican Republic</option>\n<option value=\"EC\">Ecuador</option>\n<option value=\"EG\">Egypt</option>\n<option value=\"SV\">El Salvador</option>\n<option value=\"GQ\">Equatorial Guinea</option>\n<option value=\"ER\">Eritrea</option>\n<option value=\"EE\">Estonia</option>\n<option value=\"ET\">Ethiopia</option>\n<option value=\"FK\">Falkland Islands (Malvinas)</option>\n<option value=\"FO\">Faroe Islands</option>\n<option value=\"FJ\">Fiji</option>\n<option value=\"FI\">Finland</option>\n<option value=\"FR\">France</option>\n<option value=\"GF\">French Guiana</option>\n<option value=\"PF\">French Polynesia</option>\n<option value=\"TF\">French Southern Territories</option>\n<option value=\"GA\">Gabon</option>\n<option value=\"GM\">Gambia</option>\n<option value=\"GE\">Georgia</option>\n<option value=\"DE\">Germany</option>\n<option value=\"GH\">Ghana</option>\n<option value=\"GI\">Gibraltar</option>\n<option value=\"GR\">Greece</option>\n<option value=\"GL\">Greenland</option>\n<option value=\"GD\">Grenada</option>\n<option value=\"GP\">Guadeloupe</option>\n<option value=\"GU\">Guam</option>\n<option value=\"GT\">Guatemala</option>\n<option value=\"GG\">Guernsey</option>\n<option value=\"GN\">Guinea</option>\n<option value=\"GW\">Guinea-Bissau</option>\n<option value=\"GY\">Guyana</option>\n<option value=\"HT\">Haiti</option>\n<option value=\"HM\">Heard Island and Mcdonald Islands</option>\n<option value=\"VA\">Holy See (Vatican City State)</option>\n<option value=\"HN\">Honduras</option>\n<option value=\"HK\">Hong Kong</option>\n<option value=\"HU\">Hungary</option>\n<option value=\"IS\">Iceland</option>\n<option value=\"IN\">India</option>\n<option value=\"ID\">Indonesia</option>\n<option value=\"IR\">Iran, Islamic Republic of</option>\n<option value=\"IQ\">Iraq</option>\n<option value=\"IE\">Ireland</option>\n<option value=\"IM\">Isle of Man</option>\n<option value=\"IL\">Israel</option>\n<option value=\"IT\">Italy</option>\n<option value=\"JM\">Jamaica</option>\n<option value=\"JP\">Japan</option>\n<option value=\"JE\">Jersey</option>\n<option value=\"JO\">Jordan</option>\n<option value=\"KZ\">Kazakhstan</option>\n<option value=\"KE\">Kenya</option>\n<option value=\"KI\">Kiribati</option>\n<option value=\"KP\">Korea, Democratic People's Republic of</option>\n<option value=\"KR\">Korea, Republic of</option>\n<option value=\"KW\">Kuwait</option>\n<option value=\"KG\">Kyrgyzstan</option>\n<option value=\"LA\">Lao People's Democratic Republic</option>\n<option value=\"LV\">Latvia</option>\n<option value=\"LB\">Lebanon</option>\n<option value=\"LS\">Lesotho</option>\n<option value=\"LR\">Liberia</option>\n<option value=\"LY\">Libyan Arab Jamahiriya</option>\n<option value=\"LI\">Liechtenstein</option>\n<option value=\"LT\">Lithuania</option>\n<option value=\"LU\">Luxembourg</option>\n<option value=\"MO\">Macao</option>\n<option value=\"MK\">Macedonia, the Former Yugoslav Republic of</option>\n<option value=\"MG\">Madagascar</option>\n<option value=\"MW\">Malawi</option>\n<option value=\"MY\">Malaysia</option>\n<option value=\"MV\">Maldives</option>\n<option value=\"ML\">Mali</option>\n<option value=\"MT\">Malta</option>\n<option value=\"MH\">Marshall Islands</option>\n<option value=\"MQ\">Martinique</option>\n<option value=\"MR\">Mauritania</option>\n<option value=\"MU\">Mauritius</option>\n<option value=\"YT\">Mayotte</option>\n<option value=\"MX\">Mexico</option>\n<option value=\"FM\">Micronesia, Federated States of</option>\n<option value=\"MD\">Moldova, Republic of</option>\n<option value=\"MC\">Monaco</option>\n<option value=\"MN\">Mongolia</option>\n<option value=\"MS\">Montserrat</option>\n<option value=\"MA\">Morocco</option>\n<option value=\"MZ\">Mozambique</option>\n<option value=\"MM\">Myanmar</option>\n<option value=\"NA\">Namibia</option>\n<option value=\"NR\">Nauru</option>\n<option value=\"NP\">Nepal</option>\n<option value=\"NL\">Netherlands</option>\n<option value=\"AN\">Netherlands Antilles</option>\n<option value=\"NC\">New Caledonia</option>\n<option value=\"NZ\">New Zealand</option>\n<option value=\"NI\">Nicaragua</option>\n<option value=\"NE\">Niger</option>\n<option value=\"NG\">Nigeria</option>\n<option value=\"NU\">Niue</option>\n<option value=\"NF\">Norfolk Island</option>\n<option value=\"MP\">Northern Mariana Islands</option>\n<option value=\"NO\">Norway</option>\n<option value=\"OM\">Oman</option>\n<option value=\"PK\">Pakistan</option>\n<option value=\"PW\">Palau</option>\n<option value=\"PS\">Palestinian Territory, Occupied</option>\n<option value=\"PA\">Panama</option>\n<option value=\"PG\">Papua New Guinea</option>\n<option value=\"PY\">Paraguay</option>\n<option value=\"PE\">Peru</option>\n<option value=\"PH\">Philippines</option>\n<option value=\"PN\">Pitcairn</option>\n<option value=\"PL\">Poland</option>\n<option value=\"PT\">Portugal</option>\n<option value=\"PR\">Puerto Rico</option>\n<option value=\"QA\">Qatar</option>\n<option value=\"RE\">Reunion</option>\n<option value=\"RO\">Romania</option>\n<option value=\"RU\">Russian Federation</option>\n<option value=\"RW\">Rwanda</option>\n<option value=\"SH\">Saint Helena</option>\n<option value=\"KN\">Saint Kitts and Nevis</option>\n<option value=\"LC\">Saint Lucia</option>\n<option value=\"PM\">Saint Pierre and Miquelon</option>\n<option value=\"VC\">Saint Vincent and the Grenadines</option>\n<option value=\"WS\">Samoa</option>\n<option value=\"SM\">San Marino</option>\n<option value=\"ST\">Sao Tome and Principe</option>\n<option value=\"SA\">Saudi Arabia</option>\n<option value=\"SN\">Senegal</option>\n<option value=\"CS\">Serbia and Montenegro</option>\n<option value=\"SC\">Seychelles</option>\n<option value=\"SL\">Sierra Leone</option>\n<option value=\"SG\">Singapore</option>\n<option value=\"SK\">Slovakia</option>\n<option value=\"SI\">Slovenia</option>\n<option value=\"SB\">Solomon Islands</option>\n<option value=\"SO\">Somalia</option>\n<option value=\"ZA\">South Africa</option>\n<option value=\"GS\">South Georgia and the South Sandwich Islands</option>\n<option value=\"ES\">Spain</option>\n<option value=\"LK\">Sri Lanka</option>\n<option value=\"SD\">Sudan</option>\n<option value=\"SR\">Suriname</option>\n<option value=\"SJ\">Svalbard and Jan Mayen</option>\n<option value=\"SZ\">Swaziland</option>\n<option value=\"SE\">Sweden</option>\n<option value=\"CH\">Switzerland</option>\n<option value=\"SY\">Syrian Arab Republic</option>\n<option value=\"TW\">Taiwan, Province of China</option>\n<option value=\"TJ\">Tajikistan</option>\n<option value=\"TZ\">Tanzania, United Republic of</option>\n<option value=\"TH\">Thailand</option>\n<option value=\"TL\">Timor-Leste</option>\n<option value=\"TG\">Togo</option>\n<option value=\"TK\">Tokelau</option>\n<option value=\"TO\">Tonga</option>\n<option value=\"TT\">Trinidad and Tobago</option>\n<option value=\"TN\">Tunisia</option>\n<option value=\"TR\">Turkey</option>\n<option value=\"TM\">Turkmenistan</option>\n<option value=\"TC\">Turks and Caicos Islands</option>\n<option value=\"TV\">Tuvalu</option>\n<option value=\"UG\">Uganda</option>\n<option value=\"UA\">Ukraine</option>\n<option value=\"AE\">United Arab Emirates</option>\n<option value=\"GB\">United Kingdom</option>\n<option value=\"US\">United States</option>\n<option value=\"UM\">United States Minor Outlying Islands</option>\n<option value=\"UY\">Uruguay</option>\n<option value=\"UZ\">Uzbekistan</option>\n<option value=\"VU\">Vanuatu</option>\n<option value=\"VE\">Venezuela</option>\n<option value=\"VN\">Viet Nam</option>\n<option value=\"VG\">Virgin Islands, British</option>\n<option value=\"VI\">Virgin Islands, U.S.</option>\n<option value=\"WF\">Wallis and Futuna</option>\n<option value=\"EH\">Western Sahara</option>\n<option value=\"YE\">Yemen</option>\n<option value=\"ZM\">Zambia</option>\n<option value=\"ZW\">Zimbabwe</option>"
|
38
|
+
|
39
|
+
US_STATE_SELECT_HTML = "<select id=\"address_state\" name=\"address[state]\"><option value=\"AL\">Alabama</option>\n<option value=\"AK\">Alaska</option>\n<option value=\"AZ\">Arizona</option>\n<option value=\"AR\">Arkansas</option>\n<option value=\"CA\">California</option>\n<option value=\"CO\">Colorado</option>\n<option value=\"CT\">Connecticut</option>\n<option value=\"DE\">Delaware</option>\n<option value=\"DC\">District Of Columbia</option>\n<option value=\"FL\">Florida</option>\n<option value=\"GA\">Georgia</option>\n<option value=\"HI\">Hawaii</option>\n<option value=\"ID\">Idaho</option>\n<option value=\"IL\">Illinois</option>\n<option value=\"IN\">Indiana</option>\n<option value=\"IA\">Iowa</option>\n<option value=\"KS\">Kansas</option>\n<option value=\"KY\">Kentucky</option>\n<option value=\"LA\">Louisiana</option>\n<option value=\"ME\">Maine</option>\n<option value=\"MD\">Maryland</option>\n<option value=\"MA\">Massachusetts</option>\n<option value=\"MI\">Michigan</option>\n<option value=\"MN\">Minnesota</option>\n<option value=\"MS\">Mississippi</option>\n<option value=\"MO\">Missouri</option>\n<option value=\"MT\">Montana</option>\n<option value=\"NE\">Nebraska</option>\n<option value=\"NV\">Nevada</option>\n<option value=\"NH\">New Hampshire</option>\n<option value=\"NJ\">New Jersey</option>\n<option value=\"NM\">New Mexico</option>\n<option value=\"NY\">New York</option>\n<option value=\"NC\">North Carolina</option>\n<option value=\"ND\">North Dakota</option>\n<option value=\"OH\">Ohio</option>\n<option value=\"OK\">Oklahoma</option>\n<option value=\"OR\">Oregon</option>\n<option value=\"PA\">Pennsylvania</option>\n<option value=\"RI\">Rhode Island</option>\n<option value=\"SC\">South Carolina</option>\n<option value=\"SD\">South Dakota</option>\n<option value=\"TN\">Tennessee</option>\n<option value=\"TX\">Texas</option>\n<option value=\"UT\">Utah</option>\n<option value=\"VT\">Vermont</option>\n<option value=\"VA\">Virginia</option>\n<option value=\"WA\">Washington</option>\n<option value=\"WV\">West Virginia</option>\n<option value=\"WI\">Wisconsin</option>\n<option value=\"WY\">Wyoming</option>\n<option value=\"FM\">Federated States of Micronesia</option>\n<option value=\"GU\">Guam</option>\n<option value=\"MH\">Marshall Islands</option>\n<option value=\"MP\">Northern Mariana Islands</option>\n<option value=\"PW\">Palau</option>\n<option value=\"PR\">Puerto Rico</option>\n<option value=\"VI\">Virgin Islands</option>\n<option value=\"AA\">Armed Forces Americas (except Canada)</option>\n<option value=\"AE\">Armed Forces Europe, Armed Forces Canada, Armed Forces Africa, or Armed Forces Middle East</option>\n<option value=\"AP\">Armed Forces Pacific</option></select>"
|
40
|
+
|
41
|
+
CANADA_STATE_SELECT_HTML = "<select id=\"address_state\" name=\"address[state]\"><option value=\"AB\">Alberta</option>\n<option value=\"BC\">British Columbia</option>\n<option value=\"MB\">Manitoba</option>\n<option value=\"NB\">New Brunswick</option>\n<option value=\"NL\">Newfoundland and Labrador</option>\n<option value=\"NT\">Northwest Territories</option>\n<option value=\"NS\">Nova Scotia</option>\n<option value=\"NU\">Nunavut</option>\n<option value=\"ON\">Ontario</option>\n<option value=\"PE\">Prince Edward Island</option>\n<option value=\"QC\">Quebec</option>\n<option value=\"SK\">Saskatchewan</option>\n<option value=\"YT\">Yukon</option></select>"
|
42
|
+
|
43
|
+
end
|