addressing 2.1.0 → 2.2.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.
Files changed (71) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +32 -0
  3. data/README.md +223 -112
  4. data/data/UPSTREAM_VERSION +1 -0
  5. data/data/address_formats.json +2256 -206
  6. data/data/countries.json +1282 -0
  7. data/data/locale.json +222 -0
  8. data/data/subdivision/BR-AC.json +22 -22
  9. data/data/subdivision/BR-AL.json +102 -102
  10. data/data/subdivision/BR-AM.json +62 -62
  11. data/data/subdivision/BR-AP.json +16 -16
  12. data/data/subdivision/BR-BA.json +417 -417
  13. data/data/subdivision/BR-CE.json +184 -184
  14. data/data/subdivision/BR-DF.json +1 -1
  15. data/data/subdivision/BR-ES.json +79 -79
  16. data/data/subdivision/BR-GO.json +246 -246
  17. data/data/subdivision/BR-MA.json +217 -217
  18. data/data/subdivision/BR-MG.json +853 -853
  19. data/data/subdivision/BR-MS.json +78 -78
  20. data/data/subdivision/BR-MT.json +141 -141
  21. data/data/subdivision/BR-PA.json +144 -144
  22. data/data/subdivision/BR-PB.json +223 -223
  23. data/data/subdivision/BR-PE.json +185 -185
  24. data/data/subdivision/BR-PI.json +223 -223
  25. data/data/subdivision/BR-PR.json +400 -400
  26. data/data/subdivision/BR-RJ.json +93 -93
  27. data/data/subdivision/BR-RN.json +166 -166
  28. data/data/subdivision/BR-RO.json +52 -52
  29. data/data/subdivision/BR-RR.json +15 -15
  30. data/data/subdivision/BR-RS.json +497 -497
  31. data/data/subdivision/BR-SC.json +295 -295
  32. data/data/subdivision/BR-SE.json +75 -75
  33. data/data/subdivision/BR-SP.json +645 -645
  34. data/data/subdivision/BR-TO.json +139 -139
  35. data/data/subdivision/CL-AI.json +10 -10
  36. data/data/subdivision/CL-AN.json +9 -9
  37. data/data/subdivision/CL-AP.json +4 -4
  38. data/data/subdivision/CL-AR.json +32 -32
  39. data/data/subdivision/CL-AT.json +9 -9
  40. data/data/subdivision/CL-BI.json +34 -34
  41. data/data/subdivision/CL-CO.json +15 -15
  42. data/data/subdivision/CL-LI.json +33 -33
  43. data/data/subdivision/CL-LL.json +30 -30
  44. data/data/subdivision/CL-LR.json +12 -12
  45. data/data/subdivision/CL-MA.json +11 -11
  46. data/data/subdivision/CL-ML.json +30 -30
  47. data/data/subdivision/CL-NB.json +21 -21
  48. data/data/subdivision/CL-RM.json +52 -52
  49. data/data/subdivision/CL-TA.json +7 -7
  50. data/data/subdivision/CL-VS.json +38 -38
  51. data/data/subdivision/CV.json +9 -9
  52. data/data/subdivision/KY.json +3 -3
  53. data/data/subdivision/TV.json +1 -1
  54. data/lib/addressing/address.rb +7 -3
  55. data/lib/addressing/address_format.rb +55 -81
  56. data/lib/addressing/address_validator.rb +98 -0
  57. data/lib/addressing/blank.rb +32 -0
  58. data/lib/addressing/country.rb +28 -314
  59. data/lib/addressing/data_source.rb +75 -0
  60. data/lib/addressing/default_formatter.rb +25 -25
  61. data/lib/addressing/enum.rb +2 -6
  62. data/lib/addressing/field_violation.rb +17 -0
  63. data/lib/addressing/lazy_subdivisions.rb +16 -15
  64. data/lib/addressing/locale.rb +20 -269
  65. data/lib/addressing/model.rb +20 -78
  66. data/lib/addressing/postal_label_formatter.rb +16 -15
  67. data/lib/addressing/subdivision.rb +113 -116
  68. data/lib/addressing/version.rb +1 -1
  69. data/lib/addressing.rb +6 -1
  70. metadata +9 -3
  71. data/data/address_formats.dump +0 -0
@@ -5,35 +5,35 @@
5
5
  "LL"
6
6
  ],
