git.delta.rocks / jrsonnet / refs/commits / cf33b6edf3e1

difftreelog

source

crates/jrsonnet-stdlib/src/operator.rs991 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	IStr, NumValue, Result, Val,6	function::builtin,7	stdlib::std_format,8	typed::{Either, Either2},9	val::{equals, primitive_equals},10};1112#[builtin]13pub fn builtin_mod(a: Either![NumValue, IStr], b: Val) -> Result<Val> {14	use Either2::*;15	Val::try_mod(16		&match a {17			A(v) => Val::Num(v),18			B(s) => Val::string(s),19		},20		&b,21	)22}2324#[builtin]25pub fn builtin_primitive_equals(x: Val, y: Val) -> Result<bool> {26	primitive_equals(&x, &y)27}2829#[builtin]30pub fn builtin_equals(a: Val, b: Val) -> Result<bool> {31	equals(&a, &b)32}3334#[builtin]35pub fn builtin_xor(x: bool, y: bool) -> bool {36	x ^ y37}3839#[builtin]40pub fn builtin_xnor(x: bool, y: bool) -> bool {41	x == y42}4344#[builtin]45pub fn builtin_format(str: IStr, vals: Val) -> Result<String> {46	std_format(&str, vals)47}