Skip to main content

Crate runjucks_core

Crate runjucks_core 

Source
Expand description

Pure Rust template engine core for Runjucks, a Nunjucks-oriented engine.

This crate is the lex → parse → render pipeline with no Node or NAPI dependencies. The published runjucks npm package wraps it in a thin native addon; most JavaScript callers use that API instead of linking this crate directly.

Pipeline:

  1. lexer::tokenize splits template source into lexer::Tokens.
  2. For each lexer::Token::Tag, tag_lex::tokenize_tag_body can split the inner string into keywords and identifiers.
  3. parser::parse builds an ast::Node tree; parser::parse_expr parses {{ }} bodies with Nunjucks-style precedence (see parser::expr).
  4. renderer::render walks the AST with an Environment, optional loader::TemplateLoader, and a renderer::CtxStack built from the JSON context ({% include %}, {% extends %} / {% block %}, for/set frames, macros).

§Example

use runjucks_core::Environment;
use serde_json::json;

let env = Environment::default();
let out = env
    .render_string("Hello, {{ name }}".into(), json!({ "name": "Ada" }))
    .unwrap();
assert_eq!(out, "Hello, Ada");

Re-exports§

pub use environment::CustomFilter;
pub use environment::CustomGlobalFn;
pub use environment::CustomTest;
pub use environment::Environment;
pub use errors::RunjucksError;
pub use extension::CustomExtensionHandler;
pub use extension::ExtensionTagMeta;
pub use lexer::LexerOptions;
pub use lexer::Tags;
pub use loader::map_loader;
pub use loader::FnLoader;
pub use loader::TemplateLoader;

Modules§

ast
Abstract syntax tree for templates after crate::parser::parse.
environment
Environment holds render options and is the entry point for Environment::render_string.
errors
User-facing render and parse failures as a simple string message.
extension
Custom tag extensions (Nunjucks-style [Environment::register_extension] / JS addExtension).
filters
Output filters applied during render (e.g. HTML escaping when crate::Environment::autoescape is on).
globals
Nunjucks-style default globals (range, cycler, joiner) and marker values for is callable.
lexer
Tokenization: splits template source into Tokens for crate::parser::parse.
loader
Resolving template names to source strings for crate::Environment::render_template.
parser
Builds crate::ast::Node trees from crate::lexer::Token streams.
renderer
Walks crate::ast::Node trees and produces output strings using an crate::Environment and JSON context.
tag_lex
Tokenization of the inside of a {% … %} tag (after the template lexer produced crate::lexer::Token::Tag).
value
JSON serde_json::Value to display string for template output.