7
7
  "subdivisions": {
8
- "Ancud": {},
9
- "Calbuco": {},
10
- "Castro": {},
11
- "Chaitén": {},
12
- "Chonchi": {},
13
- "Cochamó": {},
14
- "Curaco de Vélez": {},
15
- "Dalcahue": {},
16
- "Fresia": {},
17
- "Frutillar": {},
18
- "Futaleufú": {},
19
- "Hualaihué": {},
20
- "Llanquihue": {},
21
- "Los Muermos": {},
22
- "Maullín": {},
23
- "Osorno": {},
24
- "Palena": {},
25
- "Puerto Montt": {},
26
- "Puerto Octay": {},
27
- "Puerto Varas": {},
28
- "Puqueldón": {},
29
- "Purranque": {},
30
- "Puyehue": {},
31
- "Queilén": {},
32
- "Quellón": {},
33
- "Quemchi": {},
34
- "Quinchao": {},
35
- "Río Negro": {},
36
- "San Juan de la Costa": {},
37
- "San Pablo": {}
8
+ "Ancud": [],
9
+ "Calbuco": [],
10
+ "Castro": [],
11
+ "Chaitén": [],
12
+ "Chonchi": [],
13
+ "Cochamó": [],
14
+ "Curaco de Vélez": [],
15
+ "Dalcahue": [],
16
+ "Fresia": [],
17
+ "Frutillar": [],
18
+ "Futaleufú": [],
19
+ "Hualaihué": [],
20
+ "Llanquihue": [],
21
+ "Los Muermos": [],
22
+ "Maullín": [],
23
+ "Osorno": [],
24
+ "Palena": [],
25
+ "Puerto Montt": [],
26
+ "Puerto Octay": [],
27
+ "Puerto Varas": [],
28
+ "Puqueldón": [],
29
+ "Purranque": [],
30
+ "Puyehue": [],
31
+ "Queilén": [],
32
+ "Quellón": [],
33
+ "Quemchi": [],
34
+ "Quinchao": [],
35
+ "Río Negro": [],
36
+ "San Juan de la Costa": [],
37
+ "San Pablo": []
38
38
  }
39
39
  }
@@ -5,17 +5,17 @@
5
5
  "LR"
6
6
  ],
7
7
  "subdivisions": {
8
- "Corral": {},
9
- "Futrono": {},
10
- "La Unión": {},
11
- "Lago Ranco": {},
12
- "Lanco": {},
13
- "Los Lagos": {},
14
- "Máfil": {},
15
- "Mariquina": {},
16
- "Paillaco": {},
17
- "Panguipulli": {},
18
- "Río Bueno": {},
19
- "Valdivia": {}
8
+ "Corral": [],
9
+ "Futrono": [],
10
+ "La Unión": [],
11
+ "Lago Ranco": [],
12
+ "Lanco": [],
13
+ "Los Lagos": [],
14
+ "Máfil": [],
15
+ "Mariquina": [],
16
+ "Paillaco": [],
17
+ "Panguipulli": [],
18
+ "Río Bueno": [],
19
+ "Valdivia": []
20
20
  }
21
21
  }
@@ -5,16 +5,16 @@
5
5
  "MA"
6
6
  ],
7
7
  "subdivisions": {
8
- "Antártica": {},
9
- "Cabo de Hornos": {},
10
- "Laguna Blanca": {},
11
- "Natales": {},
12
- "Porvenir": {},
13
- "Primavera": {},
14
- "Punta Arenas": {},
15
- "Río Verde": {},
16
- "San Gregorio": {},
17
- "Timaukel": {},
18
- "Torres del Paine": {}
8
+ "Antártica": [],
9
+ "Cabo de Hornos": [],
10
+ "Laguna Blanca": [],
11
+ "Natales": [],
12
+ "Porvenir": [],
13
+ "Primavera": [],
14
+ "Punta Arenas": [],
15
+ "Río Verde": [],
16
+ "San Gregorio": [],
17
+ "Timaukel": [],
18
+ "Torres del Paine": []
19
19
  }
20
20
  }
@@ -5,35 +5,35 @@
5
5
  "ML"
6
6
  ],
