#jsonnet #source #error #loading #front-end #library #printing

rsjsonnet-front

Jsonnet 前端(源加载和错误打印)库

4 个版本

0.2.0 2024 年 8 月 12 日
0.1.2 2024 年 7 月 20 日
0.1.1 2024 年 4 月 21 日
0.1.0 2024 年 4 月 6 日

#808Rust 模式

Download history 10/week @ 2024-05-20 38/week @ 2024-05-27 2/week @ 2024-06-10 9/week @ 2024-06-24 146/week @ 2024-07-15 165/week @ 2024-07-22 59/week @ 2024-07-29 192/week @ 2024-08-12

每月 436 次下载
用于 rsjsonnet

MIT/Apache 许可

645KB
16K SLoC

rsjsonnet-front

crates.io Documentation MSRV License

一个位于 rsjsonnet-lang 和外部世界之间的 Rust 库。提供源加载和错误打印功能。


lib.rs:

为 Jsonnet 解释器提供前端(加载源文件和打印错误)的库。

示例

let source = b"local add_one(x) = x + 1; add_one(2)";

// Create a session, which will contain a `rsjsonnet_lang::program::Program`.
let mut session = rsjsonnet_front::Session::new();

// 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");

依赖项

~2–11MB
~122K SLoC