First commit
This commit is contained in:
		
						commit
						30531311bb
					
				
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1 @@
 | 
			
		|||
/target
 | 
			
		||||
							
								
								
									
										8
									
								
								.idea/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								.idea/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,8 @@
 | 
			
		|||
# Default ignored files
 | 
			
		||||
/shelf/
 | 
			
		||||
/workspace.xml
 | 
			
		||||
# Editor-based HTTP Client requests
 | 
			
		||||
/httpRequests/
 | 
			
		||||
# Datasource local storage ignored files
 | 
			
		||||
/dataSources/
 | 
			
		||||
/dataSources.local.xml
 | 
			
		||||
							
								
								
									
										8
									
								
								.idea/modules.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								.idea/modules.xml
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,8 @@
 | 
			
		|||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<project version="4">
 | 
			
		||||
  <component name="ProjectModuleManager">
 | 
			
		||||
    <modules>
 | 
			
		||||
      <module fileurl="file://$PROJECT_DIR$/.idea/rust-name-gen.iml" filepath="$PROJECT_DIR$/.idea/rust-name-gen.iml" />
 | 
			
		||||
    </modules>
 | 
			
		||||
  </component>
 | 
			
		||||
</project>
 | 
			
		||||
							
								
								
									
										11
									
								
								.idea/rust-name-gen.iml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								.idea/rust-name-gen.iml
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,11 @@
 | 
			
		|||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<module type="EMPTY_MODULE" version="4">
 | 
			
		||||
  <component name="NewModuleRootManager">
 | 
			
		||||
    <content url="file://$MODULE_DIR$">
 | 
			
		||||
      <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
 | 
			
		||||
      <excludeFolder url="file://$MODULE_DIR$/target" />
 | 
			
		||||
    </content>
 | 
			
		||||
    <orderEntry type="inheritedJdk" />
 | 
			
		||||
    <orderEntry type="sourceFolder" forTests="false" />
 | 
			
		||||
  </component>
 | 
			
		||||
</module>
 | 
			
		||||
							
								
								
									
										6
									
								
								.idea/vcs.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								.idea/vcs.xml
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,6 @@
 | 
			
		|||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<project version="4">
 | 
			
		||||
  <component name="VcsDirectoryMappings">
 | 
			
		||||
    <mapping directory="" vcs="Git" />
 | 
			
		||||
  </component>
 | 
			
		||||
</project>
 | 
			
		||||
							
								
								
									
										1593
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										1593
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										12
									
								
								Cargo.toml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								Cargo.toml
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,12 @@
 | 
			
		|||
[package]
 | 
			
		||||
name = "rust-name-gen"
 | 
			
		||||
version = "0.1.0"
 | 
			
		||||
edition = "2021"
 | 
			
		||||
 | 
			
		||||
[dependencies]
 | 
			
		||||
actix-web = "4"
 | 
			
		||||
anyhow = "1.0.95"
 | 
			
		||||
rand = "0.8.5"
 | 
			
		||||
rust-embed = "8.5.0"
 | 
			
		||||
serde = { version = "1.0", features = ["derive"] }
 | 
			
		||||
