diff options
| author | Jonas Maier <jonas@x77.dev> | 2026-03-06 21:07:22 +0100 |
|---|---|---|
| committer | Jonas Maier <jonas@x77.dev> | 2026-03-06 21:07:22 +0100 |
| commit | 41dbb877cade868137360d2e676f4c2ad4594317 (patch) | |
| tree | d2f2fb0be2ff9f546b073756055d45ca985f6281 /src | |
| parent | f4091ae5235115f6b75ec13e41afa7ed94d0856a (diff) | |
| download | pish-41dbb877cade868137360d2e676f4c2ad4594317.tar.gz | |
builtin command to display escape characters
Diffstat (limited to 'src')
| -rw-r--r-- | src/run/builtin.rs | 20 | ||||
| -rw-r--r-- | src/run/mod.rs | 1 |
2 files changed, 21 insertions, 0 deletions
diff --git a/src/run/builtin.rs b/src/run/builtin.rs index 7a60017..5c7cffd 100644 --- a/src/run/builtin.rs +++ b/src/run/builtin.rs @@ -177,3 +177,23 @@ impl Builtin for history { todo!("need session") } } + +pub struct escape; +impl Builtin for escape { + fn name(&self) -> &str { + "escape" + } + fn io( + &self, + args: &[BString], + _stdin: &mut dyn Read, + stdout: &mut dyn Write, + ) -> std::io::Result<()> { + for arg in args.iter() { + let escaped = arg.escape_ascii().to_string(); + stdout.write_all(escaped.as_bytes())?; + stdout.write_all(b" ")?; + } + Ok(()) + } +} diff --git a/src/run/mod.rs b/src/run/mod.rs index c9a156d..8c629b0 100644 --- a/src/run/mod.rs +++ b/src/run/mod.rs @@ -286,6 +286,7 @@ const BUILTINS: &[&'static dyn Builtin] = &[ &builtin::builtins, &builtin::_type, &builtin::history, + &builtin::escape, ]; pub struct CommandDispatch { |
