ffaker 2.18.0 → 2.21.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 (257) hide show
  1. checksums.yaml +4 -4
  2. data/Changelog.md +25 -0
  3. data/REFERENCE.md +1463 -1352
  4. data/ffaker.gemspec +1 -4
  5. data/lib/ffaker/address_au.rb +1 -1
  6. data/lib/ffaker/address_br.rb +15 -3
  7. data/lib/ffaker/address_ca.rb +1 -1
  8. data/lib/ffaker/address_it.rb +36 -0
  9. data/lib/ffaker/address_mx.rb +2 -8
  10. data/lib/ffaker/animal_br.rb +12 -0
  11. data/lib/ffaker/company.rb +3 -6
  12. data/lib/ffaker/company_fr.rb +35 -0
  13. data/lib/ffaker/{courses.rb → courses_fr.rb} +2 -0
  14. data/lib/ffaker/data/address_br/city +0 -1
  15. data/lib/ffaker/data/address_br/complement +3 -0
  16. data/lib/ffaker/data/address_br/neighborhood_prefixes +3 -0
  17. data/lib/ffaker/data/address_br/state +1 -1
  18. data/lib/ffaker/data/address_it/city +111 -0
  19. data/lib/ffaker/data/address_it/region +20 -0
  20. data/lib/ffaker/data/animal_br/common_names +423 -0
  21. data/lib/ffaker/data/food_pl/fermented +1 -1
  22. data/lib/ffaker/data/food_pl/fruits +1 -1
  23. data/lib/ffaker/data/food_pl/herbs +1 -1
  24. data/lib/ffaker/data/food_pl/meats +1 -1
  25. data/lib/ffaker/data/food_pl/preserves +1 -1
  26. data/lib/ffaker/data/food_pl/spices +1 -1
  27. data/lib/ffaker/data/food_pl/vegetables +1 -1
  28. data/lib/ffaker/data/game/adj_and_adv +18 -0
  29. data/lib/ffaker/data/game/category +84 -0
  30. data/lib/ffaker/data/game/mechanic +182 -0
  31. data/lib/ffaker/data/game/nouns +37 -0
  32. data/lib/ffaker/data/game/prefixes +17 -0
  33. data/lib/ffaker/data/job_it/job_adj +37 -0
  34. data/lib/ffaker/data/job_it/job_noun +25 -0
  35. data/lib/ffaker/data/job_it/job_prefix +22 -0
  36. data/lib/ffaker/data/lorem_br/characters +36 -0
  37. data/lib/ffaker/data/lorem_br/words +183 -0
  38. data/lib/ffaker/data/lorem_it/words +321 -0
  39. data/lib/ffaker/data/name/pronouns +1 -1
  40. data/lib/ffaker/data/name_ga/first_names_male +286 -286
  41. data/lib/ffaker/data/sport_ru/summer +68 -0
  42. data/lib/ffaker/data/sport_ru/winter +20 -0
  43. data/lib/ffaker/freedom_ipsum.rb +1 -1
  44. data/lib/ffaker/game.rb +33 -0
  45. data/lib/ffaker/gender_it.rb +17 -0
  46. data/lib/ffaker/gender_ru.rb +22 -0
  47. data/lib/ffaker/html_ipsum.rb +7 -1
  48. data/lib/ffaker/identification_it.rb +30 -0
  49. data/lib/ffaker/identification_tw.rb +3 -2
  50. data/lib/ffaker/job_it.rb +12 -0
  51. data/lib/ffaker/lorem_br.rb +45 -0
  52. data/lib/ffaker/lorem_it.rb +39 -0
  53. data/lib/ffaker/name_th_en.rb +1 -1
  54. data/lib/ffaker/number.rb +26 -0
  55. data/lib/ffaker/phone_number_it.rb +8 -6
  56. data/lib/ffaker/sport_ru.rb +25 -0
  57. data/lib/ffaker/ssn_se.rb +0 -19
  58. data/lib/ffaker/string.rb +6 -6
  59. data/lib/ffaker/time.rb +1 -1
  60. data/lib/ffaker/utils/array_utils.rb +1 -1
  61. data/lib/ffaker/utils/module_utils.rb +23 -3
  62. data/lib/ffaker/utils/unique_utils.rb +1 -0
  63. data/lib/ffaker/vehicle.rb +63 -1
  64. data/lib/ffaker.rb +15 -3
  65. data/lib/version.rb +1 -1
  66. data/scripts/profiling.rb +1 -1
  67. data/scripts/reference.rb +16 -15
  68. data/test/helper.rb +1 -1
  69. data/test/test_address.rb +1 -1
  70. data/test/test_address_au.rb +1 -1
  71. data/test/test_address_br.rb +16 -3
  72. data/test/test_address_ca.rb +1 -1
  73. data/test/test_address_ch.rb +1 -1
  74. data/test/test_address_ch_de.rb +1 -1
  75. data/test/test_address_ch_fr.rb +1 -1
  76. data/test/test_address_ch_it.rb +1 -1
  77. data/test/test_address_da.rb +1 -1
  78. data/test/test_address_de.rb +1 -1
  79. data/test/test_address_fi.rb +1 -1
  80. data/test/test_address_fr.rb +1 -1
  81. data/test/test_address_gr.rb +1 -1
  82. data/test/test_address_id.rb +1 -1
  83. data/test/test_address_in.rb +1 -1
  84. data/test/test_address_it.rb +12 -0
  85. data/test/test_address_ja.rb +1 -1
  86. data/test/test_address_kr.rb +1 -1
  87. data/test/test_address_mx.rb +1 -1
  88. data/test/test_address_nl.rb +1 -1
  89. data/test/test_address_pl.rb +1 -1
  90. data/test/test_address_ru.rb +1 -1
  91. data/test/test_address_se.rb +1 -1
  92. data/test/test_address_sn.rb +1 -1
  93. data/test/test_address_ua.rb +1 -1
  94. data/test/test_address_uk.rb +1 -1
  95. data/test/test_address_us.rb +1 -1
  96. data/test/test_airline.rb +1 -1
  97. data/test/test_animal.rb +1 -1
  98. data/test/test_animal_br.rb +17 -0
  99. data/test/test_animal_cn.rb +1 -1
  100. data/test/test_animal_es.rb +1 -1
  101. data/test/test_animal_pl.rb +1 -1
  102. data/test/test_animal_us.rb +1 -1
  103. data/test/test_array_utils.rb +2 -1
  104. data/test/test_avatar.rb +1 -1
  105. data/test/test_aws.rb +1 -1
  106. data/test/test_bacon_ipsum.rb +1 -1
  107. data/test/test_bank.rb +1 -1
  108. data/test/test_book.rb +1 -1
  109. data/test/test_boolean.rb +1 -1
  110. data/test/test_cheesy_lingo.rb +1 -1
  111. data/test/test_code.rb +1 -1
  112. data/test/test_color.rb +1 -1
  113. data/test/test_color_pl.rb +1 -1
  114. data/test/test_color_ua.rb +1 -1
  115. data/test/test_company.rb +1 -1
  116. data/test/test_company_cn.rb +1 -1
  117. data/test/test_company_fr.rb +33 -0
  118. data/test/test_company_it.rb +1 -1
  119. data/test/test_company_ja.rb +1 -1
  120. data/test/test_company_se.rb +1 -1
  121. data/test/test_conference.rb +1 -1
  122. data/test/test_course_mathematiques.rb +1 -1
  123. data/test/test_course_philosophie.rb +1 -1
  124. data/test/test_currency.rb +1 -1
  125. data/test/test_dizzle_ipsum.rb +1 -1
  126. data/test/test_education.rb +1 -1
  127. data/test/test_education_cn.rb +1 -1
  128. data/test/test_ffaker.rb +1 -1
  129. data/test/test_filesystem.rb +1 -1
  130. data/test/test_food.rb +1 -1
  131. data/test/test_food_pl.rb +1 -1
  132. data/test/test_freedom_ipsum.rb +1 -1
  133. data/test/test_game.rb +28 -0
  134. data/test/test_gender.rb +2 -2
  135. data/test/test_gender_br.rb +1 -1
  136. data/test/test_gender_cn.rb +1 -1
  137. data/test/test_gender_id.rb +1 -1
  138. data/test/test_gender_it.rb +27 -0
  139. data/test/test_gender_ja.rb +1 -1
  140. data/test/test_gender_jp.rb +1 -1
  141. data/test/test_gender_kr.rb +1 -1
  142. data/test/test_gender_pl.rb +1 -1
  143. data/test/test_gender_ru.rb +23 -0
  144. data/test/test_geolocation.rb +1 -1
  145. data/test/test_guid.rb +1 -1
  146. data/test/test_healthcare_ipsum.rb +1 -1
  147. data/test/test_healthcare_ru.rb +1 -1
  148. data/test/test_hipster_ipsum.rb +1 -1
  149. data/test/test_html_ipsum.rb +7 -1
  150. data/test/test_identification.rb +1 -1
  151. data/test/test_identification_br.rb +1 -1
  152. data/test/test_identification_co.rb +1 -1
  153. data/test/test_identification_es.rb +1 -1
  154. data/test/test_identification_es_cl.rb +1 -1
  155. data/test/test_identification_es_mx.rb +1 -1
  156. data/test/test_identification_in.rb +1 -1
  157. data/test/test_identification_it.rb +34 -0
  158. data/test/test_identification_kr.rb +1 -1
  159. data/test/test_identification_tw.rb +1 -1
  160. data/test/test_image.rb +1 -1
  161. data/test/test_internet.rb +1 -1
  162. data/test/test_internet_se.rb +1 -1
  163. data/test/test_job.rb +1 -1
  164. data/test/test_job_br.rb +1 -1
  165. data/test/test_job_cn.rb +1 -1
  166. data/test/test_job_fr.rb +1 -1
  167. data/test/test_job_it.rb +17 -0
  168. data/test/test_job_ja.rb +1 -1
  169. data/test/test_job_kr.rb +1 -1
  170. data/test/test_job_vn.rb +1 -1
  171. data/test/test_locale.rb +1 -1
  172. data/test/test_lorem.rb +1 -1
  173. data/test/test_lorem_ar.rb +1 -1
  174. data/test/test_lorem_br.rb +62 -0
  175. data/test/test_lorem_cn.rb +1 -1
  176. data/test/test_lorem_fr.rb +1 -1
  177. data/test/test_lorem_ie.rb +1 -1
  178. data/test/test_lorem_it.rb +51 -0
  179. data/test/test_lorem_ja.rb +1 -1
  180. data/test/test_lorem_kr.rb +1 -1
  181. data/test/test_lorem_pl.rb +1 -1
  182. data/test/test_lorem_ru.rb +1 -1
  183. data/test/test_lorem_ua.rb +1 -1
  184. data/test/test_module_utils.rb +1 -1
  185. data/test/test_movie.rb +1 -1
  186. data/test/test_music.rb +1 -1
  187. data/test/test_name.rb +1 -1
  188. data/test/test_name_ar.rb +1 -1
  189. data/test/test_name_br.rb +1 -1
  190. data/test/test_name_cn.rb +1 -1
  191. data/test/test_name_cs.rb +1 -1
  192. data/test/test_name_da.rb +1 -1
  193. data/test/test_name_de.rb +1 -1
  194. data/test/test_name_es.rb +1 -1
  195. data/test/test_name_fr.rb +1 -1
  196. data/test/test_name_ga.rb +1 -1
  197. data/test/test_name_gr.rb +1 -1
  198. data/test/test_name_id.rb +1 -1
  199. data/test/test_name_it.rb +1 -1
  200. data/test/test_name_ja.rb +1 -1
  201. data/test/test_name_kh.rb +1 -1
  202. data/test/test_name_kr.rb +1 -1
  203. data/test/test_name_mx.rb +1 -1
  204. data/test/test_name_nb.rb +1 -1
  205. data/test/test_name_nl.rb +1 -1
  206. data/test/test_name_ph.rb +1 -1
  207. data/test/test_name_pl.rb +1 -1
  208. data/test/test_name_ru.rb +1 -1
  209. data/test/test_name_se.rb +1 -1
  210. data/test/test_name_sn.rb +1 -1
  211. data/test/test_name_th.rb +1 -1
  212. data/test/test_name_th_en.rb +1 -1
  213. data/test/test_name_tw.rb +1 -1
  214. data/test/test_name_ua.rb +1 -1
  215. data/test/test_name_vn.rb +1 -1
  216. data/test/test_nato_alphabet.rb +1 -1
  217. data/test/test_number.rb +45 -0
  218. data/test/test_phone_number.rb +1 -1
  219. data/test/test_phone_number_au.rb +1 -1
  220. data/test/test_phone_number_br.rb +1 -1
  221. data/test/test_phone_number_cu.rb +1 -1
  222. data/test/test_phone_number_da.rb +1 -1
  223. data/test/test_phone_number_de.rb +1 -1
  224. data/test/test_phone_number_fr.rb +1 -1
  225. data/test/test_phone_number_id.rb +1 -1
  226. data/test/test_phone_number_it.rb +12 -0
  227. data/test/test_phone_number_ja.rb +1 -1
  228. data/test/test_phone_number_kr.rb +1 -1
  229. data/test/test_phone_number_mx.rb +1 -1
  230. data/test/test_phone_number_nl.rb +1 -1
  231. data/test/test_phone_number_pl.rb +1 -1
  232. data/test/test_phone_number_se.rb +1 -1
  233. data/test/test_phone_number_sg.rb +1 -1
  234. data/test/test_phone_number_sn.rb +1 -1
  235. data/test/test_phone_number_tw.rb +1 -1
  236. data/test/test_phone_number_ua.rb +1 -1
  237. data/test/test_products.rb +1 -1
  238. data/test/test_sem_ver.rb +1 -1
  239. data/test/test_skill.rb +1 -1
  240. data/test/test_sport_pl.rb +1 -1
  241. data/test/test_sport_ru.rb +30 -0
  242. data/test/test_sport_us.rb +1 -1
  243. data/test/test_sports.rb +1 -1
  244. data/test/test_ssn.rb +1 -1
  245. data/test/test_ssn_mx.rb +1 -1
  246. data/test/test_ssn_se.rb +1 -1
  247. data/test/test_string.rb +1 -1
  248. data/test/test_time.rb +1 -1
  249. data/test/test_tweet.rb +1 -1
  250. data/test/test_unique_utils.rb +1 -1
  251. data/test/test_units.rb +2 -1
  252. data/test/test_units_english.rb +1 -1
  253. data/test/test_units_metric.rb +1 -1
  254. data/test/test_vehicle.rb +7 -2
  255. data/test/test_venue.rb +1 -1
  256. data/test/test_youtube.rb +1 -1
  257. metadata +216 -160
