dada_poem_generator/
lib.rs

1use 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}