|
|
| MeteorTL User Guide |
|
1. Syntax:
Only one syntax rule:
@directive{expression}
2. Escape:
\@
3. Special Directives:
@# line comment ...
@*
block comment ...
@*
@!
no parse, eg: @if ...
@!
4. Standard Directives:
(1) Output Directives:
@{user.name}
@msg{"home.title"}
(2) Include Directives:
@include{"common.mtl"}
@display{"article.txt"}
@import{mymacro : "mymacro.mm"}
(3) Extend Directives:
@zone{"myzone"}
...
@end
@extend{"super.mtl"}
@rewrite{"myzone"}
@superzone
...
@end
@end
(4) Macro Directives:
@macro{"mymacro"}
...
@end
@mymacro{param1: "value1", param2: "value2"}
(4) Block Directives:
@block{"myblock"}
...
@end
@show{"myblock"}
@using{mymacro : myblock}
(5) Condition Directives:
@if{user.name == "james"}
...
@elseif{ user.name == "kent"}
...
@else
...
@end
(6) Iteration Directives:
@cycle{color: "red", "blue", "green"}
@for{users, "user", "status"}
@{color}
@beak{for.count > 5}
@continue{user.name == null}
@{for.index}.@{user.name}
@forelse
have no users...
@end
(7) Filter Directives:
@compress
...
@end
@filter{"html", "js"}
...
@end
@code{"java"}
...
@end
@keyword{"word1", "word2"}
...
@end
(8) Variable Directives:
@var{name = "james"}
@set{name = "james"}
@init{name = "guest"}
(9) Debug Directives:
@stop
@profile{"xxx_time"}
...
@end
5. Standard Expression:
(1) getter:
. Property Getter, eg: @{user.name}
[] Index Getter, eg: @{user["name"]} @{user[nameVaribale]} @{items[1]} @{items[1..2]} @{items[1,2,4]}
[] Change to collection, eg: @for{num : [100]} @for{num : [name:value]}
(2) sequence:
: Entry Literal, eg: @{user.nameVar : "james"} @{name : "james"} Comment: variable key, add dot prefix: @{.name : "james"}
.. Sequence Literal, eg: @{1..5} @for{seq : 1..5} @for{weekDay : "Sunday".."Saturday"}
, List Literal, eg: @{1,2,5,7} @for{seq : (1,2,5,7)}
:, Map Literal, eg: @{a : 100, b: 2, c : 7} @for{rel : (a : 100, b: 2, c : 7)}
(3) object:
== Value Equal Comparator , eg: @{user1 == user2}
!= Value Not Equal Comparator , eg: @{user1 != user2}
| Not Empty Selector , eg: @{user1 | user2} @for{user : (users1 | users2 | users3}
(4) boolean:
&& Logic And, eg: @{user1.agree && user2.agree}
|| Logic Or, eg: @{user1.agree || user2.agree}
! Logic Not, eg: @{! user1.agree}
?: Logic Select, eg: @{user1.agree ? "yes" : "no"}
(5) number:
+ Add Operator, eg: @{user1.coins + user2.coins}
- Subtract Operator, eg: @{user1.coins - user2.coins}
* Multiply Operator, eg: @{user.coins * 2}
/ Divide Operator, eg: @{user.coins / 2}
% Modulus Operator, eg: @{user.coins % 2}
> Greater Than Comparator, eg: @{user1.coins > user2.coins}
< Less Than Comparator, eg: @{user1.coins < user2.coins}
>= Greater Equal Comparator, eg: @{user1.coins >= user2.coins}
<= Less Equal Comparator, eg: @{user1.coins <= user2.coins}
~ Number Format, eg: @{user1.coins ~ "###,##0.###"}
(6) string:
+ String Concatenate, eg: @{user.firstname + user.lastname}
> Greater Than Comparator, eg: @{user1.name > user2.name}
< Less Than Comparator, eg: @{user1.name < user2.name}
>= Greater Equal Comparator, eg: @{user1.name >= user2.name}
<= Less Equal Comparator, eg: @{user1.name <= user2.name}
(7) date:
+ After Days, eg: @{user.registerDate + 3}
- Before Days, eg: @{user.registerDate - 3}
> Greater Than Comparator, eg: @{user1.registerDate > user2.registerDate}
< Less Than Comparator, eg: @{user1.registerDate < user2.registerDate}
>= Greater Equal Comparator, eg: @{user1.registerDate >= user2.registerDate}
<= Less Equal Comparator, eg: @{user1.registerDate <= user2.registerDate}
~ Date Format, eg: @{user.registerDate ~ "yyyy-MM-dd"}
(8) array,list,map:
+ List or Map Concatenate, eg: ${items + ("a","b")}
6. Property:
(1) boolean:
not, eg: @{true.not} @{user.allow.not}
(2) string:
cap, eg: @{"james".cap}
toDate, Convert To Date Type By "yyyy-MM-dd" Format, eg: @if{now > "2007-01-01".toDate}
toDateTime, Convert To Date Type By "yyyy-MM-dd HH:mm:ss" Format, eg: @if{now > "2007-01-01 23:10:05".toDateTime}
toHtml, eg: @{"<b>".toHtml}
toInteger, Convert To Integer Type, eg: @{"1".toInteger + 2}
toLong, Convert To Long Type, eg: @{"25".toInteger + 2}
toFloat, Convert To Float Type, eg: @{"1.2".toInteger + 2}
toDouble, Convert To Double Type, eg: @{"2.3".toInteger + 2}
(3) date:
year, month, day, hour, minute, second, millisecond Date parts getter, eg: @{createDate.day} @{createDate.hour}
dayInYear, eg: @{createDate.dayInYear}
week, eg: @{createDate.week}
era, eg: @{createDate.era}
century, eg: @{createDate.century}
timezone, eg: @{createDate.timezone}
leap, eg: @if{now.lenient}
toLong, compare with 1970-01-01 00:00:00.000, eg: @{createDate.toLong}
(4) long:
toDate, Long To Date, eg: @{9999999.toDate}
7. Sequence:
(1) Number: @{1 .. 20} @{20 .. -12}
(2) Letter: @{a .. z} @{z .. a} @{A .. Z} @{b .. k}
(3) Season: @{"Spring" .. "Winter"}
(4) Month: @{"January" .. "December"}
(5) Week: @{"Sunday" .. "Saturday"}
8. Html Syntax Cost:
(1) <!--@name{expression}--> Comment Directive
(2) <table m:if="users != null && users.size > 0">...<table> Attribute Directive (if, for, out)
9. Servlet Root Model:
Servlet Scope: param, header, request, session, cookie, application
I18N Messages: msg
Action: model
10. For Example:
(1) Standard Syntax:
<html>
<body>
@if{users != null && users.size > 0}
<table border="1">
@for{user : users}
<tr>
<td>@{for.index + 1}</td>
<td>@{user.name}</td>
<td>@{user.coins}</td>
</tr>
@end
</table>
@end
</body>
</html>
(2) Comment Syntax Cost:
<html>
<body>
<!--@if{users != null && users.size > 0}-->
<table border="1">
<!--@for{user : users}-->
<tr>
<td><!--@out{for.index + 1}-->1<!--@end--></td>
<td><!--@out{user.name}-->james<!--@end--></td>
<td><!--@out{user.coins}-->2.00<!--@end--></td>
</tr>
<!--@end-->
</table>
<!--@end-->
</body>
</html>
(3) Attribute Syntax Cost:
<html>
<body>
<table m:if="users != null && users.size > 0" border="1">
<tr m:for="user : users">
<td><span m:out="for.index + 1">james</span></td>
<td><span m:out="user.name">james</span></td>
<td><span m:out="user.coins">2.00</span></td>
</tr>
</table>
</body>
</html>
|
|