data/ffaker.gemspec CHANGED
@@ -1,8 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- lib = File.expand_path('lib', __dir__)
4
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
- require 'version'
3
+ require_relative 'lib/version'
6
4
 
7
5
  Gem::Specification.new do |s|
8
6
  s.specification_version = 2 if s.respond_to? :specification_version=
@@ -11,7 +9,6 @@ Gem::Specification.new do |s|
11
9
 
12
10
  s.name = 'ffaker'
13
11
  s.version = FFaker::VERSION
14
- s.date = '2021-02-21'
15
12
  s.required_ruby_version = '>= 2.5'
16
13
 
17
14
  s.license = 'MIT'
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'ffaker/address'
3
+ require_relative 'address'
4
4
 
5
5
  module FFaker
6
6
  module AddressAU
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'ffaker/address'
3
+ require_relative 'address'
4
4
 
5
5
  module FFaker
6
6
  module AddressBR
@@ -38,8 +38,20 @@ module FFaker
38
38
  end
39
39
  end
40
40
 
41
- def full_address
42
- "#{street}, #{building_number}, #{city}, #{state}, Brazil"
41
+ def complement
42
+ FFaker.numerify(fetch_sample(COMPLEMENT))
43
+ end
44
+
45
+ def neighborhood
46
+ prefix = fetch_sample(NEIGHBORHOOD_PREFIXES)
47
+ "#{prefix} #{NameBR.first_name}"
48
+ end
49
+
50
+ def full_address(with_complement: false)
51
+ base_address_order = [street, building_number, neighborhood, city, state, 'Brazil']
52
+ return base_address_order.join(', ') unless with_complement
53
+
54
+ base_address_order.insert(2, complement).join(', ')
43
55
  end
