milkfarm-onix 0.7.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (100) hide show
  1. data/CHANGELOG +136 -0
  2. data/README.markdown +40 -0
  3. data/TODO +14 -0
  4. data/dtd/2.1r3/iso-amsa.ent +173 -0
  5. data/dtd/2.1r3/iso-amsb.ent +146 -0
  6. data/dtd/2.1r3/iso-amsc.ent +49 -0
  7. data/dtd/2.1r3/iso-amsn.ent +117 -0
  8. data/dtd/2.1r3/iso-amso.ent +77 -0
  9. data/dtd/2.1r3/iso-amsr.ent +205 -0
  10. data/dtd/2.1r3/iso-box.ent +67 -0
  11. data/dtd/2.1r3/iso-cyr1.ent +94 -0
  12. data/dtd/2.1r3/iso-cyr2.ent +53 -0
  13. data/dtd/2.1r3/iso-dia.ent +41 -0
  14. data/dtd/2.1r3/iso-grk3.ent +70 -0
  15. data/dtd/2.1r3/iso-lat1.ent +89 -0
  16. data/dtd/2.1r3/iso-lat2.ent +148 -0
  17. data/dtd/2.1r3/iso-mfrk.ent +79 -0
  18. data/dtd/2.1r3/iso-mopf.ent +53 -0
  19. data/dtd/2.1r3/iso-mscr.ent +79 -0
  20. data/dtd/2.1r3/iso-num.ent +103 -0
  21. data/dtd/2.1r3/iso-num.old.ent +103 -0
  22. data/dtd/2.1r3/iso-pub.ent +110 -0
  23. data/dtd/2.1r3/iso-tech.ent +183 -0
  24. data/dtd/2.1r3/onix-international.dtd +1012 -0
  25. data/dtd/2.1r3/onix-xhtml.elt +672 -0
  26. data/dtd/2.1r3/reference.elt +4758 -0
  27. data/dtd/2.1r3/xhtml-special.ent +79 -0
  28. data/dtd/2.1r3/xhtml-symbol.ent +242 -0
  29. data/lib/onix/addressee_identifier.rb +12 -0
  30. data/lib/onix/apa_product.rb +731 -0
  31. data/lib/onix/audience_range.rb +26 -0
  32. data/lib/onix/common.rb +26 -0
  33. data/lib/onix/contributor.rb +27 -0
  34. data/lib/onix/header.rb +46 -0
  35. data/lib/onix/imprint.rb +15 -0
  36. data/lib/onix/language.rb +14 -0
  37. data/lib/onix/lists/audience_code.rb +17 -0
  38. data/lib/onix/lists/country_code.rb +257 -0
  39. data/lib/onix/lists/language_code.rb +498 -0
  40. data/lib/onix/lists/language_role.rb +18 -0
  41. data/lib/onix/lists/notification_type.rb +19 -0
  42. data/lib/onix/lists/product_availability.rb +32 -0
  43. data/lib/onix/lists/product_form.rb +99 -0
  44. data/lib/onix/lists/product_form_detail.rb +157 -0
  45. data/lib/onix/market_representation.rb +19 -0
  46. data/lib/onix/measure.rb +14 -0
  47. data/lib/onix/media_file.rb +16 -0
  48. data/lib/onix/normaliser.rb +187 -0
  49. data/lib/onix/other_text.rb +17 -0
  50. data/lib/onix/price.rb +21 -0
  51. data/lib/onix/product.rb +73 -0
  52. data/lib/onix/product_identifier.rb +13 -0
  53. data/lib/onix/publisher.rb +16 -0
  54. data/lib/onix/reader.rb +187 -0
  55. data/lib/onix/sales_restriction.rb +12 -0
  56. data/lib/onix/sender_identifier.rb +14 -0
  57. data/lib/onix/series.rb +57 -0
  58. data/lib/onix/series_identifier.rb +13 -0
  59. data/lib/onix/simple_product.rb +47 -0
  60. data/lib/onix/sl_product.rb +131 -0
  61. data/lib/onix/stock.rb +15 -0
  62. data/lib/onix/subject.rb +16 -0
  63. data/lib/onix/supply_detail.rb +32 -0
  64. data/lib/onix/title.rb +17 -0
  65. data/lib/onix/website.rb +14 -0
  66. data/lib/onix/writer.rb +86 -0
  67. data/lib/onix.rb +114 -0
  68. data/spec/apa_product_spec.rb +59 -0
  69. data/spec/audience_range_spec.rb +46 -0
  70. data/spec/contributor_spec.rb +42 -0
  71. data/spec/header_spec.rb +123 -0
  72. data/spec/imprint_spec.rb +39 -0
  73. data/spec/language_spec.rb +42 -0
  74. data/spec/market_representation_spec.rb +41 -0
  75. data/spec/measure_spec.rb +43 -0
  76. data/spec/media_file_spec.rb +42 -0
  77. data/spec/normaliser_spec.rb +125 -0
  78. data/spec/other_text_spec.rb +40 -0
  79. data/spec/price_spec.rb +40 -0
  80. data/spec/product_identifier_spec.rb +40 -0
  81. data/spec/product_spec.rb +96 -0
  82. data/spec/publisher_spec.rb +38 -0
  83. data/spec/reader_spec.rb +131 -0
  84. data/spec/sales_restriction_spec.rb +35 -0
  85. data/spec/sender_identifier.rb +40 -0
  86. data/spec/series_identifier_spec.rb +38 -0
  87. data/spec/series_spec.rb +34 -0
  88. data/spec/sl_product_spec.rb +48 -0
  89. data/spec/stock_spec.rb +44 -0
  90. data/spec/subject_spec.rb +40 -0
  91. data/spec/supply_detail_spec.rb +53 -0
  92. data/spec/title_spec.rb +43 -0
  93. data/spec/website_spec.rb +41 -0
  94. data/spec/writer_spec.rb +81 -0
  95. data/support/entities.txt +1499 -0
  96. data/support/extract.rb +25 -0
  97. data/support/switch-onix-2.1-short-to-reference.xsl +23 -0
  98. data/support/switch-onix-tagnames-1.1.xsl +25 -0
  99. data/support/switch-onix-tagnames-2.0.xsl +37 -0
  100. metadata +209 -0
