One-line template

One-line template is library for serialization structures in one-line string. This library is helpful for path formatting.

Template format

Example

[dependencies] oneline-template = "0.1"

```rust use oneline_template::template::TemplateBuilder;

[derive(serde_derive::Serialize)]

struct FileId { file_id: u32, }

fn main() { let templatebuilder = TemplateBuilder::new(); let template = templatebuilder.build("directory/fileno{ self.file_id }.json").expect("Unable to create template");

let fileid = FileId {fileid: 1}; let path = template.serialize(&fileid).expect("Unable to format path"); asserteq!("directory/fileno1.json", &path); } ```

Custom function

You can implement your own processing function. Contribution in this project is welcomed!

```rust

use onelinetemplate::functionexecutor::*; use oneline_template::template::TemplateBuilder;

/// Function: uint::neg /// /// Input: uint /// /// Returns uint pub struct Neg;

impl FunctionExecutor for Neg { fn schema(&self) -> FunctionSchema { FunctionSchema::new("uint:neg") }

fn call(&self, value: Value, arguments: &[Value]) -> Result { let value = value.asuint()?; let value = !value; let value = Value::UInt(value); return Ok(value); } }

[derive(serde_derive::Serialize)]

struct FileId { file_id: u32, }

fn main() { let templatebuilder = TemplateBuilder::new(); let templatebuilder = templatebuilder.withfunction(Neg); let template = templatebuilder.build("directory/fileno{ self.fileid | uint:neg( ) | uint:hex( ) }.json").expect("Unable to create template");

let fileid = FileId {fileid: 1}; let path = template.serialize(&fileid).expect("Unable to format path"); asserteq!("directory/filenofffffffffffffffffffffffffffffffe.json", &path); } ```