git.delta.rocks / jrsonnet / refs/commits / 2afd5ff0dd7a

difftreelog

source

crates/jrsonnet-stdlib/src/operator.rs927 Bsourcehistory
1//! Some jsonnet operations are desugared to stdlib functions...2//! However, in our case we instead implement them in native, and implement native functions on top of core for backwards compatibility34use jrsonnet_evaluator::{5	error::Result,6	function::builtin,7	operator::evaluate_mod_op,8	stdlib::std_format,9	typed::{Any, Either, Either2},10	val::{equals, primitive_equals, StrValue},11	IStr, Val,12};1314#[builtin]15pub fn builtin_mod(a: Either![f64, IStr], b: Any) -> Result<Any> {16	use Either2::*;17	Ok(Any(evaluate_mod_op(18		&match a {19			A(v) => Val::Num(v),20			B(s) => Val::Str(StrValue::Flat(s)),21		},22		&b.0,23	)?))24}2526#[builtin]27pub fn builtin_primitive_equals(a: Any, b: Any) -> Result<bool> {28	primitive_equals(&a.0, &b.0)29}3031#[builtin]32pub fn builtin_equals(a: Any, b: Any) -> Result<bool> {33	equals(&a.0, &b.0)34}3536#[builtin]37pub fn builtin_format(str: IStr, vals: Any) -> Result<String> {38	std_format(&str, vals.0)39}