git.delta.rocks / jrsonnet / refs/commits / 78fff5c6fa82

difftreelog

refactor extract standard library to another module

Лач2020-07-16parent: #a82a6f1.patch.diff
in: master

3 files changed

addedcrates/jrsonnet-evaluator/src/builtin/mod.rsdiffbeforeafterboth

no changes

addedcrates/jrsonnet-evaluator/src/builtin/stdlib.rsdiffbeforeafterboth

no changes

modifiedcrates/jrsonnet-evaluator/src/lib.rsdiffbeforeafterboth
262 self.run_in_state(|| evaluate(self.create_default_context()?, &code))262 self.run_in_state(|| evaluate(self.create_default_context()?, &code))
263 }263 }
264264
265 pub fn add_global(&self, name: Rc<str>, value: Val) {265 /// Adds standard library global variable (std) to this evaluator
266 self.settings_mut().globals.insert(name, value);
267 }
268 pub fn add_ext_var(&self, name: Rc<str>, value: Val) {
269 self.settings_mut().ext_vars.insert(name, value);
270 }
271 pub fn set_max_trace(&self, max_trace: usize) {
272 self.settings_mut().max_stack_trace_size = max_trace;
273 }
274 pub fn set_max_stack(&self, max_stack: usize) {
275 self.settings_mut().max_stack_frames = max_stack;
276 }
277
278 pub fn with_stdlib(&self) -> &Self {266 pub fn with_stdlib(&self) -> &Self {
267 use jrsonnet_stdlib::STDLIB_STR;
279 let std_path = Rc::new(PathBuf::from("std.jsonnet"));268 let std_path = Rc::new(PathBuf::from("std.jsonnet"));
280 self.run_in_state(|| {269 self.run_in_state(|| {
281 use jrsonnet_stdlib::STDLIB_STR;
282 let mut parsed = false;
283 #[cfg(feature = "codegenerated-stdlib")]
284 if !parsed {
285 parsed = true;
286 #[allow(clippy::all)]
287 let stdlib = {
288 use jrsonnet_parser::*;
289 include!(concat!(env!("OUT_DIR"), "/stdlib.rs"))
290 };
291 self.add_parsed_file(std_path.clone(), STDLIB_STR.to_owned().into(), stdlib)
292 .unwrap();
293 }
294
295 #[cfg(feature = "serialized-stdlib")]
296 if !parsed {
297 parsed = true;
298 self.add_parsed_file(270 self.add_parsed_file(
299 std_path.clone(),271 std_path.clone(),
300 STDLIB_STR.to_owned().into(),272 STDLIB_STR.to_owned().into(),
301 bincode::deserialize(include_bytes!(concat!(273 builtin::get_parsed_stdlib(),
302 env!("OUT_DIR"),
303 "/stdlib.bincode"
304 )))
305 .expect("deserialize stdlib"),
306 )274 )
307 .unwrap();275 .unwrap();
308 }
309
310 if !parsed {
311 self.add_file(std_path, STDLIB_STR.to_owned().into())
312 .unwrap();
313 }
314 let val = self.evaluate_file(&PathBuf::from("std.jsonnet")).unwrap();276 let val = self.evaluate_file(&std_path).unwrap();
315 self.add_global("std".into(), val);277 self.settings_mut().globals.insert("std".into(), val);
316 });278 });
317 self279 self
318 }280 }