Meteor Template Language English | 中文 | Translate  
Download News Forums About
Document
Overview
Introduction
User Guide
Developer Guide
Download
Releases
CVS
Applications
Plugin
Resource
License
Changes Log
Bugs List
Properties File
UML
Java Doc
Code Coverage
Community
Report Bugs Here !
Forums
Mail List
Support
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>



Copyright © 2007 Meteor Team