Skip to main content

mdbook_journal/journal/topic/
cli_entry.rs

1use crate::prelude::*;
2
3pub struct CliEntryGeneration;
4
5pub fn std_io() -> CliEntryGeneration {
6    CliEntryGeneration
7}
8
9impl EntryGenerationTrait for CliEntryGeneration {
10    fn collect_value(&self, variable: &Variable) -> Result<Option<MetaValue>> {
11        use std::io::Write;
12        let stdout = &mut std::io::stdout();
13        let stdin = &mut std::io::stdin();
14        let data = &mut String::with_capacity(64);
15        write!(stdout, "({})❯ ", variable.key())?;
16        stdout.flush()?;
17        stdin.read_line(data)?;
18
19        match data.trim() {
20            "" => Ok(None),
21            value => Ok(Some(MetaValue::String(value.to_owned()))),
22        }
23    }
24}