ganit_core/eval/functions/text/regexreplace/
mod.rs1use crate::eval::coercion::to_string_val;
2use crate::eval::functions::check_arity;
3use crate::types::{ErrorKind, Value};
4use regex_lite::Regex;
5
6pub fn regexreplace_fn(args: &[Value]) -> Value {
9 if let Some(err) = check_arity(args, 3, 3) {
10 return err;
11 }
12 let text = match to_string_val(args[0].clone()) {
13 Ok(s) => s,
14 Err(e) => return e,
15 };
16 let pattern = match to_string_val(args[1].clone()) {
17 Ok(s) => s,
18 Err(e) => return e,
19 };
20 let replacement = match to_string_val(args[2].clone()) {
21 Ok(s) => s,
22 Err(e) => return e,
23 };
24 let re = match Regex::new(&pattern) {
25 Ok(r) => r,
26 Err(_) => return Value::Error(ErrorKind::Value),
27 };
28 Value::Text(re.replace_all(&text, replacement.as_str()).into_owned())
29}
30
31#[cfg(test)]
32mod tests;