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.
- checksums.yaml +7 -0
- data/CHANGELOG.md +47 -0
- data/README.md +210 -0
- data/Rakefile +161 -0
- data/cliff.toml +65 -0
- data/demo.rb +26 -0
- data/lib/zayef/generator.rb +399 -0
- data/lib/zayef/version.rb +5 -0
- data/lib/zayef.rb +113 -0
- data/sig/zayef.rbs +4 -0
- data/vendor/bundle/ruby/3.0.0/bin/rake +29 -0
- data/vendor/bundle/ruby/3.0.0/cache/rake-13.3.0.gem +0 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/History.rdoc +2454 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/MIT-LICENSE +21 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/README.rdoc +155 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/doc/command_line_usage.rdoc +158 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/doc/example/Rakefile1 +38 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/doc/example/Rakefile2 +35 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/doc/example/a.c +6 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/doc/example/b.c +6 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/doc/example/main.c +11 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/doc/glossary.rdoc +42 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/doc/jamis.rb +592 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/doc/proto_rake.rdoc +127 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/doc/rake.1 +156 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/doc/rakefile.rdoc +622 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/doc/rational.rdoc +151 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/exe/rake +27 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/application.rb +854 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/backtrace.rb +25 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/clean.rb +78 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/cloneable.rb +17 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/cpu_counter.rb +122 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/default_loader.rb +15 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/dsl_definition.rb +196 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/early_time.rb +22 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/ext/core.rb +26 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/ext/string.rb +176 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/file_creation_task.rb +25 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/file_list.rb +435 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/file_task.rb +58 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/file_utils.rb +132 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/file_utils_ext.rb +134 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/invocation_chain.rb +57 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/invocation_exception_mixin.rb +17 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/late_time.rb +18 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/linked_list.rb +112 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/loaders/makefile.rb +54 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/multi_task.rb +14 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/name_space.rb +38 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/packagetask.rb +222 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/phony.rb +16 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/private_reader.rb +21 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/promise.rb +100 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/pseudo_status.rb +30 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/rake_module.rb +67 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/rake_test_loader.rb +27 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/rule_recursion_overflow_error.rb +20 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/scope.rb +43 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/task.rb +434 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/task_argument_error.rb +8 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/task_arguments.rb +113 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/task_manager.rb +331 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/tasklib.rb +12 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/testtask.rb +189 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/thread_history_display.rb +49 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/thread_pool.rb +163 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/trace_output.rb +23 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/version.rb +10 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake/win32.rb +51 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/lib/rake.rb +68 -0
- data/vendor/bundle/ruby/3.0.0/gems/rake-13.3.0/rake.gemspec +101 -0
- data/vendor/bundle/ruby/3.0.0/specifications/rake-13.3.0.gemspec +26 -0
- data/zayef.gemspec +40 -0
- 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
|
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,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
|
Binary file
|