1use std::io;
2
3use io::BufWriter;
4use io::Write;
5
6use io::BufRead;
7
8use emojis::Emoji;
9
10pub fn code2emoji(code: &str) -> Option<&'static Emoji> {
11 emojis::get_by_shortcode(code)
12}
13
14pub fn codes2emojis2writer<I, W>(codes: I, mut wtr: W) -> Result<(), io::Error>
15where
16 I: Iterator<Item = Result<String, io::Error>>,
17 W: Write,
18{
19 for rline in codes {
20 let line: String = rline?;
21 let oe: Option<&Emoji> = code2emoji(&line);
22 if let Some(e) = oe {
23 writeln!(&mut wtr, "{e}")?;
24 }
25 }
26 wtr.flush()
27}
28
29pub fn stdin2codes2emojis2stdout() -> Result<(), io::Error> {
30 let il = io::stdin().lock();
31 let lines = il.lines();
32
33 let o = io::stdout();
34 let mut ol = o.lock();
35
36 codes2emojis2writer(lines, BufWriter::new(&mut ol))?;
37
38 ol.flush()
39}