From 66a35de3b67dd441185b7badaf559c8a25ab9967 Mon Sep 17 00:00:00 2001 From: Griffin Smith Date: Sun, 9 Oct 2022 13:09:11 -0400 Subject: feat(tvix/eval): Implement builtins.concatStringsSep Change-Id: I6e46bcdbf3b5258b60edb017709fee577eb8ec74 Reviewed-on: https://cl.tvl.fyi/c/depot/+/6907 Reviewed-by: tazjin Tested-by: BuildkiteCI --- tvix/eval/src/builtins/mod.rs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'tvix/eval/src/builtins') diff --git a/tvix/eval/src/builtins/mod.rs b/tvix/eval/src/builtins/mod.rs index 8929d91cc9c6..08b8299e4803 100644 --- a/tvix/eval/src/builtins/mod.rs +++ b/tvix/eval/src/builtins/mod.rs @@ -169,6 +169,22 @@ fn pure_builtins() -> Vec { Ok(Value::List(res.into())) }, ), + Builtin::new( + "concatStringsSep", + &[true, true], + |args: Vec, vm: &mut VM| { + let separator = args[0].to_str()?; + let list = args[1].to_list()?; + let mut res = String::new(); + for (i, val) in list.into_iter().enumerate() { + if i != 0 { + res.push_str(&separator); + } + res.push_str(&val.force(vm)?.coerce_to_string(CoercionKind::Weak, vm)?); + } + Ok(res.into()) + }, + ), Builtin::new( "div", &[false, false], -- cgit 1.4.1