5 unstable releases
0.3.0 | Nov 7, 2024 |
---|---|
0.2.0 | Aug 12, 2024 |
0.1.2 | Jul 20, 2024 |
0.1.1 | Apr 21, 2024 |
0.1.0 | Apr 6, 2024 |
#1302 in Web programming
260 downloads per month
Used in rsjsonnet
730KB
18K
SLoC
rsjsonnet-front
A Rust library that sits in the middle between rsjsonnet-lang and the outer world. Provides source loading and error printing.
lib.rs
:
A library that provides a frontend (loading source files and printing errors) for Jsonnet interpreters.
Example
let source = b"local add_one(x) = x + 1; add_one(2)";
// Create the arena allocator.
let arena = rsjsonnet_lang::arena::Arena::new();
// Create a session, which will contain a `rsjsonnet_lang::program::Program`.
let mut session = rsjsonnet_front::Session::new(&arena);
// Load a virtual (i.e., not from the file system) source file into the program
let Some(thunk) = session.load_virt_file("<example>", source.to_vec()) else {
// `Session` printed the error for us
return;
};
// Evaluate it
let Some(value) = session.eval_value(&thunk) else {
// `Session` printed the error for us
return;
};
assert_eq!(value.as_number(), Some(3.0));
// Manifest the value
let Some(json_result) = session.manifest_json(&value, false) else {
// `Session` printed the error for us
return;
};
assert_eq!(json_result, "3");
Dependencies
~4–12MB
~145K SLoC