7
7
  "subdivisions": {
8
- "Cauquenes": {},
9
- "Chanco": {},
10
- "Colbún": {},
11
- "Constitución": {},
12
- "Curepto": {},
13
- "Curicó": {},
14
- "Empedrado": {},
15
- "Hualañé": {},
16
- "Licantén": {},
17
- "Linares": {},
18
- "Longaví": {},
19
- "Maule": {},
20
- "Molina": {},
21
- "Parral": {},
22
- "Pelarco": {},
23
- "Pelluhue": {},
24
- "Pencahue": {},
25
- "Rauco": {},
26
- "Retiro": {},
27
- "Río Claro": {},
28
- "Romeral": {},
29
- "Sagrada Familia": {},
30
- "San Clemente": {},
31
- "San Javier de Loncomilla": {},
32
- "San Rafael": {},
33
- "Talca": {},
34
- "Teno": {},
35
- "Vichuquén": {},
36
- "Villa Alegre": {},
37
- "Yerbas Buenas": {}
8
+ "Cauquenes": [],
9
+ "Chanco": [],
10
+ "Colbún": [],
11
+ "Constitución": [],
12
+ "Curepto": [],
13
+ "Curicó": [],
14
+ "Empedrado": [],
15
+ "Hualañé": [],
16
+ "Licantén": [],
17
+ "Linares": [],
18
+ "Longaví": [],
19
+ "Maule": [],
20
+ "Molina": [],
21
+ "Parral": [],
22
+ "Pelarco": [],
23
+ "Pelluhue": [],
24
+ "Pencahue": [],
25
+ "Rauco": [],
26
+ "Retiro": [],
27
+ "Río Claro": [],
28
+ "Romeral": [],
29
+ "Sagrada Familia": [],
30
+ "San Clemente": [],
31
+ "San Javier de Loncomilla": [],
32
+ "San Rafael": [],
33
+ "Talca": [],
34
+ "Teno": [],
35
+ "Vichuquén": [],
36
+ "Villa Alegre": [],
37
+ "Yerbas Buenas": []
38
38
  }
39
39
  }
@@ -5,26 +5,26 @@
5
5
  "NB"
6
6
  ],
7
7
  "subdivisions": {
8
- "Bulnes": {},
9
- "Cobquecura": {},
10
- "Coelemu": {},
11
- "Coihueco": {},
12
- "Chillán": {},
13
- "Chillán Viejo": {},
14
- "El Carmen": {},
15
- "Ninhue": {},
16
- "Ñiquén": {},
17
- "Pemuco": {},
18
- "Pinto": {},
19
- "Portezuelo": {},
20
- "Quillón": {},
21
- "Quirihue": {},
22
- "Ránquil": {},
23
- "San Carlos": {},
24
- "San Fabián": {},
25
- "San Ignacio": {},
26
- "San Nicolás": {},
27
- "Treguaco": {},
28
- "Yungay": {}
8
+ "Bulnes": [],
9
+ "Cobquecura": [],
10
+ "Coelemu": [],
11
+ "Coihueco": [],
12
+ "Chillán": [],
13
+ "Chillán Viejo": [],
14
+ "El Carmen": [],
15
+ "Ninhue": [],
16
+ "Ñiquén": [],
17
+ "Pemuco": [],
18
+ "Pinto": [],
19
+ "Portezuelo": [],
20
+ "Quillón": [],
21
+ "Quirihue": [],
22
+ "Ránquil": [],
23
+ "San Carlos": [],
24
+ "San Fabián": [],
25
+ "San Ignacio": [],
26
+ "San Nicolás": [],
27
+ "Treguaco": [],
28
+ "Yungay": []
29
29
  }
30
30
  }
@@ -5,57 +5,57 @@
5
5
  "RM"
6
6
  ],
