Struct stemplate::Template

source ·
pub struct Template<'a> { /* private fields */ }
Expand description

Class to hold hidden data about template

Implementations§

source§

impl<'a> Template<'a>

Class implementation

source

pub fn new(expanded: &'a str) -> Self

Create a new template using a string containing ${..} variables Note: will only dereference 8 nested levels of variables Simple default value;

§Example
use stemplate::Template;
Template::new("My name is ${name}");
§Example
use stemplate::Template;
// Simple default value (variable not supplied in template or is empty";
Template::new("My name is ${name:-Fred}");
§Example
use stemplate::Template;
// Nested variables where fullname = "${first:=Fred} ${last:=Bloggs}"
Template::new("My name is ${fullname}");
source

pub fn new_delimit(expanded: &'a str, sdlim: &'a str, edlim: &'a str) -> Self

Create a new template as above but choose different delimiters

§Example

use stemplate::Template; Template::new(“My name is {%name%}”, “{%”, “%}”);

source

pub fn render<V: AsRef<str> + Debug + ToString>( &self, vars: &HashMap<&str, V> ) -> String

Render a template.

§Example
use std::collections::HashMap;
use stemplate::Template;
let template = Template::new("My name is ${name}");
let mut args = HashMap::new();
args.insert("name", "Fred");
let s = template.render(&args);
assert_eq!(s, "My name is Fred");
source

pub fn render_strings(&self, vars: &HashMap<String, String>) -> String

Render a template with string values. Convenience for use with serde hash maps.

§Example
use std::collections::HashMap;
use stemplate::Template;
let template = Template::new("My name is ${name}");
let mut args = HashMap::new();
args.insert("name", "Fred");
let s = template.render(&args);
assert_eq!(s, "My name is Fred");
§Example
// Nested variables
use std::collections::HashMap;
use stemplate::Template;
let mut args = HashMap::new();
args.insert("first", "Doris");
args.insert("fullname", "${first:=Fred} ${last:=Bloggs}");
let template = Template::new("${fullname}");
let s = template.render(&args);
assert_eq!(s, "Doris Bloggs");
source

pub fn render_env(&self) -> String

Render a template from environment variables.

§Example
use stemplate::Template;
// Using Googles LLM API. GEMINI_URL contains other env variables
let url: String = Template::new_delimit("{GEMINI_URL}", "{", "}").render_env();

Trait Implementations§

source§

impl<'a> Debug for Template<'a>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<'a> RefUnwindSafe for Template<'a>

§

impl<'a> Send for Template<'a>

§

impl<'a> Sync for Template<'a>

§

impl<'a> Unpin for Template<'a>

§

impl<'a> UnwindSafe for Template<'a>

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.