From e0b05c0fa6562bc7d3c87a66c6557ad74fdbbd8f Mon Sep 17 00:00:00 2001 From: Florian Klink Date: Tue, 24 Jan 2023 15:54:29 +0100 Subject: feat(tvix/eval): implement builtins.fromTOML This allows parsing TOML from Tvix. We can enable the eval-okay-fromTOML testcase from nix_tests. It uses the `toml` crate, and the serde integration it brings with it. Change-Id: Ic6f95aacf2aeb890116629b409752deac49dd655 Reviewed-on: https://cl.tvl.fyi/c/depot/+/7920 Autosubmit: flokli Reviewed-by: tazjin Tested-by: BuildkiteCI --- tvix/eval/src/builtins/mod.rs | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'tvix/eval/src/builtins') diff --git a/tvix/eval/src/builtins/mod.rs b/tvix/eval/src/builtins/mod.rs index b1ea408a8ca4..4f3c93ec1451 100644 --- a/tvix/eval/src/builtins/mod.rs +++ b/tvix/eval/src/builtins/mod.rs @@ -355,6 +355,13 @@ mod pure_builtins { Ok(json_str.into()) } + #[builtin("fromTOML")] + fn builtin_from_toml(_: &mut VM, toml: Value) -> Result { + let toml_str = toml.to_str()?; + + toml::from_str(&toml_str).map_err(|err| err.into()) + } + #[builtin("genericClosure")] fn builtin_generic_closure(vm: &mut VM, input: Value) -> Result { let attrs = input.to_attrs()?; -- cgit 1.4.1