intuicio_frontend_simpleton/library/
console.rs

1use std::io::Write;
2
3use crate::{Reference, Text};
4use intuicio_core::registry::Registry;
5use intuicio_derive::intuicio_function;
6
7#[intuicio_function(module_name = "console")]
8pub fn log(text: Reference) -> Reference {
9    print!("{}", text.read::<Text>().unwrap().as_str());
10    Reference::null()
11}
12
13#[intuicio_function(module_name = "console")]
14pub fn log_line(text: Reference) -> Reference {
15    println!("{}", text.read::<Text>().unwrap().as_str());
16    Reference::null()
17}
18
19#[intuicio_function(module_name = "console")]
20pub fn error(text: Reference) -> Reference {
21    eprint!("{}", text.read::<Text>().unwrap().as_str());
22    Reference::null()
23}
24
25#[intuicio_function(module_name = "console")]
26pub fn error_line(text: Reference) -> Reference {
27    eprintln!("{}", text.read::<Text>().unwrap().as_str());
28    Reference::null()
29}
30
31#[intuicio_function(module_name = "console", use_registry)]
32pub fn read_line(registry: &Registry) -> Reference {
33    let mut result = String::new();
34    std::io::stdout().flush().unwrap();
35    std::io::stdin().read_line(&mut result).unwrap();
36    Reference::new_text(result, registry)
37}
38
39pub fn install(registry: &mut Registry) {
40    registry.add_function(log::define_function(registry));
41    registry.add_function(log_line::define_function(registry));
42    registry.add_function(error::define_function(registry));
43    registry.add_function(error_line::define_function(registry));
44    registry.add_function(read_line::define_function(registry));
45}