difftreelog
feat(evaluator) c like api functions
in: master
3 files changed
cmds/jrsonnet/src/main.rsdiffbeforeafterboth118118119fn main() {119fn main() {120 let opts: Opts = Opts::parse();120 let opts: Opts = Opts::parse();121 let evaluator = jrsonnet_evaluator::EvaluationState::new(121 let evaluator = jrsonnet_evaluator::EvaluationState::default();122 EvaluationSettings {122 evaluator.set_max_trace(opts.max_trace);123 max_stack_trace_size: opts.max_trace,123 evaluator.set_max_stack(opts.max_stack);124 max_stack_frames: opts.max_stack,125 },126 Box::new(jrsonnet_evaluator::FileImportResolver {124 evaluator.set_import_resolver(Box::new(jrsonnet_evaluator::FileImportResolver {127 library_paths: opts.jpath.clone(),125 library_paths: opts.jpath.clone(),128 }),126 }));129 );130 if !opts.no_stdlib {127 if !opts.no_stdlib {131 evaluator.with_stdlib();128 evaluator.with_stdlib();132 }129 }crates/jrsonnet-evaluator/src/evaluate.rsdiffbeforeafterboth624 ("std", "extVar") => parse_args!(context, "std.extVar", args, 2, [624 ("std", "extVar") => parse_args!(context, "std.extVar", args, 2, [625 0, x: [Val::Str]!!Val::Str, vec![ValType::Str];625 0, x: [Val::Str]!!Val::Str, vec![ValType::Str];626 ], {626 ], {627 with_state(|s| s.0.ext_vars.borrow().get(&x).cloned()).ok_or_else(627 with_state(|s| s.settings().ext_vars.get(&x).cloned()).ok_or_else(628 || create_error(crate::Error::UndefinedExternalVariable(x)),628 || create_error(crate::Error::UndefinedExternalVariable(x)),629 )?629 )?630 }),630 }),crates/jrsonnet-evaluator/src/lib.rsdiffbeforeafterboth250 pub fn add_ext_var(&self, name: Rc<str>, value: Val) {250 pub fn add_ext_var(&self, name: Rc<str>, value: Val) {251 self.settings_mut().ext_vars.insert(name, value);251 self.settings_mut().ext_vars.insert(name, value);252 }252 }253 pub fn set_max_trace(&self, max_trace: usize) {254 self.settings_mut().max_stack_trace_size = max_trace;255 }256 pub fn set_max_stack(&self, max_stack: usize) {257 self.settings_mut().max_stack_frames = max_stack;258 }253259254 pub fn with_stdlib(&self) -> &Self {260 pub fn with_stdlib(&self) -> &Self {255 let std_path = Rc::new(PathBuf::from("std.jsonnet"));261 let std_path = Rc::new(PathBuf::from("std.jsonnet"));