阅读更多

5顶
0踩

编程语言

原创新闻 LiteXML1.0 Alpha12发布,添加函数定义支持

2009-05-04 13:27 by 正式记者 jindw 评论(3) 有3242人浏览
本次发布相对于上个版本。最大的改进有:
  • 添加了函数定义的支持。
  •   目前只有Java和JS由此支持,PHP,Python没有跟进
  • 改善JS目标代码翻译实现
  •   不再依靠with语法了,JSA压缩的时候不再有一堆未知变量的警告了。



函数定义语法。
<div xmlns:c="http://www.xidea.org/ns/lite/core">
  <c:def name="test(user2)" >
    ${user2.firstName} ${user2.lastName}
  </c:def>
  [${test(user)}]
</div>



生成的中间代码。
[
	[7,[" ",[4,[[-1,"user2"],[48,"firstName"]]]," ",[4,[[-1,"user2"],[48,"lastName"]]]," "],[[-4],[0,"test"],[33,"name"],[-3],[0,"user2"],[1],[33,"params"]],"#def"],
	"<div>  [",
	[4,[[-1,"test"],[-3],[-1,"user"],[1],[81]]],
	"] </div>"
]



JS版本的最终代码。
function(){
	function _$replacer(k){return k in _$context?_$context[k]:this[k];}
	var _$context = arguments[0];
	var _$out = [];
	var user=_$replacer("user");
	function test(user2,_$out){
		var _$out=[];
		_$out.push(" ");
		_$out.push(String(user2.firstName).replace(/[<>&]/g,_$replacer));
		_$out.push(" ");
		_$out.push(String(user2.lastName).replace(/[<>&]/g,_$replacer));
		_$out.push(" ");
		return _$out.join('');
	}
	if("test" in _$context){test=_$context["test"];}
	_$replacer = function(c){return "&#"+c.charCodeAt()+";";}
	
	_$out.push("<div>  [");
	_$out.push(String(test(user)).replace(/[<>&]/g,_$replacer));
	_$out.push("] </div>");
	return _$out.join('');
}


LiteXML下载地址:
http://code.google.com/p/lite/downloads/list
5
0
评论 共 3 条 请登录后发表评论
3 楼 whaosoft 2009-05-05 07:14
这个好用吗??
2 楼 jindw 2009-05-04 16:54
呵呵,目前这些改进,是不影响以前的吧?
1 楼 jianfeng008cn 2009-05-04 15:14
为什么,你现在改进的问题,在改掉前就没提起呢,这个不大好吧?

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

Global site tag (gtag.js) - Google Analytics