strings: concat and contains

Signed-off-by: Anand Krishnamoorthi <anakrish@microsoft.com>
This commit is contained in:
Anand Krishnamoorthi
2023-02-27 23:53:20 -08:00
committed by Anand Krishnamoorthi
parent 89e26e37a2
commit 27c5afd8ee
3 changed files with 145 additions and 0 deletions
+9
View File
@@ -13,6 +13,7 @@ use anyhow::Result;
pub fn register(m: &mut HashMap<&'static str, builtins::BuiltinFcn>) {
m.insert("concat", concat);
m.insert("contains", contains);
}
fn concat(span: &Span, params: &[Expr], args: &[Value]) -> Result<Value> {
@@ -22,3 +23,11 @@ fn concat(span: &Span, params: &[Expr], args: &[Value]) -> Result<Value> {
let collection = ensure_string_collection(name, &params[1], &args[1])?;
Ok(Value::String(collection.join(&delimiter)))
}
fn contains(span: &Span, params: &[Expr], args: &[Value]) -> Result<Value> {
let name = "contains";
ensure_args_count(span, name, params, args, 2)?;
let s1 = ensure_string(name, &params[0], &args[0])?;
let s2 = ensure_string(name, &params[1], &args[1])?;
Ok(Value::Bool(s1.contains(&s2)))
}