zayef 0.1.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 (75) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +47 -0
  3. data/README.md +210 -0
  4. data/Rakefile +161 -0
  5. data/cliff.toml +65 -0
  6. data/demo.rb +26 -0
  7. data/lib/zayef/generator.rb +399 -0
  8. data/lib/zayef/version.rb +5 -0
  9. data/lib/zayef.rb +113 -0
  10. data/sig/zayef.rbs +4 -0
  11. data/vendor/bundle/ruby/3.0.0/bin/rake +29 -0
  12. data/vendor/bundle/ruby/3.0.0/cache/rake-13.3.0.gem +0 -0
  13. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/History.rdoc +2454 -0
  14. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/MIT-LICENSE +21 -0
  15. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/README.rdoc +155 -0
  16. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/doc/command_line_usage.rdoc +158 -0
  17. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/doc/example/Rakefile1 +38 -0
  18. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/doc/example/Rakefile2 +35 -0
  19. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/doc/example/a.c +6 -0
  20. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/doc/example/b.c +6 -0
  21. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/doc/example/main.c +11 -0
  22. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/doc/glossary.rdoc +42 -0
  23. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/doc/jamis.rb +592 -0
  24. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/doc/proto_rake.rdoc +127 -0
  25. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/doc/rake.1 +156 -0
  26. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/doc/rakefile.rdoc +622 -0
  27. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/doc/rational.rdoc +151 -0
  28. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/exe/rake +27 -0
  29. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/application.rb +854 -0
  30. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/backtrace.rb +25 -0
  31. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/clean.rb +78 -0
  32. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/cloneable.rb +17 -0
  33. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/cpu_counter.rb +122 -0
  34. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/default_loader.rb +15 -0
  35. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/dsl_definition.rb +196 -0
  36. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/early_time.rb +22 -0
  37. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/ext/core.rb +26 -0
  38. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/ext/string.rb +176 -0
  39. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/file_creation_task.rb +25 -0
  40. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/file_list.rb +435 -0
  41. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/file_task.rb +58 -0
  42. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/file_utils.rb +132 -0
  43. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/file_utils_ext.rb +134 -0
  44. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/invocation_chain.rb +57 -0
  45. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/invocation_exception_mixin.rb +17 -0
  46. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/late_time.rb +18 -0
  47. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/linked_list.rb +112 -0
  48. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/loaders/makefile.rb +54 -0
  49. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/multi_task.rb +14 -0
  50. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/name_space.rb +38 -0
  51. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/packagetask.rb +222 -0
  52. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/phony.rb +16 -0
  53. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/private_reader.rb +21 -0
  54. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/promise.rb +100 -0
  55. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/pseudo_status.rb +30 -0
  56. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/rake_module.rb +67 -0
  57. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/rake_test_loader.rb +27 -0
  58. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/rule_recursion_overflow_error.rb +20 -0
  59. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/scope.rb +43 -0
  60. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/task.rb +434 -0
  61. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/task_argument_error.rb +8 -0
  62. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/task_arguments.rb +113 -0
  63. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/task_manager.rb +331 -0
  64. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/tasklib.rb +12 -0
  65. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/testtask.rb +189 -0
  66. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/thread_history_display.rb +49 -0
  67. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/thread_pool.rb +163 -0
  68. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/trace_output.rb +23 -0
  69. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/version.rb +10 -0
  70. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/win32.rb +51 -0
  71. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake.rb +68 -0
  72. data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/rake.gemspec +101 -0
  73. data/vendor/bundle/ruby/3.0.0/specifications/rake-13.3.0.gemspec +26 -0
  74. data/zayef.gemspec +40 -0
  75. metadata +121 -0
