git.delta.rocks / jrsonnet / refs/commits / 7af406eaa740

difftreelog

source

crates/jrsonnet-stdlib/src/operator.rs1022 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	operator::evaluate_mod_op,8	stdlib::std_format,9	typed::{Either, Either2},10	val::{equals, primitive_equals},11};1213#[builtin]14pub fn builtin_mod(a: Either![NumValue, IStr], b: Val) -> Result<Val> {15	use Either2::*;16	evaluate_mod_op(17		&match a {18			A(v) => Val::Num(v),19			B(s) => Val::string(s),20		},21		&b,22	)23}2425#[builtin]26pub fn builtin_primitive_equals(x: Val, y: Val) -> Result<bool> {27	primitive_equals(&x, &y)28}2930#[builtin]31pub fn builtin_equals(a: Val, b: Val) -> Result<bool> {32	equals(&a, &b)33}3435#[builtin]36pub fn builtin_xor(x: bool, y: bool) -> bool {37	x ^ y38}3940#[builtin]41pub fn builtin_xnor(x: bool, y: bool) -> bool {42	x == y43}4445#[builtin]46pub fn builtin_format(str: IStr, vals: Val) -> Result<String> {47	std_format(&str, vals)48}