1use std::io;
2
3use io::BufWriter;
4use io::Write;
5
6use io::BufRead;
7
8pub fn str2slug<S>(original: S) -> String
9where
10 S: AsRef<str>,
11{
12 slug::slugify(original)
13}
14
15pub fn strings2slugs2writer<I, W>(strings: I, mut wtr: W) -> Result<(), io::Error>
16where
17 I: Iterator<Item = Result<String, io::Error>>,
18 W: Write,
19{
20 for rline in strings {
21 let line: String = rline?;
22 let converted: String = str2slug(line);
23 writeln!(&mut wtr, "{converted}")?;
24 }
25 wtr.flush()
26}
27
28pub fn stdin2strings2slugs2stdout() -> Result<(), io::Error> {
29 let o = io::stdout();
30 let mut ol = o.lock();
31 strings2slugs2writer(io::stdin().lock().lines(), BufWriter::new(&mut ol))?;
32 ol.flush()
33}