44
56
  end
45
57
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'ffaker/address'
3
+ require_relative 'address'
4
4
 
5
5
  module FFaker
6
6
  module AddressCA
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ module FFaker
4
+ module AddressIT
5
+ extend ModuleUtils
6
+ extend self
7
+
8
+ NUM = ['#', '##', '##', '###', '####', '#-##'].freeze
9
+ SEP = [', ', ' '].freeze
10
+ TYPE = %w[via viale piazza piazzale].freeze
11
+ POSTAL_CODE_FORMATS = ['#####'].freeze
12
+
13
+ def street_address
14
+ FFaker.numerify(fetch_sample(NUM)) +
15
+ fetch_sample(SEP) +
16
+ fetch_sample(TYPE) + ' ' +
17
+ FFaker::NameIT.name
18
+ end
19
+
20
+ def postal_code
21
+ FFaker.numerify(fetch_sample(POSTAL_CODE_FORMATS))
22
+ end
23
+
24
+ def city
25
+ fetch_sample(CITY)
26
+ end
27
+
28
+ def full_address
29
+ %(#{street_address}#{fetch_sample(SEP)}#{postal_code} #{fetch_sample(CITY)})
30
+ end
31
+
32
+ def region
33
+ fetch_sample(REGION)
34
+ end
35
+ end
36
+ end
@@ -24,14 +24,8 @@ module FFaker
24
24
 
25
25
  def municipality(st_abbr = nil)
26
26
  st_abbr ||= state_abbr
27
- MUNICIPALITY[st_abbr][rand(0...MUNICIPALITY[st_abbr].size)]
27
+ municipalities = Object.const_get("FFaker::AddressMX::#{st_abbr.upcase}")
28
+ fetch_sample(municipalities)
28
29
  end
29
-
30
- MUNICIPALITY = { 'AGS' => AGS, 'BC' => BC, 'BCS' => BCS, 'CAMP' => CAMP, 'CHIS' => CHIS,
31
- 'CHIH' => CHIH, 'COAH' => COAH, 'COL' => COL, 'DF' => DF, 'DGO' => DGO, 'GRO' => GRO,
32
- 'GTO' => GTO, 'HGO' => HGO, 'JAL' => JAL, 'MEX' => MEX, 'MICH' => MICH, 'MOR' => MOR,
33
- 'NL' => NL, 'NAY' => NAY, 'OAX' => OAX, 'PUE' => PUE, 'QR' => QR, 'QRO' => QRO, 'SLP' => SLP,
34
- 'SIN' => SIN, 'SON' => SON, 'TAB' => TAB, 'TAMPS' => TAMPS, 'TLAX' => TLAX, 'VER' => VER,
35
- 'YUC' => YUC, 'ZAC' => ZAC }.freeze
36
30
  end
37
31
  end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module FFaker
4
+ module AnimalBR
5
+ extend ModuleUtils
6
+ extend self
7
+
8
+ def common_name
9
+ fetch_sample(COMMON_NAMES)
10
+ end
11
+ end
12
+ end
@@ -35,12 +35,9 @@ module FFaker
35
35
 
36
36
  def position
37
37
  case rand(0..2)
38
- when 0 then
39
- [fetch_sample(POSITION_PREFIXES), fetch_sample(POSITIONS)]
40
- when 1 then
41
- [fetch_sample(POSITION_AREAS), fetch_sample(POSITIONS)]
42
- when 2 then
43
- [fetch_sample(POSITION_PREFIXES), fetch_sample(POSITION_AREAS), fetch_sample(POSITIONS)]
38
+ when 0 then [fetch_sample(POSITION_PREFIXES), fetch_sample(POSITIONS)]
39
+ when 1 then [fetch_sample(POSITION_AREAS), fetch_sample(POSITIONS)]
40
+ when 2 then [fetch_sample(POSITION_PREFIXES), fetch_sample(POSITION_AREAS), fetch_sample(POSITIONS)]
44
41
  end.join(' ')
45
42
  end
46
43
  end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ module FFaker
4
+ module CompanyFR
5
+ extend ModuleUtils
6
+ extend self
7
+
8
+ SUFFIXES = %w[SA et\ fils SARL Groupe].freeze
9
+
10
+ def name
11
+ case rand(0..2)
12
+ when 0 then "#{NameFR.last_name} #{suffix}"
13
+ when 1 then "#{NameFR.last_name}-#{NameFR.last_name}"
14
+ when 2 then format('%s, %s and %s', NameFR.last_name, NameFR.last_name, NameFR.last_name)
15
+ end
16
+ end
17
+
18
+ def suffix
19
+ fetch_sample(SUFFIXES)
20
+ end
21
+
22
+ # Get a random French SIREN number. See more here https://fr.wikipedia.org/wiki/Syst%C3%A8me_d%27identification_du_r%C3%A9pertoire_des_entreprises
23
+ def siren
24
+ base = FFaker.numerify('########')
25
+ base + luhn_check(base).to_s
26
+ end
27
+
28
+ # Produces a company french siret number.
29
+ def siret
30
+ location = rand(0..99).to_s.rjust(4, '0')
31
+ org_no = siren + location
32
+ org_no + luhn_check(org_no).to_s
33
+ end
34
+ end
35
+ end
@@ -5,6 +5,7 @@ module FFaker
5
5
  module Mathematiques
6
6
  extend ModuleUtils
7
7
  extend self
8
+
8
9
  def lesson
9
10
  fetch_sample(LESSONS)
10
11
  end
@@ -13,6 +14,7 @@ module FFaker
13
14
  module Philosophie
14
15
  extend ModuleUtils
15
16
  extend self
17
+
16
18
  def lesson
17
19
  fetch_sample(LESSONS)
18
20
  end
@@ -297,4 +297,3 @@ Piraquara
297
297
  Lagarto
298
298
  Assis
299
299
  Iguatu
300
- Portland
@@ -0,0 +1,3 @@
1
+ Apartamento ###
2
+ Casa Térrea
3
+ Fundos
@@ -0,0 +1,3 @@
1
+ Vila
2
+ Parque
3
+ Jardim
@@ -19,7 +19,7 @@ Piauí
19
19
  Rio de Janeiro
20
20
  Rio Grande do Norte
21
21
  Rio Grande do Sul
22
- Rondonia
22
+ Rondônia
23
23
  Roraima
24
24
  Santa Catarina
25
25
  Sergipe
@@ -0,0 +1,111 @@
1
+ Agrigento
2
+ Alessandria
3
+ Ancona
4
+ Arezzo
5
+ Ascoli Piceno
6
+ Asti
7
+ Avellino
8
+ Bari
9
+ Barletta Andria Trani
10
+ Belluno
11
+ Benevento
12
+ Bergamo
13
+ Biella
14
+ Bologna
15
+ Bolzano
16
+ Brescia
17
+ Brindisi
18
+ Cagliari
19
+ Caltanissetta
20
+ Campobasso
21
+ Carbonia-Iglesias
22
+ Caserta
23
+ Catania
24
+ Catanzaro
25
+ Chieti
26
+ Como
27
+ Cosenza
28
+ Cremona
29
+ Crotone
30
+ Cuneo
31
+ Enna
32
+ Fermo
33
+ Ferrara
34
+ Firenze
35
+ Foggia
36
+ Forlì Cesena
37
+ Frosinone
38
+ Genova
39
+ Gorizia
40
+ Grosseto
41
+ Imperia
42
+ Isernia
43
+ L'Aquila
44
+ La Spezia
45
+ Latina
46
+ Lecce
47
+ Lecco
48
+ Livorno
49
+ Lodi
50
+ Lucca
51
+ Macerata
52
+ Mantova
53
+ Massa Carrara
54
+ Matera
55
+ Medio Campidano
56
+ Messina
57
+ Milano
58
+ Modena
59
+ Monza e Della Brianza
60
+ Napoli
61
+ Novara
62
+ Nuoro
63
+ Ogliastra
64
+ Olbia-Tempio
65
+ Oristano
66
+ Padova
67
+ Palermo
68
+ Parma
69
+ Pavia
70
+ Perugia
71
+ Pesaro Urbino
72
+ Pescara
73
+ Piacenza
74
+ Pisa
75
+ Pistoia
76
+ Pordenone
77
+ Potenza
78
+ Prato
79
+ Ragusa
80
+ Ravenna
81
+ Reggio Calabria
82
+ Reggio Emilia
83
+ Rieti
84
+ Rimini
85
+ Roma
86
+ Rovigo
87
+ Salerno
88
+ Sassari
89
+ Savona
90
+ Siena
91
+ Siracusa
92
+ Sondrio
93
+ Sud Sardegna
94
+ Taranto
95
+ Teramo
96
+ Terni
97
+ Torino
98
+ Trapani
99
+ Trento
100
+ Treviso
101
+ Trieste
102
+ Udine
103
+ Valle d'Aosta
104
+ Varese
105
+ Venezia
106
+ Verbano-Cusio-Ossola
107
+ Vercelli
108
+ Verona
109
+ Vibo Valentia
110
+ Vicenza
111
+ Viterbo
@@ -0,0 +1,20 @@
1
+ Abruzzo
2
+ Basilicata
3
+ Calabria
4
+ Campania
5
+ Emilia-Romagna
6
+ Friuli-Venezia Giulia
7
+ Lazio
8
+ Liguria
9
+ Lombardia
10
+ Marche
11
+ Molise
12
+ Piemonte
13
+ Puglia
14
+ Sardegna
15
+ Sicilia
16
+ Toscana
17
+ Trentino-Alto Adige
18
+ Umbria
19
+ Valle d'Aosta
20
+ Veneto