@@ -0,0 +1,26 @@
1
+ # coding: utf-8
2
+
3
+ module ONIX
4
+ class AudienceRange
5
+ include ROXML
6
+ include ONIX::Common
7
+
8
+ xml_name "AudienceRange"
9
+
10
+ xml_accessor :audience_range_qualifier, :from => "AudienceRangeQualifier", :as => Fixnum, :to_xml => ONIX::Formatters.two_digit
11
+ xml_accessor :audience_range_precisions, :from => "AudienceRangePrecision", :as => [Fixnum], :to_xml => [ONIX::Formatters.two_digit] # TODO: two_digit isn't working on the array items
12
+ xml_accessor :audience_range_values, :from => "AudienceRangeValue", :as => [Integer]
13
+
14
+ # TODO: element AudienceRange: validity error :
15
+ # Element AudienceRange content does not follow the DTD, expecting
16
+ # (AudienceRangeQualifier , AudienceRangePrecision , AudienceRangeValue ,
17
+ # (AudienceRangePrecision , AudienceRangeValue)?),
18
+ # got
19
+ # (AudienceRangeQualifier AudienceRangePrecision AudienceRangePrecision
20
+ # AudienceRangeValue AudienceRangeValue )
21
+ def initialize
22
+ self.audience_range_precisions = []
23
+ self.audience_range_values = []
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,26 @@
1
+ module ONIX
2
+ # methods we want to be available on all our ROXML classes
3
+ module Common
4
+
5
+ # After an input string has been marshalled into an object,
6
+ # ROXML will automatically call this method.
7
+ #
8
+ # LibXML (and therefore ROXML) appears to forget the encoding
9
+ # of the input data, a damn shame considering the Ruby 1.9 encoding
10
+ # support can be vey useful.
11
+ #
12
+ # Since we only ever pass our ROXML objects strings we know are utf-8
13
+ # encoded, it should be safe enough to force every string attribute
14
+ # back once the marshalling is done.
15
+ #
16
+ def after_parse
17
+ self.class.roxml_attrs.each do |attr|
18
+ var = instance_variable_get("@#{attr.variable_name}")
19
+ if var && var.respond_to?(:force_encoding)
20
+ var.force_encoding("utf-8")
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
26
+
@@ -0,0 +1,27 @@
1
+ # coding: utf-8
2
+
3
+ module ONIX
4
+ class Contributor
5
+ include ROXML
6
+ include ONIX::Common
7
+
8
+ xml_name "Contributor"
9
+
10
+ xml_accessor :sequence_number, :from => "SequenceNumber", :as => Fixnum
11
+ xml_accessor :contributor_role, :from => "ContributorRole"
12
+ xml_accessor :language_code, :from => "LanguageCode"
13
+ xml_accessor :sequence_number_within_role, :from => "SequenceNumberWithinRole", :as => Fixnum
14
+ xml_accessor :person_name, :from => "PersonName"
15
+ xml_accessor :person_name_inverted, :from => "PersonNameInverted"
16
+ xml_accessor :titles_before_names, :from => "TitlesBeforeNames"
17
+ xml_accessor :names_before_key, :from => "NamesBeforeKey"
18
+ xml_accessor :prefix_to_key, :from => "PrefixToKey"
19
+ xml_accessor :key_names, :from => "KeyNames"
20
+ xml_accessor :names_after_key, :from => "NamesArterKey"
21
+ xml_accessor :suffix_to_key, :from => "SuffixToKey"
22
+ xml_accessor :letters_after_names, :from => "LettersAfterNames"
23
+ xml_accessor :titles_after_names, :from => "TitlesAfterNames"
24
+ xml_accessor :corporate_name, :from => "CorporateName"
25
+ xml_accessor :biographical_note, :from => "BiographicalNote"
26
+ end
27
+ end
@@ -0,0 +1,46 @@
1
+ # coding: utf-8
2
+
3
+ module ONIX
4
+ class Header
5
+ include ROXML
6
+ include ONIX::Common
7
+
8
+ xml_name "Header"
9
+
10
+ xml_accessor :from_ean_number, :from => "FromEANNumber"
11
+ xml_accessor :from_san, :from => "FromSAN"
12
+ xml_accessor :sender_identifiers, :from => "SenderIdentifier", :as => [ONIX::SenderIdentifier]
13
+ xml_accessor :from_company, :from => "FromCompany"
14
+ xml_accessor :from_person, :from => "FromPerson"
15
+ xml_accessor :from_email, :from => "FromEmail"
16
+ xml_accessor :to_ean_number, :from => "ToEANNumber"
17
+ xml_accessor :to_san, :from => "ToSAN"
18
+ xml_accessor :addressee_identifiers, :from => "AddresseeIdentifier", :as => [ONIX::AddresseeIdentifier]
19
+ xml_accessor :to_company, :from => "ToCompany"
20
+ xml_accessor :to_person, :from => "ToPerson"
21
+ xml_accessor :message_number, :from => "MessageNumber"
22
+ xml_accessor :message_repeat, :from => "MessageRepeat", :as => Fixnum
23
+ xml_accessor(:sent_date, :from => "SentDate", :to_xml => ONIX::Formatters.yyyymmdd) do |val|
24
+ begin
25
+ Date.parse(val)
26
+ rescue
27
+ nil
28
+ end
29
+ end
30
+ xml_accessor :message_note, :from => "MessageNote"
31
+
32
+ # defaults
33
+ xml_accessor :default_language_of_text, :from => "DefaultLanguageOfText"
34
+ xml_accessor :default_price_type_code, :from => "DefaultPriceTypeCode", :as => Fixnum, :to_xml => ONIX::Formatters.two_digit
35
+ xml_accessor :default_currency_code, :from => "DefaultCurrencyCode"
36
+ xml_reader :default_linear_unit, :from => "DefaultLinearUnit" # deprecated in ONIX spec
37
+ xml_reader :default_weight_unit, :from => "DefaultWeightUnit" # deprecated in ONIX spec
38
+ xml_accessor :default_class_of_trade, :from => "DefaultClassOfTrade"
39
+
40
+ def initialize
41
+ self.sender_identifiers = []
42
+ self.addressee_identifiers = []
43
+ end
44
+ end
45
+
46
+ end
@@ -0,0 +1,15 @@
1
+ # coding: utf-8
2
+
3
+ module ONIX
4
+ class Imprint
5
+ include ROXML
6
+ include ONIX::Common
7
+
8
+ xml_name "Imprint"
9
+
10
+ xml_accessor :name_code_type, :from => "NameCodeType", :as => Fixnum, :to_xml => ONIX::Formatters.two_digit
11
+ xml_accessor :name_code_type_name, :from => "NameCodeTypeName"
12
+ xml_accessor :name_code_value, :from => "NameCodeValue"
13
+ xml_accessor :imprint_name, :from => "ImprintName"
14
+ end
15
+ end
@@ -0,0 +1,14 @@
1
+ # coding: utf-8
2
+
3
+ module ONIX
4
+ class Language
5
+ include ROXML
6
+ include ONIX::Common
7
+
8
+ xml_name "Language"
9
+
10
+ xml_accessor :language_role, :from => "LanguageRole", :as => Fixnum, :to_xml => ONIX::Formatters.two_digit
11
+ xml_accessor :language_code, :from => "LanguageCode"
12
+ xml_accessor :country_code, :from => "CountryCode"
13
+ end
14
+ end
@@ -0,0 +1,17 @@
1
+ # coding: utf-8
2
+
3
+ module ONIX
4
+ module Lists
5
+ # Code list 91
6
+ COUNTRY_CODE = {
7
+ 1 => "General/trade",
8
+ 2 => "Children/juvenile",
9
+ 3 => "Young adult",
10
+ 4 => "Primary & secondary/elementary & high school",
11
+ 5 => "College/higher education",
12
+ 6 => "Professional and scholarly",
13
+ 7 => "ELT/ESL",
14
+ 8 => "Adult education",
15
+ }
16
+ end
17
+ end
@@ -0,0 +1,257 @@
1
+ # coding: utf-8
2
+
3
+ module ONIX
4
+ module Lists
5
+ # Code list 91
6
+ COUNTRY_CODE = {
7
+ "AD" => "Andorra",
8
+ "AE" => "United Arab Emirates",
9
+ "AF" => "Afghanistan",
10
+ "AG" => "Antigua and Barbuda",
11
+ "AI" => "Anguilla",
12
+ "AL" => "Albania",
13
+ "AM" => "Armenia",
14
+ "AN" => "Netherlands Antilles",
15
+ "AO" => "Angola",
16
+ "AQ" => "Antarctica",
17
+ "AR" => "Argentina",
18
+ "AS" => "American Samoa",
19
+ "AT" => "Austria",
20
+ "AU" => "Australia",
21
+ "AW" => "Aruba",
22
+ "AX" => "Aland Islands",
23
+ "AZ" => "Azerbaijan",
24
+ "BA" => "Bosnia and Herzegovina",
25
+ "BB" => "Barbados",
26
+ "BD" => "Bangladesh",
27
+ "BE" => "Belgium",
28
+ "BF" => "Burkina Faso",
29
+ "BG" => "Bulgaria",
30
+ "BH" => "Bahrain",
31
+ "BI" => "Burundi",
32
+ "BJ" => "Benin",
33
+ "BL" => "Saint Barthelemy",
34
+ "BM" => "Bermuda",
35
+ "BN" => "Brunei Darussalam",
36
+ "BO" => "Bolivia",
37
+ "BR" => "Brazil",
38
+ "BS" => "Bahamas",
39
+ "BT" => "Bhutan",
40
+ "BV" => "Bouvet Island",
41
+ "BW" => "Botswana",
42
+ "BY" => "Belarus",
43
+ "BZ" => "Belize",
44
+ "CA" => "Canada",
45
+ "CC" => "Cocos (Keeling) Islands",
46
+ "CD" => "Congo, Democratic Republic of the",
47
+ "CF" => "Central African Republic",
48
+ "CG" => "Congo",
49
+ "CH" => "Switzerland",
50
+ "CI" => "Cote D'Ivoire",
51
+ "CK" => "Cook Islands",
52
+ "CL" => "Chile",
53
+ "CM" => "Cameroon",
54
+ "CN" => "China",
55
+ "CO" => "Colombia",
56
+ "CR" => "Costa Rica",
57
+ "CS" => "Serbia and Montenegro",
58
+ "CU" => "Cuba",
59
+ "CV" => "Cape Verde",
60
+ "CX" => "Christmas Island",
61
+ "CY" => "Cyprus",
62
+ "CZ" => "Czech Republic",
63
+ "DE" => "Germany",
64
+ "DJ" => "Djibouti",
65
+ "DK" => "Denmark",
66
+ "DM" => "Dominica",
67
+ "DO" => "Dominican Republic",
68
+ "DZ" => "Algeria",
69
+ "EC" => "Ecuador",
70
+ "EE" => "Estonia",
71
+ "EG" => "Egypt",
72
+ "EH" => "Western Sahara",
73
+ "ER" => "Eritrea",
74
+ "ES" => "Spain",
75
+ "ET" => "Ethiopia",
76
+ "FI" => "Finland",
77
+ "FJ" => "Fiji",
78
+ "FK" => "Falkland Islands (Malvinas)",
79
+ "FM" => "Micronesia, Federated States of",
80
+ "FO" => "Faroe Islands",
81
+ "FR" => "France",
82
+ "GA" => "Gabon",
83
+ "GB" => "United Kingdom",
84
+ "GD" => "Grenada",
85
+ "GE" => "Georgia",
86
+ "GF" => "French Guiana",
87
+ "GG" => "Guernsey",
88
+ "GH" => "Ghana",
89
+ "GI" => "Gibraltar",
90
+ "GL" => "Greenland",
91
+ "GM" => "Gambia",
92
+ "GN" => "Guinea",
93
+ "GP" => "Guadeloupe",
94
+ "GQ" => "Equatorial Guinea",
95
+ "GR" => "Greece",
96
+ "GS" => "South Georgia and the South Sandwich Islands",
97
+ "GT" => "Guatemala",
98
+ "GU" => "Guam",
99
+ "GW" => "Guinea-Bissau",
100
+ "GY" => "Guyana",
101
+ "HK" => "Hong Kong",
102
+ "HM" => "Heard Island and McDonald Islands",
103
+ "HN" => "Honduras",
104
+ "HR" => "Croatia",
105
+ "HT" => "Haiti",
106
+ "HU" => "Hungary",
107
+ "ID" => "Indonesia",
108
+ "IE" => "Ireland",
109
+ "IL" => "Israel",
110
+ "IM" => "Isle of Man",
111
+ "IN" => "India",
112
+ "IO" => "British Indian Ocean Territory",
113
+ "IQ" => "Iraq",
114
+ "IR" => "Iran, Islamic Republic of",
115
+ "IS" => "Iceland",
116
+ "IT" => "Italy",
117
+ "JE" => "Jersey",
118
+ "JM" => "Jamaica",
119
+ "JO" => "Jordan",
120
+ "JP" => "Japan",
121
+ "KE" => "Kenya",
122
+ "KG" => "Kyrgyzstan",
123
+ "KH" => "Cambodia",
124
+ "KI" => "Kiribati",
125
+ "KM" => "Comoros",
126
+ "KN" => "Saint Kitts and Nevis",
127
+ "KP" => "Korea, Democratic People's Republic of",
128
+ "KR" => "Korea, Republic of",
129
+ "KW" => "Kuwait",
130
+ "KY" => "Cayman Islands",
131
+ "KZ" => "Kazakhstan",
132
+ "LA" => "Lao People's Democratic Republic",
133
+ "LB" => "Lebanon",
134
+ "LC" => "Saint Lucia",
135
+ "LI" => "Liechtenstein",
136
+ "LK" => "Sri Lanka",
137
+ "LR" => "Liberia",
138
+ "LS" => "Lesotho",
139
+ "LT" => "Lithuania",
140
+ "LU" => "Luxembourg",
141
+ "LV" => "Latvia",
142
+ "LY" => "Libyan Arab Jamahiriya",
143
+ "MA" => "Morocco",
144
+ "MC" => "Monaco",
145
+ "MD" => "Moldova, Republic of",
146
+ "ME" => "Montenegro",
147
+ "MF" => "Saint Martin, French part",
148
+ "MG" => "Madagascar",
149
+ "MH" => "Marshall Islands",
150
+ "MK" => "Macedonia, the former Yugoslav Republic of",
151
+ "ML" => "Mali",
152
+ "MM" => "Myanmar",
153
+ "MN" => "Mongolia",
154
+ "MO" => "Macao",
155
+ "MP" => "Northern Mariana Islands",
156
+ "MQ" => "Martinique",
157
+ "MR" => "Mauritania",
158
+ "MS" => "Montserrat",
159
+ "MT" => "Malta",
160
+ "MU" => "Mauritius",
161
+ "MV" => "Maldives",
162
+ "MW" => "Malawi",
163
+ "MX" => "Mexico",
164
+ "MY" => "Malaysia",
165
+ "MZ" => "Mozambique",
166
+ "NA" => "Namibia",
167
+ "NC" => "New Caledonia",
168
+ "NE" => "Niger",
169
+ "NF" => "Norfolk Island",
170
+ "NG" => "Nigeria",
171
+ "NI" => "Nicaragua",
172
+ "NL" => "Netherlands",
173
+ "NO" => "Norway",
174
+ "NP" => "Nepal",
175
+ "NR" => "Nauru",
176
+ "NU" => "Niue",
177
+ "NZ" => "New Zealand",
178
+ "OM" => "Oman",
179
+ "PA" => "Panama",
180
+ "PE" => "Peru",
181
+ "PF" => "French Polynesia",
182
+ "PG" => "Papua New Guinea",
183
+ "PH" => "Philippines",
184
+ "PK" => "Pakistan",
185
+ "PL" => "Poland",
186
+ "PM" => "Saint Pierre and Miquelon",
187
+ "PN" => "Pitcairn",
188
+ "PR" => "Puerto Rico",
189
+ "PS" => "Palestinian Territory, Occupied",
190
+ "PT" => "Portugal",
191
+ "PW" => "Palau",
192
+ "PY" => "Paraguay",
193
+ "QA" => "Qatar",
194
+ "RE" => "Reunion",
195
+ "RO" => "Romania",
196
+ "RS" => "Serbia",
197
+ "RU" => "Russian Federation",
198
+ "RW" => "Rwanda",
199
+ "SA" => "Saudi Arabia",
200
+ "SB" => "Solomon Islands",
201
+ "SC" => "Seychelles",
202
+ "SD" => "Sudan",
203
+ "SE" => "Sweden",
204
+ "SG" => "Singapore",
205
+ "SH" => "Saint Helena",
206
+ "SI" => "Slovenia",
207
+ "SJ" => "Svalbard and Jan Mayen",
208
+ "SK" => "Slovakia",
209
+ "SL" => "Sierra Leone",
210
+ "SM" => "San Marino",
211
+ "SN" => "Senegal",
212
+ "SO" => "Somalia",
213
+ "SR" => "Suriname",
214
+ "ST" => "Sao Tome and Principe",
215
+ "SV" => "El Salvador",
216
+ "SY" => "Syrian Arab Republic",
217
+ "SZ" => "Swaziland",
218
+ "TC" => "Turks and Caicos Islands",
219
+ "TD" => "Chad",
220
+ "TF" => "French Southern Territories",
221
+ "TG" => "Togo",
222
+ "TH" => "Thailand",
223
+ "TJ" => "Tajikistan",
224
+ "TK" => "Tokelau",
225
+ "TL" => "Timor-Leste",
226
+ "TM" => "Turkmenistan",
227
+ "TN" => "Tunisia",
228
+ "TO" => "Tonga",
229
+ "TR" => "Turkey",
230
+ "TT" => "Trinidad and Tobago",
231
+ "TV" => "Tuvalu",
232
+ "TW" => "Taiwan, Province of China",
233
+ "TZ" => "Tanzania, United Republic of",
234
+ "UA" => "Ukraine",
235
+ "UG" => "Uganda",
236
+ "UM" => "United States Minor Outlying Islands",
237
+ "US" => "United States",
238
+ "UY" => "Uruguay",
239
+ "UZ" => "Uzbekistan",
240
+ "VA" => "Holy See (Vatican City State)",
241
+ "VC" => "Saint Vincent and the Grenadines",
242
+ "VE" => "Venezuela, Bolivarian Republic of",
243
+ "VG" => "Virgin Islands, British",
244
+ "VI" => "Virgin Islands, US",
245
+ "VN" => "Viet Nam",
246
+ "VU" => "Vanuatu",
247
+ "WF" => "Wallis and Futuna",
248
+ "WS" => "Samoa",
249
+ "YE" => "Yemen",
250
+ "YT" => "Mayotte",
251
+ "YU" => "Yugoslavia",
252
+ "ZA" => "South Africa",
253
+ "ZM" => "Zambia",
254
+ "ZW" => "Zimbabwe",
255
+ }
256
+ end
257
+ end