5个版本

使用旧的Rust 2015

0.1.0 2015年11月19日
0.0.4 2015年10月24日
0.0.3 2015年10月11日
0.0.2 2015年9月16日
0.0.1 2015年8月15日

#279模板引擎

BSD-3-Clause

165KB
4K SLoC

Rust的Twig模板引擎

Linux Build Status Windows Build status

阅读 twig-rs 库文档

适用于Rust的灵活、快速、安全的模板引擎。目标是与PHP的Twig实现100%的语法兼容。次要目标是提供功能等效的方式来扩展和定制模板。

请注意,目前这个项目还在进行中,不可用。

1.0版本的目标是使测试套件功能上等效于Twig 2.0 (问题 #1)。

动机

  • 设计师熟悉Twig。
  • 重用现有的IDE对Twig的支持。

构建要求

  • 最小Rust版本:1.3.0。

待办事项列表

  • 解析器实现尚未完成 (问题 #3)。
  • LLTL(低级模板语言),基本实现在little-rs子项目中,问题 #4

工作词法分析器示例

运行示例,迭代模板在 templates/fos_login.html.twig

cargo run --example lex_tokens

将在控制台产生标记列表

Ok(Token { value: BlockStart, line_num: 1 })
Ok(Token { value: Name("extends"), line_num: 1 })
Ok(Token { value: String(FOSUserBundle::layout.html.twig), line_num: 1 })
Ok(Token { value: BlockEnd, line_num: 1 })
Ok(Token { value: Text("\n"), line_num: 2 })
Ok(Token { value: BlockStart, line_num: 3 })
...

工作解析器示例

运行解析此模板的示例

test {{ var + 1 }}
cargo run --example parse_nodes

将在控制台输出解析的模块

Ok(
    Module {
        body: List {
            items: [
                Text {
                    value: "test ",
                    line: 1
                },
                Print {
                    expr: Expr {
                        line: 1,
                        value: BinaryOperator {
                            value: "+",
                            left: Expr {
                                line: 1,
                                value: Name(
                                    "var"
                                )
                            },
                            right: Expr {
                                line: 1,
                                value: Constant(
                                    Int(
                                        1
                                    )
                                )
                            }
                        }
                    },
                    line: 1
                }
            ]
        }
    }
)

依赖项

~5MB
~97K SLoC