diff options
Diffstat (limited to 'src/run')
| -rw-r--r-- | src/run/builtin.rs | 37 | ||||
| -rw-r--r-- | src/run/mod.rs | 1 |
2 files changed, 38 insertions, 0 deletions
diff --git a/src/run/builtin.rs b/src/run/builtin.rs index c080c93..f5dff81 100644 --- a/src/run/builtin.rs +++ b/src/run/builtin.rs @@ -564,3 +564,40 @@ impl Builtin for debug { Ok(()) } } + +pub struct terminfo; +impl Builtin for terminfo { + fn name(&self) -> &str { + "terminfo" + } + + fn io( + &self, + _session: Arc<Mutex<Session>>, + _args: &[BString], + _stdin: &mut dyn Read, + f: &mut dyn Write, + ) -> Result { + let ti = crate::ansi::ti(); + + writeln!(f, "# Booleans")?; + for k in ti.booleans.iter() { + writeln!(f, "{k}")?; + } + writeln!(f)?; + + writeln!(f, "# Numbers")?; + for (k, v) in ti.numbers.iter() { + writeln!(f, "{k} {v}")?; + } + writeln!(f)?; + + writeln!(f, "# Strings")?; + for (k, v) in ti.strings.iter() { + writeln!(f, "{k} {}", v.escape_ascii())?; + } + writeln!(f)?; + + Ok(()) + } +} diff --git a/src/run/mod.rs b/src/run/mod.rs index 8a728c5..c866c6e 100644 --- a/src/run/mod.rs +++ b/src/run/mod.rs @@ -549,6 +549,7 @@ const BUILTINS: &[&'static dyn Builtin] = &[ &builtin::unalias, #[cfg(debug_assertions)] &builtin::debug, + &builtin::terminfo, ]; pub fn builtin_map() -> HashMap<BString, &'static dyn Builtin> { |
