Skip to main content

rl_lang/interpreter/stdlib/io/
mod.rs

1//! `std::io` - input/output: reading from stdin, reading/writing files, printing.
2//!
3//! `print` and `println` write to [`Evaluator::output_buffer`] when set (LSP/REPL),
4//! otherwise they write directly to stdout.
5//!
6//! `eprint` raises a runtime error rather than writing to stderr, so errors
7//! surface through rl's normal error reporting pipeline.
8
9mod append_file;
10mod delete_file;
11mod eprint;
12mod input;
13mod print;
14mod println;
15mod read_bytes;
16mod read_file;
17mod read_lines;
18mod write_file;
19
20use crate::interpreter::native::Module;
21
22pub const KEYWORDS: &[&str] = &[
23    "read",
24    "read_int",
25    "read_float",
26    "read_file",
27    "read_lines",
28    "delete_file",
29    "write_file",
30    "append_file",
31    "print",
32    "println",
33    "eprint",
34    "read_bytes",
35];
36
37pub fn module() -> Module {
38    Module::new("io")
39        .with_raw_function("read", input::std_read)
40        .with_raw_function("read_int", input::std_read_int)
41        .with_raw_function("read_float", input::std_read_float)
42        .with_function("read_file", read_file::std_read_file)
43        .with_function("read_lines", read_lines::std_read_lines)
44        .with_function("delete_file", delete_file::std_delete_file)
45        .with_function("write_file", write_file::std_write_file)
46        .with_function("append_file", append_file::std_append_file)
47        .with_raw_function("print", print::std_print)
48        .with_raw_function("println", println::std_println)
49        .with_function("eprint", eprint::std_eprint)
50        .with_function("read_bytes", read_bytes::func)
51}