From 81759dd51eb1f6f9a7dc8af9b2b8126ff7dfab24 Mon Sep 17 00:00:00 2001 From: Jonas Maier Date: Sun, 31 May 2026 19:21:44 +0200 Subject: regex based case statements --- src/run/builtin.rs | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) (limited to 'src/run/builtin.rs') diff --git a/src/run/builtin.rs b/src/run/builtin.rs index fab7565..6f7cc5d 100644 --- a/src/run/builtin.rs +++ b/src/run/builtin.rs @@ -1098,7 +1098,36 @@ mod dbg { Ok(()) } } + + #[derive(Copy, Clone)] + pub struct case_match; + impl Builtin for case_match { + fn name(&self) -> &str { + "case_match" + } + + fn io( + &self, + _session: Arc>, + args: &[BString], + _stdin: &mut dyn Read, + stdout: &mut dyn Write, + ) -> Result { + let regex = match crate::parse::regex::Pattern::parse_from_bytes(&args[0]) { + Ok(r) => r, + Err(e) => { + writeln!(stdout, "not a valid regex: {e:?}")?; + return Err(Error::Exit(1)); + }, + }; + + let compiled = regex.compile(); + writeln!(stdout, "{compiled:?}")?; + + Ok(()) + } + } } #[cfg(debug_assertions)] -pub use dbg::{debug, re}; +pub use dbg::{debug, re, case_match}; -- cgit v1.2.3