欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  资讯频道

CommonTemplate0.8.5发布

程序员文章站 2022-05-02 09:56:43
...
CommonTemplate0.8.5发布(2008-08-04)

CommonTemplate是一个模板引擎,用于编译运行CTL模板语言,并且模板可以在Java,.Net,JS等中通用;
其主要目标是作为JSP,ASP.Net等的替代方案,以保证用简单的语法,良好的结构,不混杂业务逻辑的方式书写页面;
适合于充当Model-View-Controller(MVC)模式应用的View角色,以使能更好的分离页面设计人员与业务开发人员的职责;
也可以作为动态文本生成工具,生成HTML、XML、Mail、Java源代码或其它文本等。

此版本主要完善核心引擎和标准指令集.
项目地址:
http://www.commontemplate.org

Bug Fixed:
修复BeanUtils查找对象属性的BUG.
修复调试器变量树栈溢出BUG.
调试窗口在Tomcat下无效的BUG.
调试窗口变量树改为延迟加载方式(点击节点时加载其子节点), 避免变量相互引用时, 树节点无穷递归.
修复调试器线程列表显示错误的BUG.
修复三目运算符不能处理null值的BUG, ${null ? "a" : "b"}原来错误输出:"a:b", 改正后输出:"b"
加入对表达式未结束括号的检查, 并抛出正确的异常信息.
修改当有多余的$end指令时抛出友好异常信息, 以前抛出空栈异常.
修改ObjectToJsonPropertyHandler, JavaScriptEscapeFilter, StringEscapeJsHandler, 采用JavaScriptUtils实现转义.
对$if, $elseif, $for等指令进行必需有参数表达式检查, 如果没有则抛出异常信息.
修复StringConvertUtils在转换单一字符上的BUG.
修复ClassUtils对参数相近类型的识别, 使表达式中的函数对泛型等均能正常调用.
修复表达式解析出错时, 没有提示出错位置信息的BUG.

Function Changed:
宏指令改为即可以传参, 又可以访问变量上下文.
块指令调用后缀默认值由"_block"改成".block"(可配置)), 如: $table.block{name : "xxx"} ... $end
$using指令代替原有$import指令的功能(将整个模板作为宏), $import指令改为导入模板内的宏定义.
改为采用反单引号表示不转义串, 不再提倡使用@符.

New Feature:
调试窗口模板面板右键菜单加入"属性"项, 显示模板名称,编码,修改时间等信息.
增加对YAML数据格式的支持. <a href="viewer.html">查看器</a>
完成SpringConfigurationLoader, 通过Spring的beans方式组装配置.
实现外部数据加载指令$load{"xxx.xml"}.
增加结束指令对块指令名称的检查, 如: $end{"if"}, 如果参数名称与被结束的块指令不匹配时抛出异常信息.
实现冒号简化语法: $macro:xxx 等价于 $macro{"xxx"}, $end:if 等价于 $end{"if"}
实现任意区间变量定义指令: $var{session -> user = name}, $var{global -> user = name}
增加===和!==操作符, 表示内存地址相等, 保证功能上的完备性.
增加$return指令, 用于中断$macro.
实现递归迭代, 如: $for{menu -> children : menus}
实现注释结束符, 不解释块结束符的转义, 如: $* \*$ *$ 以及 $! \!$ !$
实现展开式列表,如:${1,3..6,9} 输出展开式列表:[1,3,4,5,6,9],而:${1,(3..6),9} 或者 ${1,[3..6],9} 输出两级列表:[1,[3,4,5,6],9]
增加对".12"格式的小数支持, 保持与Java一致.
增加集合乘法支持, 如: ${["a", "b"] * 2} 输出: [a, b, a, b]
增加字符串除号("/")运算, 表示分割字符串, 如: ${"aaa.bbb.ccc" / '.'} 输出数组: [aaa, bbb, ccc]
增加字符串减号("-")运算, 表示过滤字符串, 如: ${"aaa.bbb.ccc" - '.'} 输出: aaabbbccc
增加操作符"^~", "$~", "*~", 与原有的"^=", "$=", "*="功能相似, 不同点在于忽略大写小比较.
增加操作符"^-", "$-" 分别表示截取前后缀,如:${"note.txt" ^- "."} 输出:note ,而:${"note.txt" $- "."} 输出:txt
增加操作符"^?", "$?" 分别表示indexOf, lastIndexOf,如:${"aaa.bbb.ccc" ^? "."} 输出:3 ,而:${"aaa.bbb.ccc" $? "."} 输出:7
增加操作符"*?", 表示整个字符串中匹配子串的个数,如:${"xxxabcxxxabcxxx" *? "abc"} 输出:2
增加C#.Net的is操作符, 功能与instanceof相同, 但更简洁, 提倡使用is.
增加$操作符, 表示创建实例, 如: ${$com.xxx.User(id: 1, name:""james)}
增加sum,avg,max,min等聚合函数, 如: ${sum(3,4,7)} 输出: 14
增加命名转换扩展属性: String.toCamelNaming, String.toCapitalNaming, String.toUnderlineNaming.
增加uncapitalize与capitalize相对应. 去除首字母大写.
增加String.toAscii和toUnicode, 分别表示Unicode码与Ascii码之间的转换.
增加String.toSwapCase, 交换大小写, 把字符串中大写的改为小写, 小写的改为大写, 与toUpperCase,toLowerCase对应.
增加字符填充leftPad和rightPad实现, 如: ${"123".leftPad(6, '0')} 输出:000123
增加 $ignore...$end 指令, 执行指令内部块, 但忽略输出.
增加 $capture{"variableName"} ... $end 指令, 捕获指令内部块输出到变量中.
增加 $strip, $trim, $leftTrim, $rightTrim 等指令, 用于删除空白符和截短两端空白符.
增加 $try $catch 指令, 用于捕获$exec和$eval等动态指令错误.
增加 $assert 指令, 用于断言前置条件,不变式等.
增加数字扩展属性: positive, negative, abs, sign
增加Float和Double类型取整属性 toCeilingInteger(向上取整), toFloorInteger(向下取整)
增加Integer和Long类型转为二进制,八进制,十六进制表示串属性 toBinaryString, toOctalString, toHexString
增加String.empty, whitespace, naming, number等字符串类型状态属性.

------------
感谢James.Li和Andrew.Chen的热心帮助