From 789bed17a43f9f4b8183ecf81c4d41ccf0093c30 Mon Sep 17 00:00:00 2001 From: Лач Date: Sun, 28 Jun 2020 12:30:35 +0000 Subject: [PATCH] feat(evaluator): c like api functions --- --- a/cmds/jrsonnet/src/main.rs +++ b/cmds/jrsonnet/src/main.rs @@ -118,15 +118,12 @@ fn main() { let opts: Opts = Opts::parse(); - let evaluator = jrsonnet_evaluator::EvaluationState::new( - EvaluationSettings { - max_stack_trace_size: opts.max_trace, - max_stack_frames: opts.max_stack, - }, - Box::new(jrsonnet_evaluator::FileImportResolver { - library_paths: opts.jpath.clone(), - }), - ); + let evaluator = jrsonnet_evaluator::EvaluationState::default(); + evaluator.set_max_trace(opts.max_trace); + evaluator.set_max_stack(opts.max_stack); + evaluator.set_import_resolver(Box::new(jrsonnet_evaluator::FileImportResolver { + library_paths: opts.jpath.clone(), + })); if !opts.no_stdlib { evaluator.with_stdlib(); } --- a/crates/jrsonnet-evaluator/src/evaluate.rs +++ b/crates/jrsonnet-evaluator/src/evaluate.rs @@ -624,7 +624,7 @@ ("std", "extVar") => parse_args!(context, "std.extVar", args, 2, [ 0, x: [Val::Str]!!Val::Str, vec![ValType::Str]; ], { - with_state(|s| s.0.ext_vars.borrow().get(&x).cloned()).ok_or_else( + with_state(|s| s.settings().ext_vars.get(&x).cloned()).ok_or_else( || create_error(crate::Error::UndefinedExternalVariable(x)), )? }), --- a/crates/jrsonnet-evaluator/src/lib.rs +++ b/crates/jrsonnet-evaluator/src/lib.rs @@ -250,6 +250,12 @@ pub fn add_ext_var(&self, name: Rc, value: Val) { self.settings_mut().ext_vars.insert(name, value); } + pub fn set_max_trace(&self, max_trace: usize) { + self.settings_mut().max_stack_trace_size = max_trace; + } + pub fn set_max_stack(&self, max_stack: usize) { + self.settings_mut().max_stack_frames = max_stack; + } pub fn with_stdlib(&self) -> &Self { let std_path = Rc::new(PathBuf::from("std.jsonnet")); -- gitstuff