git.delta.rocks / jrsonnet / refs/commits / 789bed17a43f

difftreelog

feat(evaluator) c like api functions

Лач2020-06-28parent: #3730d67.patch.diff
in: master

3 files changed

modifiedcmds/jrsonnet/src/main.rsdiffbeforeafterboth
--- 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();
 	}
modifiedcrates/jrsonnet-evaluator/src/evaluate.rsdiffbeforeafterboth
624 ("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 }),
modifiedcrates/jrsonnet-evaluator/src/lib.rsdiffbeforeafterboth
--- 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<str>, 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"));