Freewind @ Thoughtworks scala java javascript dart 工具 编程实践 月结 math python english [comments admin] [feed]

(2014-03-18) 自己动手写模板引擎 – SharkDart (3) – 常用标签设计

广告: 云梯:翻墙vpn (省10元) 土行孙:科研用户翻墙http proxy (有优惠)

大大催了,得赶紧写,这一系列大概还要五六篇。

在前一篇中定义了我定义了Shark中标签的通用结构,它有两种形态,主要区别在参数上。

结构1:涉及到参数的传递,形如:

@mytag(type1 var1: desc1, type2 var2: desc2) {
    body
}


结构2:对一段代码进行操作,如对值进行判断等,形如:

@mytag(some dart code) {
    body
}


注意参数块`(...)`和主体块`{...}`都是可选的,但至少要提供一个。

我们可能会有一个疑问:使用这两种结构,是否可以设计出优雅好用的标签?

为了回答这个问题,我找了一些在模板引擎中常用的标签,按上面两种结构来定义,以验证可行性。

## 常用标签

流程控制:

加上trim参数,可以控制是否把文本两边的空白去掉,默认为false

这不是使用教程吗

通过上面对各常用标签的解释,可以认为开头定义的两种标签通用结构是可行的,下一篇我们将利用PetitParser来解析它。而这些常用标签的实现过程,将在后面与编译相关的内容中实现。

PS:

另外,写到最后,有没有发现这简直就是SharkDart的使用教程?没错,对于开发者来说,这是设计,但对用户来说,就和教程差不多了。

comments powered by Disqus