Struct jsonnet::JsonnetVm [] [src]

pub struct JsonnetVm(_);

Jsonnet virtual machine context.

Methods

impl JsonnetVm
[src]

[src]

Create a new Jsonnet virtual machine.

[src]

Set the maximum stack depth.

[src]

Set the number of objects required before a garbage collection cycle is allowed.

[src]

Run the garbage collector after this amount of growth in the number of objects.

[src]

Expect a string as output and don't JSON encode it.

[src]

Override the callback used to locate imports.

Examples

use std::path::{Path,PathBuf};
use std::ffi::OsStr;
use jsonnet::JsonnetVm;

fn myimport<'a>(_vm: &'a JsonnetVm, base: &Path, rel: &Path) -> Result<(PathBuf, String), String> {
   if rel.file_stem() == Some(OsStr::new("bar")) {
      let newbase = base.into();
      let contents = "2 + 3".to_owned();
      Ok((newbase, contents))
   } else {
      Err("not found".to_owned())
   }
}

let mut vm = JsonnetVm::new();
vm.import_callback(myimport);
{
   let output = vm.evaluate_snippet("myimport", "import 'x/bar.jsonnet'").unwrap();
   assert_eq!(output.to_string(), "5\n");
}

{
   let result = vm.evaluate_snippet("myimport", "import 'x/foo.jsonnet'");
   assert!(result.is_err());
}

[src]

Register a native extension.

This will appear in Jsonnet as a function type and can be accessed from std.native("foo").

Examples

use jsonnet::{JsonnetVm, JsonVal, JsonValue};

fn myadd<'a>(vm: &'a JsonnetVm, args: &[JsonVal<'a>]) -> Result<JsonValue<'a>, String> {
   let a = try!(args[0].as_num().ok_or("Expected a number"));
   let b = try!(args[1].as_num().ok_or("Expected a number"));
   Ok(JsonValue::from_num(vm, a + b))
}

let mut vm = JsonnetVm::new();
vm.native_callback("myadd", myadd, &["a", "b"]);

{
   let result = vm.evaluate_snippet("nativetest",
      "std.native('myadd')(2, 3)");
   assert_eq!(result.unwrap().as_str(), "5\n");
}

{
   let result = vm.evaluate_snippet("nativefail",
      "std.native('myadd')('foo', 'bar')");
   assert!(result.is_err());
}

Panics

Panics if name or params contain any embedded nul characters.

[src]

Bind a Jsonnet external var to the given string.

Panics

Panics if key or val contain embedded nul characters.

[src]

Bind a Jsonnet external var to the given code.

Panics

Panics if key or code contain embedded nul characters.

[src]

Bind a string top-level argument for a top-level parameter.

Panics

Panics if key or val contain embedded nul characters.

[src]

Bind a code top-level argument for a top-level parameter.

Panics

Panics if key or code contain embedded nul characters.

[src]

Indentation level when reformatting (number of spaces).

[src]

Maximum number of blank lines when reformatting.

[src]

Preferred style for string literals ("" or '').

[src]

Preferred style for line comments (# or //).

[src]

Whether to add an extra space on the inside of arrays.

[src]

Whether to add an extra space on the inside of objects.

[src]

Use syntax sugar where possible with field names.

[src]

Sort top-level imports in alphabetical order

[src]

Reformat the Jsonnet input after desugaring.

[src]

Reformat a file containing Jsonnet code, return a Jsonnet string.

Panics

Panics if filename contains embedded nul characters.

[src]

Reformat a string containing Jsonnet code, return a Jsonnet string.

Panics

Panics if filename or snippet contain embedded nul characters.

[src]

Set the number of lines of stack trace to display (None for unlimited).

[src]

Add to the default import callback's library search path.

Search order is last to first, so more recently appended paths take precedence.

Panics

Panics if path contains embedded nul characters.

[src]

Evaluate a file containing Jsonnet code, returning a JSON string.

Errors

Returns any jsonnet error during evaluation.

Panics

Panics if filename contains embedded nul characters.

[src]

Evaluate a string containing Jsonnet code, returning a JSON string.

The filename argument is only used in error messages.

Errors

Returns any jsonnet error during evaluation.

Panics

Panics if filename or snippet contain embedded nul characters.

[src]

Evaluate a file containing Jsonnet code, returning a number of named JSON files.

Errors

Returns any jsonnet error during evaluation.

Panics

Panics if filename contains embedded nul characters.

[src]

Evaluate a file containing Jsonnet code, returning a number of named JSON files.

Errors

Returns any jsonnet error during evaluation.

Panics

Panics if filename or snippet contain embedded nul characters.

Examples

use std::collections::HashMap;
use jsonnet::JsonnetVm;

let mut vm = JsonnetVm::new();
let output = vm.evaluate_snippet_multi("multi",
   "{'foo.json': 'foo', 'bar.json': 'bar'}").unwrap();

let map: HashMap<_,_> = output.iter().collect();
assert_eq!(*map.get("bar.json").unwrap(), "\"bar\"\n");

[src]

Evaluate a file containing Jsonnet code, returning a number of JSON files.

Errors

Returns any jsonnet error during evaluation.

Panics

Panics if filename contains embedded nul characters.

[src]

Evaluate a string containing Jsonnet code, returning a number of JSON files.

Errors

Returns any jsonnet error during evaluation.

Panics

Panics if filename or snippet contain embedded nul characters.

Examples

use jsonnet::JsonnetVm;

let mut vm = JsonnetVm::new();
let output = vm.evaluate_snippet_stream("stream",
   "['foo', 'bar']").unwrap();

let list: Vec<_> = output.iter().collect();
assert_eq!(list, vec!["\"foo\"\n", "\"bar\"\n"]);

Trait Implementations

impl Drop for JsonnetVm
[src]

[src]

Executes the destructor for this type. Read more

Auto Trait Implementations

impl !Send for JsonnetVm

impl !Sync for JsonnetVm