@@ -0,0 +1,399 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Zayef
4
+ class Generator
5
+ # Moroccan first names (authentic and common) - EXTENDED LIST
6
+ MOROCCAN_FIRST_NAMES = %w[
7
+ Ayoub Youssef Mohamed Ahmed Omar Hassan Ali Khalid Rachid
8
+ Abdelkader Abdelmoumen Abdelhak Abdelaziz Abdelouahed
9
+ Mustapha Brahim Reda Karim Anas Adil Yassine Nabil
10
+ Said Ismail Jamal Saad Soufiane Hamza Bilal Mehdi
11
+ Younes Ilyas Zakaria Ilyesse Tarik Noureddine Abdelilah
12
+ Mohammed Brahim Idriss Abdeljalil Abdelghani Abdelmajid
13
+ Fatima Zahra Aicha Khadija Malika Noura Salma Imane
14
+ Amina Soukaina Kawtar Houda Naima Hanane Latifa Zineb
15
+ Jamila Zakia Samira Nadia Farida Rachida Hakima
16
+ Laila Leila Hind Sana Sanaa Leila Sabah Meryem
17
+ Karima Fatiha Najat Hayat Hayat Rabia Asmaa
18
+ Nouria Badia Bahia Faiza Widad Wafa Asma
19
+ Rahma Safia Halima Abla Basma Loubna Nouha
20
+ Safaa Najwa Najiba Mouna Mounia Raja Rajaa
21
+ Sabah Sabah Racha Racha Rima Rima Lina Lina
22
+ Sara Sarah Yasmina Yasmeen Lamia Lamya
23
+ ].freeze
24
+
25
+ # Moroccan last names (authentic family names) - EXTENDED LIST
26
+ MOROCCAN_LAST_NAMES = [
27
+ "Alaoui", "Bennani", "El Fassi", "Idrissi", "Kabbaj", "Lamrani", "Mansouri",
28
+ "Benjelloun", "Chakir", "El Idrissi", "Haddouchi", "Kettani", "Laraki",
29
+ "Belhaj", "Belkadi", "Benkirane", "Benchekroun", "Benabdellah",
30
+ "Cherkaoui", "El Moutawakil", "El Amrani", "El Ouafi", "El Bachiri",
31
+ "Benali", "Benmansour", "Benhassan", "Benbrahim", "Benmoussa",
32
+ "El Khadiri", "El Yousfi", "El Haddadi", "El Kabbaj", "El Mansouri",
33
+ "Chraibi", "Berrada", "El Amraoui", "El Haouzi", "El Ouazzani",
34
+ "Tazi", "Alaoui", "Bennouna", "El Glaoui", "Bouazza",
35
+ "Bouabid", "Bouazza", "El Azzouzi", "El Arrousi",
36
+ "El Malki", "El Mansouri", "El Ouardi", "El Ouazzani",
37
+ "Benabbou", "Benabdeljalil", "Benachour", "Benadada",
38
+ "Benallal", "Benamara", "Benamghar", "Benanou",
39
+ "Benbachir", "Benbarka", "Benbouazza", "Benbrahim",
40
+ "Benchekroun", "Bendaoud", "Bendriss", "Benfares",
41
+ "Benhaddou", "Benhamou", "Benharbit", "Benjelloun",
42
+ "Benkirane", "Benmoha", "Benmoussa", "Bennani",
43
+ "Bennouna", "Benomar", "Benouhoud", "Bensalem",
44
+ "Benslimane", "Bentaleb", "Berada", "Berrada",
45
+ "Bouachrine", "Bouazza", "Bouazzati", "Boudraa",
46
+ "Boufous", "Bouhaddou", "Bouhlal", "Boujemaa",
47
+ "Boukhalef", "Boukhris", "Boulaich", "Boulahfa",
48
+ "Boumakh", "Boumediene", "Bounaim", "Bououid",
49
+ "Boussaid", "Boussetta", "Boutaleb", "Bouyaghchi",
50
+ "Chahboun", "Chahine", "Chaoui", "Cherkaoui",
51
+ "Chraibi", "Dahbi", "Dahmani", "Darif",
52
+ "Dkhissi", "Doukkali", "Echkoun", "El Adraoui",
53
+ "El Alaoui", "El Amraoui", "El Amrani", "El Azzouzi",
54
+ "El Bachiri", "El Bakkali", "El Barkani", "El Bouhali",
55
+ "El Fadili", "El Fassi", "El Glaoui", "El Hachimi",
56
+ "El Idrissi", "El Kadiri", "El Khattabi", "El Malki",
57
+ "El Mansouri", "El Ouafi", "El Ouazzani", "El Yamani"
58
+ ].freeze
59
+
60
+ # Moroccan cities (all major and medium cities) - EXTENDED LIST
61
+ MOROCCAN_CITIES = [
62
+ "Casablanca", "Rabat", "Marrakech", "Fès", "Meknès", "Agadir", "Tanger",
63
+ "Oujda", "Kenitra", "Tétouan", "Safi", "Mohammedia", "El Jadida",
64
+ "Beni Mellal", "Khouribga", "Settat", "Larache", "Ksar El Kebir",
65
+ "Nador", "Berkane", "Errachidia", "Khemisset", "Ifrane", "Azrou",
66
+ "Chefchaouen", "Al Hoceima", "Taza", "Sidi Kacem", "El Kelaa",
67
+ "Ben Slimane", "Khémisset", "Sidi Bennour", "Youssoufia",
68
+ "Guelmim", "Taroudant", "Tinghir", "Zagora", "Sidi Ifni",
69
+ "Laâyoune", "Dakhla", "Boujdour", "Tan-Tan",
70
+ "Taourirt", "Ouarzazate", "Midelt", "Figuig", "Jerada",
71
+ "Sefrou", "Boulemane", "Taounate", "Guercif", "Imzouren",
72
+ "Fnideq", "Martil", "Saidia", "Ahfir", "Aklim",
73
+ "Tiznit", "Chtouka", "Ait Baha", "Biougra",
74
+ "Tata", "Foum Zguid", "Assa", "Zag",
75
+ "Smara", "Boukraa", "Bir Anzarane",
76
+ "Skhirat", "Temara", "Sale", "Skhirat",
77
+ "Bouskoura", "Mediouna", "Tit Mellil",
78
+ "Aïn Harrouda", "Harhoura", "Moulay Bousselham",
79
+ "Souk El Arbaa", "El Jadida", "Dar Bouazza",
80
+ "El Mansouria", "Bouskoura", "Mediouna",
81
+ "Nouaceur", "Berrechid", "Ben Ahmed",
82
+ "El Gara", "Bouknadel", "Skhirat", "Temara"
83
+ ].freeze
84
+
85
+ # Moroccan phone prefixes
86
+ MOROCCAN_PHONE_PREFIXES = %w[06 07].freeze
87
+
88
+ class << self
89
+ def name
90
+ "#{first_name} #{last_name}"
91
+ end
92
+
93
+ def first_name
94
+ MOROCCAN_FIRST_NAMES.sample
95
+ end
96
+
97
+ def last_name
98
+ MOROCCAN_LAST_NAMES.sample
99
+ end
100
+
101
+ def email(first_name: nil, last_name: nil)
102
+ first = first_name || self.first_name.downcase
103
+ last = last_name || self.last_name.downcase
104
+
105
+ # Moroccan domains and common international domains used in Morocco
106
+ domains = %w[
107
+ gmail.com yahoo.fr hotmail.com menara.ma
108
+ inwi.ma iam.ma orange.ma
109
+ ]
110
+
111
+ "#{first}.#{last}@#{domains.sample}"
112
+ end
113
+
114
+ def phone
115
+ prefix = MOROCCAN_PHONE_PREFIXES.sample
116
+ number = rand(10000000..99999999)
117
+ "#{prefix}#{number}"
118
+ end
119
+
120
+ def city
121
+ MOROCCAN_CITIES.sample
122
+ end
123
+
124
+ def address
125
+ # Authentic Moroccan street names
126
+ streets = %w[
127
+ Av. Hassan II Rue Mohammed V Bd. Zerktouni
128
+ Rue de la Liberté Bd. Mohammed VI
129
+ Rue Allal Ben Abdellah Bd. Abdelkrim Khattabi
130
+ Rue Moulay Ismail Bd. Al Massira Al Khadra
131
+ Rue Ahmed Reda Guedira Bd. Abdelmoumen
132
+ Rue Ibn Sina Bd. Mohammed V
133
+ Rue Moulay Rachid Bd. Hassan I
134
+ Rue Ahmed Chaouki Bd. Zerktouni
135
+ ]
136
+ street = streets.sample
137
+ number = rand(1..500)
138
+ "#{number}, #{street}, #{city}"
139
+ end
140
+
141
+ def cni_number
142
+ # Moroccan CNI format: 2 letters + 6 digits (authentic format)
143
+ letters = ('A'..'Z').to_a.sample(2).join
144
+ numbers = rand(100000..999999)
145
+ "#{letters}#{numbers}"
146
+ end
147
+
148
+ def bank_account
149
+ # Moroccan bank account format (simplified)
150
+ "MA#{rand(100000000000000000..999999999999999999)}"
151
+ end
152
+
153
+ # Additional Moroccan-specific data generators
154
+
155
+ def postal_code
156
+ # Moroccan postal codes (5 digits)
157
+ rand(10000..99999).to_s
158
+ end
159
+
160
+ def company_name
161
+ # Moroccan company name patterns
162
+ prefixes = %w[Groupe Société Entreprise]
163
+ suffixes = %w[Maroc Maghreb Atlas Rif]
164
+ sectors = %w[Commerce Industrie Services Immobilier]
165
+
166
+ pattern = rand(3)
167
+ case pattern
168
+ when 0
169
+ "#{prefixes.sample} #{suffixes.sample}"
170
+ when 1
171
+ "#{sectors.sample} #{city}"
172
+ else
173
+ "#{last_name} #{sectors.sample}"
174
+ end
175
+ end
176
+
177
+ def region
178
+ # Moroccan regions
179
+ regions = %w[
180
+ Casablanca-Settat Rabat-Salé-Kénitra
181
+ Fès-Meknès Marrakech-Safi
182
+ Tanger-Tétouan-Al Hoceïma
183
+ Oriental Béni Mellal-Khénifra
184
+ Drâa-Tafilalet Souss-Massa
185
+ Guelmim-Oued Noun Laâyoune-Sakia El Hamra
186
+ Dakhla-Oued Ed-Dahab
187
+ ]
188
+ regions.sample
189
+ end
190
+
191
+ def university
192
+ # Moroccan universities
193
+ universities = %w[
194
+ "Université Mohammed V de Rabat" "Université Hassan II de Casablanca"
195
+ "Université Ibn Tofail de Kénitra" "Université Cadi Ayyad de Marrakech"
196
+ "Université Abdelmalek Essaâdi de Tanger" "Université Sidi Mohammed Ben Abdellah de Fès"
197
+ "Université Ibn Zohr d'Agadir" "Université Chouaib Doukkali d'El Jadida"
198
+ "Université Sultan Moulay Slimane de Beni Mellal" "Université Mohammed Premier d'Oujda"
199
+ "Université Hassan Ier de Settat" "École Polytechnique de l'Université Internationale de Rabat"
200
+ ]
201
+ universities.sample
202
+ end
203
+
204
+ # Additional rich Moroccan data generators
205
+
206
+ def neighborhood
207
+ # Famous Moroccan neighborhoods and districts
208
+ neighborhoods = %w[
209
+ Medina Gueliz Maarif Anfa Derb Sultan
210
+ Hay Hassani Sbata Lissasfa Ain Diab
211
+ Racine Bourgogne Palmier Californie
212
+ Ouasis Sidi Bernoussi Mers Sultan
213
+ Agdal Yacoub El Mansour Hassan
214
+ Souissi La Gironde El Oulfa
215
+ L'Hivernage Marjane Touarga
216
+ Massira Sidi Moumen Hay Mohammadi
217
+ Ben M'sick Sidi Othman El Harti
218
+ Tabriquet Les Princes Sidi Maârouf
219
+ Diour Jamaâ Hay El Hanaa
220
+ Errahma Hay El Farah
221
+ ]
222
+ neighborhoods.sample
223
+ end
224
+
225
+ def medical_specialty
226
+ # Moroccan medical specialties (since it's DabaDoc)
227
+ specialties = %w[
228
+ Médecine générale Pédiatrie Cardiologie
229
+ Dermatologie Ophtalmologie ORL
230
+ Gynécologie Obstétrique Chirurgie générale
231
+ Médecine interne Psychiatrie Radiologie
232
+ Anesthésie-réanimation Néphrologie
233
+ Hépatologie Gastro-entérologie Endocrinologie
234
+ Rhumatologie Neurologie Urologie
235
+ Traumatologie Orthopédie Chirurgie plastique
236
+ Chirurgie vasculaire Médecine du travail
237
+ Médecine légale Médecine nucléaire
238
+ Médecine physique Oncologie
239
+ ]
240
+ specialties.sample
241
+ end
242
+
243
+ def profession
244
+ # Common Moroccan professions
245
+ professions = %w[
246
+ Médecin Ingénieur Enseignant
247
+ Avocat Notaire Architecte
248
+ Pharmacien Commerçant Artisan
249
+ Agriculteur Fonctionnaire Journaliste
250
+ Banquier Comptable Informaticien
251
+ Électricien Plombier Menuisier
252
+ Coiffeur Serveur Chauffeur
253
+ Garde-malade Secrétaire Traducteur
254
+ Guide touristique Vendeur
255
+ ]
256
+ professions.sample
257
+ end
258
+
259
+ def traditional_dish
260
+ # Famous Moroccan traditional dishes
261
+ dishes = %w[
262
+ Couscous Tagine Pastilla Harira
263
+ Rfissa Tanjia Mechoui Briouates
264
+ Msemen Meloui Baghrir Khobz
265
+ Bissara Lentilles aux merguez
266
+ Khlia Merguez Sardines grillées
267
+ Daqous aux olives Kefta aux œufs
268
+ Poulet aux citrons confits
269
+ Tajine aux pruneaux Tajine aux abricots
270
+ Chorba frik Soupe de poisson
271
+ Maâqouda Zaalouk
272
+ ]
273
+ dishes.sample
274
+ end
275
+
276
+ def spice
277
+ # Moroccan spices and ingredients
278
+ spices = %w[
279
+ Ras-el-hanout Safran Cannelle
280
+ Curcuma Gingembre Paprika
281
+ Cumin Coriandre Cardamome
282
+ Muscade Poivre noir Piment
283
+ Fenouil Anis étoilé Clous de girofle
284
+ Laurier Citron confit Olives
285
+ Amandes Pistaches Noix
286
+ Miel d'oranger Fleur d'oranger
287
+ Huile d'argan Beurre clarifié
288
+ ]
289
+ spices.sample
290
+ end
291
+
292
+ def souk
293
+ # Famous Moroccan markets/souks
294
+ souks = %w[
295
+ Souk Semmarine Souk El Kébir Souk El Attarine
296
+ Souk Zitoun El Jdid Souk El Hadadine
297
+ Souk El Bahia Souk Smarine Souk El Ghezel
298
+ Souk El Koutoubine Souk El Abid
299
+ Souk Sebbaghine Souk Cherratine
300
+ Souk Nejjarine Marché Central
301
+ Souk Al Fassia Souk El Joutia
302
+ ]
303
+ souks.sample
304
+ end
305
+
306
+ def bank
307
+ # Moroccan banks
308
+ banks = %w[
309
+ "Attijariwafa Bank" "Banque Centrale Populaire"
310
+ "BMCI" "Banque Marocaine pour le Commerce et l'Industrie"
311
+ "Société Générale Maroc" "Crédit du Maroc"
312
+ "Banque Marocaine du Commerce Extérieur" "CIH Bank"
313
+ "Crédit Immobilier et Hôtelier" "Al Barid Bank"
314
+ "Bank Al Maghrib" "CFG Bank"
315
+ "Crédit Agricole du Maroc" "Umnia Bank"
316
+ ]
317
+ banks.sample
318
+ end
319
+
320
+ def restaurant
321
+ # Moroccan restaurant/café names
322
+ restaurants = %w[
323
+ "Café Clock" "Nomad" "Le Jardin"
324
+ "Café Bousafsaf" "Dar Moha" "Al Fassia"
325
+ "Café de France" "Le Jardin d'Essai"
326
+ "Café Hafa" "Nomad Café" "Dar Essalam"
327
+ "Café Central" "Le Jardin Secret"
328
+ "Café Arabe" "Dar El Hana"
329
+ ]
330
+ restaurants.sample
331
+ end
332
+
333
+ def hotel
334
+ # Moroccan hotels/riads
335
+ hotels = %w[
336
+ "Riad Kniza" "Palmeraie Palace"
337
+ "Hotel Sahrai" "Riad Al Fassia"
338
+ "Hotel El Andalous" "Riad El Cadi"
339
+ "Hotel Atlas Medina" "Riad Dar Anika"
340
+ "Hotel Nomade" "Riad Zitouna"
341
+ "Hotel Al Fassia" "Riad Les Jardin"
342
+ ]
343
+ hotels.sample
344
+ end
345
+
346
+ def mosque
347
+ # Famous Moroccan mosques
348
+ mosques = %w[
349
+ "Mosquée Hassan II" "Mosquée Koutoubia"
350
+ "Mosquée Al Quaraouiyine" "Mosquée Bahia"
351
+ "Mosquée Saadian" "Mosquée Moulay Idriss"
352
+ "Mosquée El Badi" "Mosquée Lalla Aouda"
353
+ "Mosquée Tin Mal" "Mosquée Nejjarine"
354
+ "Mosquée Cherratine" "Mosquée El Glaoui"
355
+ ]
356
+ mosques.sample
357
+ end
358
+
359
+ def school
360
+ # Moroccan schools and educational institutions
361
+ schools = %w[
362
+ "Lycée Descartes" "Lycée Lyautey"
363
+ "Lycée Moulay Youssef" "Lycée Mohammed V"
364
+ "École Américaine" "Lycée Français"
365
+ "École Mission La Sallle" "Lycée Victor Hugo"
366
+ "École Sainte Marie" "Lycée Ibn Khaldoun"
367
+ "École Al Khansaa" "Lycée Ibn Sina"
368
+ ]
369
+ schools.sample
370
+ end
371
+
372
+ def newspaper
373
+ # Moroccan newspapers and media
374
+ newspapers = %w[
375
+ "Le Matin" "L'Économiste"
376
+ "Libération" "Aujourd'hui le Maroc"
377
+ "Al Alam" "Assabah"
378
+ "Bayane Al Yaoum" "Al Akhbar"
379
+ "Al Massae" "Al Ahdath Al Maghribia"
380
+ "Al Ittihad Al Ichtiraki" "Rissalat Al Oumma"
381
+ ]
382
+ newspapers.sample
383
+ end
384
+
385
+ def festival
386
+ # Moroccan festivals and cultural events
387
+ festivals = %w[
388
+ "Festival de Marrakech" "Festival de Fès"
389
+ "Festival de Tan-Tan" "Festival de Rabat"
390
+ "Festival Mawazine" "Festival Jazzablanca"
391
+ "Festival de Taroudant" "Festival de Meknès"
392
+ "Festival de Ouarzazate" "Festival de Tanger"
393
+ "Festival de Chefchaouen" "Festival de Asilah"
394
+ ]
395
+ festivals.sample
396
+ end
397
+ end
398
+ end
399
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Zayef
4
+ VERSION = "0.1.0"
5
+ end
data/lib/zayef.rb ADDED
@@ -0,0 +1,113 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "zayef/version"
4
+ require_relative "zayef/generator"
5
+
6
+ module Zayef
7
+ class Error < StandardError; end
8
+
9
+ # Quick access to generator methods
10
+ def self.name
11
+ Generator.name
12
+ end
13
+
14
+ def self.first_name
15
+ Generator.first_name
16
+ end
17
+
18
+ def self.last_name
19
+ Generator.last_name
20
+ end
21
+
22
+ def self.email(**kwargs)
23
+ Generator.email(**kwargs)
24
+ end
25
+
26
+ def self.phone
27
+ Generator.phone
28
+ end
29
+
30
+ def self.city
31
+ Generator.city
32
+ end
33
+
34
+ def self.address
35
+ Generator.address
36
+ end
37
+
38
+ def self.cni_number
39
+ Generator.cni_number
40
+ end
41
+
42
+ def self.bank_account
43
+ Generator.bank_account
44
+ end
45
+
46
+ def self.postal_code
47
+ Generator.postal_code
48
+ end
49
+
50
+ def self.company_name
51
+ Generator.company_name
52
+ end
53
+
54
+ def self.region
55
+ Generator.region
56
+ end
57
+
58
+ def self.university
59
+ Generator.university
60
+ end
61
+
62
+ def self.neighborhood
63
+ Generator.neighborhood
64
+ end
65
+
66
+ def self.medical_specialty
67
+ Generator.medical_specialty
68
+ end
69
+
70
+ def self.profession
71
+ Generator.profession
72
+ end
73
+
74
+ def self.traditional_dish
75
+ Generator.traditional_dish
76
+ end
77
+
78
+ def self.spice
79
+ Generator.spice
80
+ end
81
+
82
+ def self.souk
83
+ Generator.souk
84
+ end
85
+
86
+ def self.bank
87
+ Generator.bank
88
+ end
89
+
90
+ def self.restaurant
91
+ Generator.restaurant
92
+ end
93
+
94
+ def self.hotel
95
+ Generator.hotel
96
+ end
97
+
98
+ def self.mosque
99
+ Generator.mosque
100
+ end
101
+
102
+ def self.school
103
+ Generator.school
104
+ end
105
+
106
+ def self.newspaper
107
+ Generator.newspaper
108
+ end
109
+
110
+ def self.festival
111
+ Generator.festival
112
+ end
113
+ end
data/sig/zayef.rbs ADDED
@@ -0,0 +1,4 @@
1
+ module Zayef
2
+ VERSION: String
3
+ # See the writing guide of rbs: https://github.com/ruby/rbs#guides
4
+ end
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/env ruby3.0
2
+ #
3
+ # This file was generated by RubyGems.
4
+ #
5
+ # The application 'rake' is installed as part of a gem, and
6
+ # this file is here to facilitate running it.
7
+ #
8
+
9
+ require 'rubygems'
10
+
11
+ Gem.use_gemdeps
12
+
13
+ version = ">= 0.a"
14
+
15
+ str = ARGV.first
16
+ if str
17
+ str = str.b[/\A_(.*)_\z/, 1]
18
+ if str and Gem::Version.correct?(str)
19
+ version = str
20
+ ARGV.shift
21
+ end
22
+ end
23
+
24
+ if Gem.respond_to?(:activate_bin_path)
25
+ load Gem.activate_bin_path('rake', 'rake', version)
26
+ else
27
+ gem "rake", version
28
+ load Gem.bin_path("rake", "rake", version)
29
+ end