serde_json = "1.0"
 | 
			
		||||
							
								
								
									
										9
									
								
								bruno/NameGen/bruno.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								bruno/NameGen/bruno.json
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,9 @@
 | 
			
		|||
{
 | 
			
		||||
  "version": "1",
 | 
			
		||||
  "name": "NameGen",
 | 
			
		||||
  "type": "collection",
 | 
			
		||||
  "ignore": [
 | 
			
		||||
    "node_modules",
 | 
			
		||||
    ".git"
 | 
			
		||||
  ]
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										19
									
								
								bruno/NameGen/index.bru
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								bruno/NameGen/index.bru
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,19 @@
 | 
			
		|||
meta {
 | 
			
		||||
  name: index
 | 
			
		||||
  type: http
 | 
			
		||||
  seq: 2
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
get {
 | 
			
		||||
  url: 127.0.0.1:8080
 | 
			
		||||
  body: json
 | 
			
		||||
  auth: none
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
body:json {
 | 
			
		||||
  {
 | 
			
		||||
    "qty": 50,
 | 
			
		||||
    "gender": "f",
 | 
			
		||||
    "dictionaries": ["prenom", "patronyme", "virgule", "article", "commun", "adjectif", "ppasse", "ppresent"]
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										23589
									
								
								dictionaries/adjectifs_feminins.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23589
									
								
								dictionaries/adjectifs_feminins.json
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										22633
									
								
								dictionaries/adjectifs_masculins.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22633
									
								
								dictionaries/adjectifs_masculins.json
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										35410
									
								
								dictionaries/communs_feminins.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35410
									
								
								dictionaries/communs_feminins.json
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										34784
									
								
								dictionaries/communs_masculins.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34784
									
								
								dictionaries/communs_masculins.json
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										61958
									
								
								dictionaries/patronymes.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										61958
									
								
								dictionaries/patronymes.json
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										11058
									
								
								dictionaries/ppasses_feminins.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11058
									
								
								dictionaries/ppasses_feminins.json
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										11970
									
								
								dictionaries/ppasses_masculins.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11970
									
								
								dictionaries/ppasses_masculins.json
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										11939
									
								
								dictionaries/ppresents_feminins.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11939
									
								
								dictionaries/ppresents_feminins.json
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										11939
									
								
								dictionaries/ppresents_masculins.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11939
									
								
								dictionaries/ppresents_masculins.json
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										285
									
								
								dictionaries/prenoms_feminins.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										285
									
								
								dictionaries/prenoms_feminins.json
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,285 @@
 | 
			
		|||
[
 | 
			
		||||
  "Adélaïde",
 | 
			
		||||
  "Adèle",
 | 
			
		||||
  "Adeline",
 | 
			
		||||
  "Adrienne",
 | 
			
		||||
  "Agathe",
 | 
			
		||||
  "Agnès",
 | 
			
		||||
  "Aimée",
 | 
			
		||||
  "Albertine",
 | 
			
		||||
  "Alexandrie",
 | 
			
		||||
  "Aline",
 | 
			
		||||
  "Alphonsine",
 | 
			
		||||
  "Amarante",
 | 
			
		||||
  "Ambre",
 | 
			
		||||
  "Amélie",
 | 
			
		||||
  "Anastasie",
 | 
			
		||||
  "Andrée",
 | 
			
		||||
  "Angèle",
 | 
			
		||||
  "Angeline",
 | 
			
		||||
  "Angelique",
 | 
			
		||||
  "Anne",
 | 
			
		||||
  "Annette",
 | 
			
		||||
  "Antoinette",
 | 
			
		||||
  "Apolline",
 | 
			
		||||
  "Arianne",
 | 
			
		||||
  "Arienne",
 | 
			
		||||
  "Arlette",
 | 
			
		||||
  "Armelle",
 | 
			
		||||
  "Arnaude",
 | 
			
		||||
  "Aude",
 | 
			
		||||
  "Aurélie",
 | 
			
		||||
  "Aurore",
 | 
			
		||||
  "Avril",
 | 
			
		||||
  "Axelle",
 | 
			
		||||
  "Béatrice",
 | 
			
		||||
  "Bénédicte",
 | 
			
		||||
  "Benjamine",
 | 
			
		||||
  "Benoite",
 | 
			
		||||
  "Bernadette",
 | 
			
		||||
  "Berthe",
 | 
			
		||||
  "Blanche",
 | 
			
		||||
  "Camille",
 | 
			
		||||
  "Carine",
 | 
			
		||||
  "Carole",
 | 
			
		||||
  "Caroline",
 | 
			
		||||
  "Cécile",
 | 
			
		||||
  "Céleste",
 | 
			
		||||
  "Célestine",
 | 
			
		||||
  "Céline",
 | 
			
		||||
  "Cerise",
 | 
			
		||||
  "Chantal",
 | 
			
		||||
  "Chanté",
 | 
			
		||||
  "Charline",
 | 
			
		||||
  "Charlotte",
 | 
			
		||||
  "Chloé",
 | 
			
		||||
  "Christelle",
 | 
			
		||||
  "Christine",
 | 
			
		||||
  "Claire",
 | 
			
		||||
  "Clarisse",
 | 
			
		||||
  "Claude",
 | 
			
		||||
  "Claudette",
 | 
			
		||||
  "Claudine",
 | 
			
		||||
  "Clémence",
 | 
			
		||||
  "Clementine",
 | 
			
		||||
  "Clothilde",
 | 
			
		||||
  "Colette",
 | 
			
		||||
  "Colombe",
 | 
			
		||||
  "Corinne",
 | 
			
		||||
  "Cosette",
 | 
			
		||||
  "Cunégonde",
 | 
			
		||||
  "Cyrille",
 | 
			
		||||
  "Danièle",
 | 
			
		||||
  "Danielle",
 | 
			
		||||
  "Delphine",
 | 
			
		||||
  "Denise",
 | 
			
		||||
  "Désirée",
 | 
			
		||||
  "Diane",
 | 
			
		||||
  "Dianne",
 | 
			
		||||
  "Dieudonnée",
 | 
			
		||||
  "Dominique",
 | 
			
		||||
  "Donatienne",
 | 
			
		||||
  "Doriane",
 | 
			
		||||
  "Dorothée",
 | 
			
		||||
  "Édith",
 | 
			
		||||
  "Edwige",
 | 
			
		||||
  "Eléonore",
 | 
			
		||||
  "Éliane",
 | 
			
		||||
  "Élise",
 | 
			
		||||
  "Élodie",
 | 
			
		||||
  "Éloise",
 | 
			
		||||
  "Emeline",
 | 
			
		||||
  "Émilie",
 | 
			
		||||
  "Emmanuelle",
 | 
			
		||||
  "Esmé",
 | 
			
		||||
  "Esmée",
 | 
			
		||||
  "Eugénie",
 | 
			
		||||
  "Eulalie",
 | 
			
		||||
  "Evette",
 | 
			
		||||
  "Fabienne",
 | 
			
		||||
  "Faustine",
 | 
			
		||||
  "Félicie",
 | 
			
		||||
  "Felicienne",
 | 
			
		||||
  "Fernande",
 | 
			
		||||
  "Fifi",
 | 
			
		||||
  "Flavie",
 | 
			
		||||
  "Florette",
 | 
			
		||||
  "Florianne",
 | 
			
		||||
  "Francine",
 | 
			
		||||
  "Françoise",
 | 
			
		||||
  "Frédérique",
 | 
			
		||||
  "Gabrielle",
 | 
			
		||||
  "Gaetane",
 | 
			
		||||
  "Geneviève",
 | 
			
		||||
  "Georgette",
 | 
			
		||||
  "Georgine",
 | 
			
		||||
  "Germaine",
 | 
			
		||||
  "Gervaise",
 | 
			
		||||
  "Ghislaine",
 | 
			
		||||
  "Gigi",
 | 
			
		||||
  "Gilberte",
 | 
			
		||||
  "Gisèle",
 | 
			
		||||
  "Giselle",
 | 
			
		||||
  "Gisselle",
 | 
			
		||||
  "Gwenaelle",
 | 
			
		||||
  "Hélène",
 | 
			
		||||
  "Héloïse",
 | 
			
		||||
  "Henriette",
 | 
			
		||||
  "Honorine",
 | 
			
		||||
  "Hortense",
 | 
			
		||||
  "Hyacinthe",
 | 
			
		||||
  "Inès",
 | 
			
		||||
  "Irène",
 | 
			
		||||
  "Irénée",
 | 
			
		||||
  "Jacinthe",
 | 
			
		||||
  "Jacqueline",
 | 
			
		||||
  "Jeanine",
 | 
			
		||||
  "Jeanne",
 | 
			
		||||
  "Jeannette",
 | 
			
		||||
  "Jeannine",
 | 
			
		||||
  "Joceline",
 | 
			
		||||
  "Joelle",
 | 
			
		||||
  "Jolie",
 | 
			
		||||
  "Josée",
 | 
			
		||||
  "Josèphe",
 | 
			
		||||
  "Joséphine",
 | 
			
		||||
  "Josette",
 | 
			
		||||
  "Josiane",
 | 
			
		||||
  "Juliane",
 | 
			
		||||
  "Julie",
 | 
			
		||||
  "Julienne",
 | 
			
		||||
  "Juliette",
 | 
			
		||||
  "Justine",
 | 
			
		||||
  "Laure",
 | 
			
		||||
  "Laurence",
 | 
			
		||||
  "Laurentine",
 | 
			
		||||
  "Laurette",
 | 
			
		||||
  "Léa",
 | 
			
		||||
  "Léonie",
 | 
			
		||||
  "Léonne",
 | 
			
		||||
  "Léontine",
 | 
			
		||||
  "Liane",
 | 
			
		||||
  "Lisette",
 | 
			
		||||
  "Louise",
 | 
			
		||||
  "Luce",
 | 
			
		||||
  "Lucie",
 | 
			
		||||
  "Lucienne",
 | 
			
		||||
  "Lucile",
 | 
			
		||||
  "Lucille",
 | 
			
		||||
  "Lucinde",
 | 
			
		||||
  "Lucrece",
 | 
			
		||||
  "Lunete",
 | 
			
		||||
  "Lydie",
 | 
			
		||||
  "Madeleine",
 | 
			
		||||
  "Madeline",
 | 
			
		||||
  "Manon",
 | 
			
		||||
  "Marceline",
 | 
			
		||||
  "Marcelle",
 | 
			
		||||
  "Marcellette",
 | 
			
		||||
  "Marcelline",
 | 
			
		||||
  "Margot",
 | 
			
		||||
  "Marguerite",
 | 
			
		||||
  "Marianne",
 | 
			
		||||
  "Marie",
 | 
			
		||||
  "Marielle",
 | 
			
		||||
  "Mariette",
 | 
			
		||||
  "Marine",
 | 
			
		||||
  "Marise",
 | 
			
		||||
  "Marthe",
 | 
			
		||||
  "Martine",
 | 
			
		||||
  "Mathilde",
 | 
			
		||||
  "Maximilienne",
 | 
			
		||||
  "Mélanie",
 | 
			
		||||
  "Mélissa",
 | 
			
		||||
  "Michèle",
 | 
			
		||||
  "Micheline",
 | 
			
		||||
  "Michelle",
 | 
			
		||||
  "Mignon",
 | 
			
		||||
  "Mirabelle",
 | 
			
		||||
  "Mireille",
 | 
			
		||||
  "Monique",
 | 
			
		||||
  "Morgaine",
 | 
			
		||||
  "Morgane",
 | 
			
		||||
  "Myriam",
 | 
			
		||||
  "Nadia",
 | 
			
		||||
  "Nadine",
 | 
			
		||||
  "Natalie",
 | 
			
		||||
  "Nathalie",
 | 
			
		||||
  "Nicole",
 | 
			
		||||
  "Nicolette",
 | 
			
		||||
  "Ninette",
 | 
			
		||||
  "Ninon",
 | 
			
		||||
  "Noella",
 | 
			
		||||
  "Noelle",
 | 
			
		||||
  "Noémie",
 | 
			
		||||
  "Océane",
 | 
			
		||||
  "Odette",
 | 
			
		||||
  "Odile",
 | 
			
		||||
  "Olivie",
 | 
			
		||||
  "Olympe",
 | 
			
		||||
  "Oriane",
 | 
			
		||||
  "Orianne",
 | 
			
		||||
  "Osanne",
 | 
			
		||||
  "Ouida",
 | 
			
		||||
  "Ozanne",
 | 
			
		||||
  "Pascale",
 | 
			
		||||
  "Pascaline",
 | 
			
		||||
  "Paule",
 | 
			
		||||
  "Paulette",
 | 
			
		||||
  "Pauline",
 | 
			
		||||
  "Pénélope",
 | 
			
		||||
  "Perrine",
 | 
			
		||||
  "Philippine",
 | 
			
		||||
  "Placide",
 | 
			
		||||
  "Raymonde",
 | 
			
		||||
  "Rébecca",
 | 
			
		||||
  "Régine",
 | 
			
		||||
  "Reine",
 | 
			
		||||
  "Renée",
 | 
			
		||||
  "Rochelle",
 | 
			
		||||
  "Rolande",
 | 
			
		||||
  "Romaine",
 | 
			
		||||
  "Rosalie",
 | 
			
		||||
  "Roselle",
 | 
			
		||||
  "Rosemonde",
 | 
			
		||||
  "Rosette",
 | 
			
		||||
  "Rosine",
 | 
			
		||||
  "Roxane",
 | 
			
		||||
  "Sabine",
 | 
			
		||||
  "Sacha",
 | 
			
		||||
  "Salomé",
 | 
			
		||||
  "Sandrine",
 | 
			
		||||
  "Sébastienne",
 | 
			
		||||
  "Seraphine",
 | 
			
		||||
  "Sévérine",
 | 
			
		||||
  "Sidonie",
 | 
			
		||||
  "Simone",
 | 
			
		||||
  "Solange",
 | 
			
		||||
  "Sophie",
 | 
			
		||||
  "Stéphanie",
 | 
			
		||||
  "Suzanne",
 | 
			
		||||
  "Suzette",
 | 
			
		||||
  "Sylvaine",
 | 
			
		||||
  "Sylviane",
 | 
			
		||||
  "Sylvianne",
 | 
			
		||||
  "Sylvie",
 | 
			
		||||
  "Tatienne",
 | 
			
		||||
  "Thérèse",
 | 
			
		||||
  "Toinette",
 | 
			
		||||
  "Valentine",
 | 
			
		||||
  "Valérie",
 | 
			
		||||
  "Véronique",
 | 
			
		||||
  "Victoire",
 | 
			
		||||
  "Victorine",
 | 
			
		||||
  "Vienne",
 | 
			
		||||
  "Violette",
 | 
			
		||||
  "Virginie",
 | 
			
		||||
  "Vivien",
 | 
			
		||||
  "Vivienne",
 | 
			
		||||
  "Yolande",
 | 
			
		||||
  "Yseult",
 | 
			
		||||
  "Yvette",
 | 
			
		||||
  "Yvonne",
 | 
			
		||||
  "Zephyrine",
 | 
			
		||||
  "Zoé"
 | 
			
		||||
  ]
 | 
			
		||||
							
								
								
									
										204
									
								
								dictionaries/prenoms_masculins.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										204
									
								
								dictionaries/prenoms_masculins.json
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,204 @@
 | 
			
		|||
[
 | 
			
		||||
  "Absolon",
 | 
			
		||||
  "Achille",
 | 
			
		||||
  "Adolphe",
 | 
			
		||||
  "Adrien",
 | 
			
		||||
  "Aimé",
 | 
			
		||||
  "Alain",
 | 
			
		||||
  "Alexandre",
 | 
			
		||||
  "Alphonse",
 | 
			
		||||
  "Amaury",
 | 
			
		||||
  "Ambroise",
 | 
			
		||||
  "Amédée",
 | 
			
		||||
  "Anatole",
 | 
			
		||||
  "André",
 | 
			
		||||
  "Anselme",
 | 
			
		||||
  "Antoine",
 | 
			
		||||
  "Apollinaire",
 | 
			
		||||
  "Aristide",
 | 
			
		||||
  "Armand",
 | 
			
		||||
  "Armel",
 | 
			
		||||
  "Arnaud",
 | 
			
		||||
  "Auguste",
 | 
			
		||||
  "Augustin",
 | 
			
		||||
  "Aurèle",
 | 
			
		||||
  "Aurelien",
 | 
			
		||||
  "Baptiste",
 | 
			
		||||
  "Barnabé",
 | 
			
		||||
  "Barthélémy",
 | 
			
		||||
  "Basile",
 | 
			
		||||
  "Bastien",
 | 
			
		||||
  "Baudouin",
 | 
			
		||||
  "Benoit",
 | 
			
		||||
  "Bertrand",
 | 
			
		||||
  "Blaise",
 | 
			
		||||
  "Brice",
 | 
			
		||||
  "Camille",
 | 
			
		||||
  "Célestin",
 | 
			
		||||
  "Cesaire",
 | 
			
		||||
  "César",
 | 
			
		||||
  "Charlot",
 | 
			
		||||
  "Christophe",
 | 
			
		||||
  "Claude",
 | 
			
		||||
  "Clément",
 | 
			
		||||
  "Colombain",
 | 
			
		||||
  "Colombe",
 | 
			
		||||
  "Constantin",
 | 
			
		||||
  "Corin",
 | 
			
		||||
  "Cyrille",
 | 
			
		||||
  "Damien",
 | 
			
		||||
  "Denis",
 | 
			
		||||
  "Désiré",
 | 
			
		||||
  "Didier",
 | 
			
		||||
  "Dieudonné",
 | 
			
		||||
  "Diodore",
 | 
			
		||||
  "Dion",
 | 
			
		||||
  "Dominique",
 | 
			
		||||
  "Donat",
 | 
			
		||||
  "Donatien",
 | 
			
		||||
  "Edgard",
 | 
			
		||||
  "Edmond",
 | 
			
		||||
  "Édouard",
 | 
			
		||||
  "Eloi",
 | 
			
		||||
  "Émile",
 | 
			
		||||
  "Émilien",
 | 
			
		||||
  "Ermenegilde",
 | 
			
		||||
  "Esmé",
 | 
			
		||||
  "Étienne",
 | 
			
		||||
  "Eugène",
 | 
			
		||||
  "Eustache",
 | 
			
		||||
  "Évariste",
 | 
			
		||||
  "Evrard",
 | 
			
		||||
  "Fabien",
 | 
			
		||||
  "Fabrice",
 | 
			
		||||
  "Felicien",
 | 
			
		||||
  "Félix",
 | 
			
		||||
  "Fernand",
 | 
			
		||||
  "Fiacre",
 | 
			
		||||
  "Firmin",
 | 
			
		||||
  "Florentin",
 | 
			
		||||
  "Franck",
 | 
			
		||||
  "François",
 | 
			
		||||
  "Frédéric",
 | 
			
		||||
  "Gaétan",
 | 
			
		||||
  "Gaspard",
 | 
			
		||||
  "Gaston",
 | 
			
		||||
  "Gautier",
 | 
			
		||||
  "Geoffroi",
 | 
			
		||||
  "Georges",
 | 
			
		||||
  "Gérald",
 | 
			
		||||
  "Gérard",
 | 
			
		||||
  "Géraud",
 | 
			
		||||
  "Germain",
 | 
			
		||||
  "Gervais",
 | 
			
		||||
  "Ghislain",
 | 
			
		||||
  "Gilles",
 | 
			
		||||
  "Godelieve",
 | 
			
		||||
  "Gratien",
 | 
			
		||||
  "Grégoire",
 | 
			
		||||
  "Guillaume",
 | 
			
		||||
  "Gustave",
 | 
			
		||||
  "Henri",
 | 
			
		||||
  "Hercule",
 | 
			
		||||
  "Hervé",
 | 
			
		||||
  "Hilaire",
 | 
			
		||||
  "Honoré",
 | 
			
		||||
  "Hugues",
 | 
			
		||||
  "Ignace",
 | 
			
		||||
  "Iréné",
 | 
			
		||||
  "Jacques",
 | 
			
		||||
  "Jean",
 | 
			
		||||
  "Jean-Baptiste",
 | 
			
		||||
  "Jean-Marie",
 | 
			
		||||
  "Jean-Pierre",
 | 
			
		||||
  "Jeannot",
 | 
			
		||||
  "Jérémie",
 | 
			
		||||
  "Jérôme",
 | 
			
		||||
  "Joël",
 | 
			
		||||
  "Jourdain",
 | 
			
		||||
  "Jules",
 | 
			
		||||
  "Julien",
 | 
			
		||||
  "Juste",
 | 
			
		||||
  "Laurent",
 | 
			
		||||
  "Lazare",
 | 
			
		||||
  "Léandre",
 | 
			
		||||
  "Léon",
 | 
			
		||||
  "Léonard",
 | 
			
		||||
  "Léonce",
 | 
			
		||||
  "Léopold",
 | 
			
		||||
  "Lionel",
 | 
			
		||||
  "Loic",
 | 
			
		||||
  "Lothaire",
 | 
			
		||||
  "Louis",
 | 
			
		||||
  "Loup",
 | 
			
		||||
  "Luc",
 | 
			
		||||
  "Lucien",
 | 
			
		||||
  "Marc",
 | 
			
		||||
  "Marcel",
 | 
			
		||||
  "Marcellin",
 | 
			
		||||
  "Marin",
 | 
			
		||||
  "Mathieu",
 | 
			
		||||
  "Matthieu",
 | 
			
		||||
  "Maxime",
 | 
			
		||||
  "Maximilien",
 | 
			
		||||
  "Michel",
 | 
			
		||||
  "Modeste",
 | 
			
		||||
  "Modestine",
 | 
			
		||||
  "Narcisse",
 | 
			
		||||
  "Nazaire",
 | 
			
		||||
  "Nicodème",
 | 
			
		||||
  "Nicolas",
 | 
			
		||||
  "Noé",
 | 
			
		||||
  "Noel",
 | 
			
		||||
  "Olivier",
 | 
			
		||||
  "Onesime",
 | 
			
		||||
  "Osanne",
 | 
			
		||||
  "Ozanne",
 | 
			
		||||
  "Papillion",
 | 
			
		||||
  "Pascal",
 | 
			
		||||
  "Paschal",
 | 
			
		||||
  "Patrice",
 | 
			
		||||
  "Perceval",
 | 
			
		||||
  "Philibert",
 | 
			
		||||
  "Philippe",
 | 
			
		||||
  "Pierre",
 | 
			
		||||
  "Pons",
 | 
			
		||||
  "Prosper",
 | 
			
		||||
  "Rainier",
 | 
			
		||||
  "Raoul",
 | 
			
		||||
  "Raphaël",
 | 
			
		||||
  "Régis",
 | 
			
		||||
  "Rémi",
 | 
			
		||||
  "Rémy",
 | 
			
		||||
  "Renard",
 | 
			
		||||
  "Renaud",
 | 
			
		||||
  "René",
 | 
			
		||||
  "Reynaud",
 | 
			
		||||
  "Roch",
 | 
			
		||||
  "Rodolphe",
 | 
			
		||||
  "Rodrigue",
 | 
			
		||||
  "Romain",
 | 
			
		||||
  "Sacha",
 | 
			
		||||
  "Sébastien",
 | 
			
		||||
  "Serge",
 | 
			
		||||
  "Séverin",
 | 
			
		||||
  "Stéphane",
 | 
			
		||||
  "Sylvain",
 | 
			
		||||
  "Sylvestre",
 | 
			
		||||
  "Telesphore",
 | 
			
		||||
  "Theirn",
 | 
			
		||||
  "Théo",
 | 
			
		||||
  "Théodore",
 | 
			
		||||
  "Théophile",
 | 
			
		||||
  "Thibault",
 | 
			
		||||
  "Thierry",
 | 
			
		||||
  "Timothée",
 | 
			
		||||
  "Toussaint",
 | 
			
		||||
  "Urbain",
 | 
			
		||||
  "Valère",
 | 
			
		||||
  "Valéry",
 | 
			
		||||
  "Vespasien",
 | 
			
		||||
  "Vivien",
 | 
			
		||||
  "Yves",
 | 
			
		||||
  "Zacharie"
 | 
			
		||||
  ]
 | 
			
		||||
							
								
								
									
										107
									
								
								src/main.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										107
									
								
								src/main.rs
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,107 @@
 | 
			
		|||
use std::{collections::HashMap, str::from_utf8};
 | 
			
		||||
 | 
			
		||||
use actix_web::{get, web, App, HttpResponse, HttpServer};
 | 
			
		||||
use rand::seq::SliceRandom;
 | 
			
		||||
use rust_embed::Embed;
 | 
			
		||||
use serde::{Deserialize, Serialize};
 | 
			
		||||
 | 
			
		||||
static ARTICLE: &str = "<article>";
 | 
			
		||||
 | 
			
		||||
#[derive(Embed)]
 | 
			
		||||
#[folder = "dictionaries/"]
 | 
			
		||||
struct Dictionaries;
 | 
			
		||||
 | 
			
		||||
#[derive(Debug, Serialize, Deserialize)]
 | 
			
		||||
struct NameGenQuery {
 | 
			
		||||
    dictionaries: Vec<String>,
 | 
			
		||||
    gender: String,
 | 
			
		||||
    qty: Option<u8>,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[get("/")]
 | 
			
		||||
async fn index(query: web::Json<NameGenQuery>) -> HttpResponse {
 | 
			
		||||
    // Load the dictionaries into memory
 | 
			
		||||
    let mut dictionaries = HashMap::new();
 | 
			
		||||
    for filename in Dictionaries::iter() {
 | 
			
		||||
        if let Some(file) = Dictionaries::get(&filename) {
 | 
			
		||||
            let data = from_utf8(file.data.as_ref()).unwrap();
 | 
			
		||||
            dictionaries.insert(filename.to_string(), serde_json::from_str::<Vec<String>>(data).unwrap());
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    let qty = query.0.qty.unwrap_or(10).min(50).max(1);
 | 
			
		||||
    let gender = match query.0.gender.as_str() {
 | 
			
		||||
        "m" => "masculins",
 | 
			
		||||
        "f" => "feminins",
 | 
			
		||||
        _ => "masculins",
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    // Limit to 10 parts max
 | 
			
		||||
    let mut chosen_dicts = query.0.dictionaries;
 | 
			
		||||
    chosen_dicts.truncate(10);
 | 
			
		||||
 | 
			
		||||
    let mut names = vec![];
 | 
			
		||||
 | 
			
		||||
    for _ in 0..qty {
 | 
			
		||||
        let mut parts = vec![];
 | 
			
		||||
 | 
			
		||||
        for dict in chosen_dicts.iter() {
 | 
			
		||||
            let filename = match dict.as_str() {
 | 
			
		||||
                "adjectif" | "commun" | "ppasse" | "ppresent" | "prenom" => {
 | 
			
		||||
                    Some(format!("{dict}s_{gender}.json"))
 | 
			
		||||
                }
 | 
			
		||||
                "patronyme" => Some(format!("{dict}s.json")),
 | 
			
		||||
                "article" => Some(ARTICLE.to_string()),
 | 
			
		||||
                "virgule" => Some(",".to_string()),
 | 
			
		||||
                _ => None,
 | 
			
		||||
            };
 | 
			
		||||
            if let Some(filename) = filename {
 | 
			
		||||
                if let Some(data) = dictionaries.get(&filename) {
 | 
			
		||||
                    let item = data.choose(&mut rand::thread_rng()).unwrap();
 | 
			
		||||
                    parts.push(item.to_string())
 | 
			
		||||
                } else {
 | 
			
		||||
                    parts.push(filename)
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // Replace the <article> with le/la/l'
 | 
			
		||||
        let mut to_replace = vec![];
 | 
			
		||||
        for (i, item) in parts.iter().enumerate() {
 | 
			
		||||
            if item == ARTICLE {
 | 
			
		||||
                // Check the next word
 | 
			
		||||
                if let Some(next) = parts.get(i + 1) {
 | 
			
		||||
                    if next
 | 
			
		||||
                        .starts_with(|c| vec!['a', 'e', 'i', 'o', 'u', 'é', 'è', 'ê', 'h'].contains(&c))
 | 
			
		||||
                    {
 | 
			
		||||
                        to_replace.push((i, "l'"));
 | 
			
		||||
                    } else {
 | 
			
		||||
                        to_replace.push((i, (if gender == "masculins" { "le" } else { "la" })))
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        for item in to_replace.iter() {
 | 
			
		||||
            parts[item.0] = item.1.to_string();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        let joined = parts
 | 
			
		||||
            .join(" ")
 | 
			
		||||
            // Remove space after "l'"
 | 
			
		||||
            .replace("l' ", "l'")
 | 
			
		||||
            // Remove space before comma
 | 
			
		||||
            .replace(" ,", ",");
 | 
			
		||||
 | 
			
		||||
        names.push(joined);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    HttpResponse::Ok().json(names)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[actix_web::main] // or #[tokio::main]
 | 
			
		||||
async fn main() -> std::io::Result<()> {
 | 
			
		||||
    HttpServer::new(|| App::new().service(index))
 | 
			
		||||
        .bind(("127.0.0.1", 8080))?
 | 
			
		||||
        .run()
 | 
			
		||||
        .await
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user