7
7
  "subdivisions": {
8
- "Alhué": {},
9
- "Buin": {},
10
- "Calera de Tango": {},
11
- "Cerrillos": {},
12
- "Cerro Navia": {},
13
- "Colina": {},
14
- "Conchalí": {},
15
- "Curacaví": {},
16
- "El Bosque": {},
17
- "El Monte": {},
18
- "Estación Central": {},
19
- "Huechuraba": {},
20
- "Independencia": {},
21
- "Isla de Maipo": {},
22
- "La Cisterna": {},
23
- "La Florida": {},
24
- "La Granja": {},
25
- "La Pintana": {},
26
- "La Reina": {},
27
- "Lampa": {},
28
- "Las Condes": {},
29
- "Lo Barnechea": {},
30
- "Lo Espejo": {},
31
- "Lo Prado": {},
32
- "Macul": {},
33
- "Maipú": {},
34
- "María Pinto": {},
35
- "Melipilla": {},
36
- "Ñuñoa": {},
37
- "Padre Hurtado": {},
38
- "Paine": {},
39
- "Pedro Aguirre Cerda": {},
40
- "Peñaflor": {},
41
- "Peñalolén": {},
42
- "Pirque": {},
43
- "Providencia": {},
44
- "Pudahuel": {},
45
- "Puente Alto": {},
46
- "Quilicura": {},
47
- "Quinta Normal": {},
48
- "Recoleta": {},
49
- "Renca": {},
50
- "San Bernardo": {},
51
- "San Joaquín": {},
52
- "San José de Maipo": {},
53
- "San Miguel": {},
54
- "San Pedro": {},
55
- "San Ramón": {},
56
- "Santiago": {},
57
- "Talagante": {},
58
- "Tiltil": {},
59
- "Vitacura": {}
8
+ "Alhué": [],
9
+ "Buin": [],
10
+ "Calera de Tango": [],
11
+ "Cerrillos": [],
12
+ "Cerro Navia": [],
13
+ "Colina": [],
14
+ "Conchalí": [],
15
+ "Curacaví": [],
16
+ "El Bosque": [],
17
+ "El Monte": [],
18
+ "Estación Central": [],
19
+ "Huechuraba": [],
20
+ "Independencia": [],
21
+ "Isla de Maipo": [],
22
+ "La Cisterna": [],
23
+ "La Florida": [],
24
+ "La Granja": [],
25
+ "La Pintana": [],
26
+ "La Reina": [],
27
+ "Lampa": [],
28
+ "Las Condes": [],
29
+ "Lo Barnechea": [],
30
+ "Lo Espejo": [],
31
+ "Lo Prado": [],
32
+ "Macul": [],
33
+ "Maipú": [],
34
+ "María Pinto": [],
35
+ "Melipilla": [],
36
+ "Ñuñoa": [],
37
+ "Padre Hurtado": [],
38
+ "Paine": [],
39
+ "Pedro Aguirre Cerda": [],
40
+ "Peñaflor": [],
41
+ "Peñalolén": [],
42
+ "Pirque": [],
43
+ "Providencia": [],
44
+ "Pudahuel": [],
45
+ "Puente Alto": [],
46
+ "Quilicura": [],
47
+ "Quinta Normal": [],
48
+ "Recoleta": [],
49
+ "Renca": [],
50
+ "San Bernardo": [],
51
+ "San Joaquín": [],
52
+ "San José de Maipo": [],
53
+ "San Miguel": [],
54
+ "San Pedro": [],
55
+ "San Ramón": [],
56
+ "Santiago": [],
57
+ "Talagante": [],
58
+ "Tiltil": [],
59
+ "Vitacura": []
60
60
  }
61
61
  }
@@ -5,12 +5,12 @@
5
5
  "TA"
6
6
  ],
7
7
  "subdivisions": {
8
- "Alto Hospicio": {},
9
- "Camiña": {},
10
- "Colchane": {},
11
- "Huara": {},
12
- "Iquique": {},
13
- "Pica": {},
14
- "Pozo Almonte": {}
8
+ "Alto Hospicio": [],
9
+ "Camiña": [],
10
+ "Colchane": [],
11
+ "Huara": [],
12
+ "Iquique": [],
13
+ "Pica": [],
14
+ "Pozo Almonte": []
15
15
  }
16
16
  }
@@ -5,43 +5,43 @@
5
5
  "VS"
6
6
  ],
