Engine Execution API's
This section discusses about all the configuration execution API's in NbclEngine, what each does, and how to use it.
NbclEngine::new
pub fn new() -> NbclEngine;Creates a new Nbcl Engine.
Example:
use nbcl::NbclEngine;
let engine = NbclEngine::new();NbclEngine.parse
pub fn parse(&self, file_path: PathBuf) -> Result<File>;Parse the contents of a file into source AST.
Example:
use std::path::PathBuf;
use nbcl::NbclEngine;
let engine = NbclEngine::new();
let source_ast = engine.parse(PathBuf::from("./example.nbcl")).unwrap();NbclEngine.parse_str
pub fn parse_str(&self, source: &str) -> Result<File>;Parse a source into source AST.
Example:
use nbcl::NbclEngine;
let engine = NbclEngine::new();
let source = "print('Hello, World')";
let source_ast = engine.parse_str(&source).unwrap();NbclEngine.evaluate_ast
pub fn evaluate_ast(&self, file: File) -> Result<ResolvedTree>;Evaluates a source ast, produce side-effects, and return resolved configuration.
Example:
use nbcl::NbclEngine;
let engine = NbclEngine::new();
let source = "print('Hello, World')";
let source_ast = engine.parse_str(&source).unwrap();
let res_config = engine.evaluate_ast(source_ast).unwrap();NbclEngine.evaluate_ast_for_ctx
pub fn evaluate_ast_for_ctx(&self, file: File) -> Result<(ResolvedTree, Context)>;Evaluates a source ast, produce side-effects, and return resolved configuration and evaluation context. The evaluation context is useful for other-api/call_function.
Example:
use nbcl::NbclEngine;
let engine = NbclEngine::new();
let source = "print('Hello, World')";
let source_ast = engine.parse_str(&source).unwrap();
let config_and_ctx = engine.evaluate_ast_for_ctx(source_ast).unwrap();NbclEngine.eval_ast_with_eval_ctx
pub fn eval_ast_with_eval_ctx(&self, file: File, ctx: &mut EvalContext) -> Result<ResolvedTree>Evaluate with the provided evaluate context, mutating it on the process. [EvalContext] not similar to [Context], it contains way more information about the evaluation including user defined functions and variables.
Example:
use nbcl::{NbclEngine, context::EvalContext}
let engine = NbclEngine::new();
let mut ectx = EvalContext::from(&engine);
let source = "print('Hello, World')";
let source_ast = engine.parse_str(&source).unwrap();
let tree = engine.eval_ast_with_eval_ctx(source_ast, &mut ectx).unwrap();NbclEngine.evaluate
pub fn evaluate(&self, source: &str) -> Result<ResolvedTree>;Parse and evaluate a source string, produce side-effects, and return resolved configuration.
Example:
use nbcl::NbclEngine;
let engine = NbclEngine::new();
let source = "print('Hello, World')";
let res_config = engine.evaluate(source).unwrap();