X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;ds=sidebyside;f=docs%2Fjsont.js;fp=docs%2Fjsont.js;h=731911407a5f64d56e6c881ead8d29f4a67e0c83;hb=f2d4bffcc760eb03dae13a9d9e7f0bbd8ec33c1e;hp=0000000000000000000000000000000000000000;hpb=49747af6b1feceb4b9ca96815bfefc214df13abc;p=jquery.git diff --git a/docs/jsont.js b/docs/jsont.js new file mode 100644 index 0000000..7319114 --- /dev/null +++ b/docs/jsont.js @@ -0,0 +1,58 @@ +function jsonT(self, rules) { + var T = { + output: false, + init: function() { + for (var rule in rules) + if (rule.substr(0,4) != "self") + rules["self."+rule] = rules[rule]; + return this; + }, + apply: function(expr) { + var trf = function(s){ return s.replace(/{([A-Za-z0-9_\$\.\[\]\'@\(\)]+)}/g, + function($0,$1){return T.processArg($1, expr);})}, + x = expr.replace(/\[[0-9]+\]/g, "[*]"), res; + if (x in rules) { + if (typeof(rules[x]) == "string") + res = trf(rules[x]); + else if (typeof(rules[x]) == "function") + res = trf(rules[x](eval(expr)).toString()); + } + else + res = T.eval(expr); + return res; + }, + processArg: function(arg, parentExpr) { + var expand = function(a,e){return (e=a.replace(/^\$/,e)).substr(0,4)!="self" ? ("self."+e) : e; }, + res = ""; + T.output = true; + if (arg.charAt(0) == "@") + res = eval(arg.replace(/@([A-za-z0-9_]+)\(([A-Za-z0-9_\$\.\[\]\']+)\)/, + function($0,$1,$2){return "rules['self."+$1+"']("+expand($2,parentExpr)+")";})); + else if (arg != "$") + res = T.apply(expand(arg, parentExpr)); + else + res = T.eval(parentExpr); + T.output = false; + return res; + }, + eval: function(expr) { + var v = eval(expr), res = ""; + if (typeof(v) != "undefined") { + if (v instanceof Array) { + for (var i=0; i