difftreelog
feat(evaluator) c like api functions
in: master
3 files changed
cmds/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();
}
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.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"));