esp_generate/lib.rs
1pub mod config;
2pub mod template;
3
4/// This turns a list of strings into a sentence, and appends it to the base string.
5///
6/// # Example
7///
8/// ```rust
9/// # use esp_generate::append_list_as_sentence;
10/// let list = &["foo", "bar", "baz"];
11/// let sentence = append_list_as_sentence("Here is a sentence.", "My elements are", list);
12/// assert_eq!(sentence, "Here is a sentence. My elements are `foo`, `bar` and `baz`.");
13/// ```
14pub fn append_list_as_sentence<S: AsRef<str>>(base: &str, word: &str, els: &[S]) -> String {
15 if !els.is_empty() {
16 let mut requires = String::new();
17
18 if !base.is_empty() {
19 requires.push_str(base);
20 requires.push(' ');
21 }
22
23 for (i, r) in els.iter().enumerate() {
24 if i == 0 {
25 requires.push_str(word);
26 requires.push(' ');
27 } else if i == els.len() - 1 {
28 requires.push_str(" and ");
29 } else {
30 requires.push_str(", ");
31 };
32
33 requires.push('`');
34 requires.push_str(r.as_ref());
35 requires.push('`');
36 }
37 requires.push('.');
38
39 requires
40 } else {
41 base.to_string()
42 }
43}