#template #html5 #codegen #document #doctype #borealis

nightly borealis_codegen

为 Borealis 编写代码生成器

1 个不稳定版本

使用旧的 Rust 2015

0.1.0 2016年4月14日

#51 in #html5

MIT/Apache

60KB
1.5K SLoC

Borealis

Build Status

Borealis 是一个用 Rust 编写的 HTML5 模板引擎。

文档

// Enable compiler plugins. Note that this only works in nightly.
#![feature(plugin)]
#![plugin(borealis_codegen)]

// Let the plugin derive `SerializeDocument` for us.
#[template_document(file="template.html")]
struct Template {
    value: String,
}

模板文件需要与代码文件位于同一目录下。

<!DOCTYPE html>
<html>
    <body>
        {{ self.value }}
    </body>
</html>

现在您可以对 borealis::serializer::serialize 进行调用,以将其序列化为一个写入器。

use borealis::serializer;

// Create a buffer which we can write too.
// Normally this would be a TCP stream or similar.
let mut writer: Vec<u8> = Vec::new();

// Create a new template.
let template = Template {
    value: "test".into(),
};

// Turn it into a document and serialize it into our buffer.
serializer::serialize(&mut writer, template);

片段

#![feature(plugin)]
#![plugin(borealis_codegen)]

#[template_fragment(file="template.html", trim)]
struct Template {
    value: u32,
}

trim 标志表示插件在解析片段文件之前将删除任何空白。 (这是使用 String::trim 完成的) 如果您的编辑器在文件末尾插入额外的换行符,这可能很有用。

与文档模板一样,文件需要与代码位于同一目录下。

<ul>
    {{ (0..self.value).map(|v| format!("{}", v)) }}
</ul>

现在可以在另一个片段或文档中使用片段。

许可证

许可协议为以下之一

贡献

除非您明确表示,否则任何有意提交给作品以供包含在内的贡献,根据 Apache-2.0 许可证定义,应按上述方式双重许可,不附加任何额外条款或条件。

依赖项

~8MB
~154K SLoC