dada_poem_generator/
lib.rs1use rand::seq::SliceRandom;
2use rand::thread_rng;
3use regex::Regex;
4
5pub fn dada(text: &str) -> String {
6 let not_words_re = Regex::new(r"\W").unwrap();
7 let words_re = Regex::new(r"\w+").unwrap();
8 let template_re = Regex::new("~").unwrap();
9
10 let words = not_words_re.split(text.clone()).collect::<Vec<_>>();
11 let mut useful_words = words.into_iter().filter(|&i| i != "").collect::<Vec<_>>();
12
13 let mut rng = thread_rng();
14 useful_words.shuffle(&mut rng);
15
16 let mut template = words_re.replace_all(text.clone(), "~").into_owned();
17
18 for replacement_word in useful_words {
19 template = template_re.replace(&template, replacement_word).into_owned();
20 }
21
22 template
23}