Skip to main content

rs_emoji_fromcode/
lib.rs

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}