ffaker 2.18.0 → 2.21.0

Sign up to get free protection for your applications and to get access to all the features.
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