7
7
  "subdivisions": {
8
- "Algarrobo": {},
9
- "Cabildo": {},
10
- "Calle Larga": {},
11
- "Cartagena": {},
12
- "Casablanca": {},
13
- "Catemu": {},
14
- "Concón": {},
15
- "El Quisco": {},
16
- "El Tabo": {},
17
- "Hijuelas": {},
18
- "Isla de Pascua": {},
19
- "Juan Fernández": {},
20
- "La Calera": {},
21
- "La Cruz": {},
22
- "La Ligua": {},
23
- "Limache": {},
24
- "Llaillay": {},
25
- "Los Andes": {},
26
- "Nogales": {},
27
- "Olmué": {},
28
- "Panquehue": {},
29
- "Papudo": {},
30
- "Petorca": {},
31
- "Puchuncaví": {},
32
- "Putaendo": {},
33
- "Quillota": {},
34
- "Quilpué": {},
35
- "Quintero": {},
36
- "Rinconada": {},
37
- "San Antonio": {},
38
- "San Esteban": {},
39
- "San Felipe": {},
40
- "Santa María": {},
41
- "Santo Domingo": {},
42
- "Valparaíso": {},
43
- "Villa Alemana": {},
44
- "Viña del Mar": {},
45
- "Zapallar": {}
8
+ "Algarrobo": [],
9
+ "Cabildo": [],
10
+ "Calle Larga": [],
11
+ "Cartagena": [],
12
+ "Casablanca": [],
13
+ "Catemu": [],
14
+ "Concón": [],
15
+ "El Quisco": [],
16
+ "El Tabo": [],
17
+ "Hijuelas": [],
18
+ "Isla de Pascua": [],
19
+ "Juan Fernández": [],
20
+ "La Calera": [],
21
+ "La Cruz": [],
22
+ "La Ligua": [],
23
+ "Limache": [],
24
+ "Llaillay": [],
25
+ "Los Andes": [],
26
+ "Nogales": [],
27
+ "Olmué": [],
28
+ "Panquehue": [],
29
+ "Papudo": [],
30
+ "Petorca": [],
31
+ "Puchuncaví": [],
32
+ "Putaendo": [],
33
+ "Quillota": [],
34
+ "Quilpué": [],
35
+ "Quintero": [],
36
+ "Rinconada": [],
37
+ "San Antonio": [],
38
+ "San Esteban": [],
39
+ "San Felipe": [],
40
+ "Santa María": [],
41
+ "Santo Domingo": [],
42
+ "Valparaíso": [],
43
+ "Villa Alemana": [],
44
+ "Viña del Mar": [],
45
+ "Zapallar": []
46
46
  }
47
47
  }
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "country_code": "CV",
3
3
  "subdivisions": {
4
- "Boa Vista": {},
5
- "Brava": {},
6
- "Fogo": {},
7
- "Maio": {},
8
- "Sal": {},
9
- "Santiago": {},
10
- "Santo Antão": {},
11
- "São Nicolau": {},
12
- "São Vicente": {}
4
+ "Boa Vista": [],
5
+ "Brava": [],
6
+ "Fogo": [],
7
+ "Maio": [],
8
+ "Sal": [],
9
+ "Santiago": [],
10
+ "Santo Antão": [],
11
+ "São Nicolau": [],
12
+ "São Vicente": []
13
13
  }
14
14
  }
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "country_code": "KY",
3
3
  "subdivisions": {
4
- "Cayman Brac": {},
5
- "Grand Cayman": {},
6
- "Little Cayman": {}
4
+ "Cayman Brac": [],
5
+ "Grand Cayman": [],
6
+ "Little Cayman": []
7
7
  }
8
8
  }
@@ -10,7 +10,7 @@
10
10
  "NMA": {
11
11
  "name": "Nanumea"
12
12
  },
13
- "Niulakita": {},
13
+ "Niulakita": [],
14
14
  "NIT": {
15
15
  "name": "Niutao"
16
16
  },
@@ -28,7 +28,7 @@ module Addressing
28
28
 
29
29
  # Creates a new Address instance.
30
30
  #
31
- # @param country_code [String] ISO 3166-1 alpha-2 country code
31
+ # @param country_code [String] ISO 3166-1 alpha-2 country code, stored in uppercase
32
32
  # @param administrative_area [String] Top-level administrative subdivision (state, province, etc.)
33
33
  # @param locality [String] City or locality
34
34
  # @param dependent_locality [String] Dependent locality (neighborhood, suburb, district, etc.)
@@ -43,7 +43,7 @@ module Addressing
43
43
  # @param family_name [String] Family name (last name)
44
44
  # @param locale [String] Locale code for the address
45
45
  def initialize(country_code: "", administrative_area: "", locality: "", dependent_locality: "", postal_code: "", sorting_code: "", address_line1: "", address_line2: "", address_line3: "", organization: "", given_name: "", additional_name: "", family_name: "", locale: "und")
46
- @country_code = country_code
46
+ self.country_code = country_code
47
47
  @administrative_area = administrative_area
48
48
  @locality = locality
49
49
  @dependent_locality = dependent_locality
@@ -95,6 +95,10 @@ module Addressing
95
95
 
96
96
  protected
97
97
 
98
- attr_writer(*FIELDS)
98
+ attr_writer(*(FIELDS - [:country_code]))
99
+
100
+ def country_code=(value)
101
+ @country_code = value.is_a?(String) ? value.upcase : value
102
+ end
99
103
  end
100
104
  end