query.js
2.98 KB
//>>built
define(["dojo/_base/kernel","dojo/_base/lang","dojox","dojo/_base/array"],function(m,l,h){l.getObject("json",!0,h);h.json._slice=function(b,c,e,f){var a=b.length,d=[];e=e||a;c=0>c?Math.max(0,c+a):Math.min(a,c);for(e=0>e?Math.max(0,e+a):Math.min(a,e);c<e;c+=f)d.push(b[c]);return d};h.json._find=function(b,c){function e(a){c&&(!0!==c||a instanceof Array?a[c]&&f.push(a[c]):f.push(a));for(var b in a){var d=a[b];c?d&&"object"==typeof d&&e(d):f.push(d)}}var f=[];if(c instanceof Array){if(1==c.length)return b[c[0]];
for(var a=0;a<c.length;a++)f.push(b[c[a]])}else e(b);return f};h.json._distinctFilter=function(b,c){for(var e=[],f={},a=0,d=b.length;a<d;++a){var g=b[a];c(g,a,b)&&("object"==typeof g&&g?g.__included||(g.__included=!0,e.push(g)):f[g+typeof g]||(f[g+typeof g]=!0,e.push(g)))}a=0;for(d=e.length;a<d;++a)e[a]&&delete e[a].__included;return e};return h.json.query=function(b,c){function e(k,b,c,d,e,g,f,h){return a[h].match(/[\*\?]/)||"~"==f?"/^"+a[h].substring(1,a[h].length-1).replace(/\\([btnfr\\"'])|([^\w\*\?])/g,
"\\$1$2").replace(/([\*\?])/g,"[\\w\\W]$1")+("~"==f?"$/i":"$/")+".test("+b+")":k}var f=0,a=[];b=b.replace(/"(\\.|[^"\\])*"|'(\\.|[^'\\])*'|[\[\]]/g,function(k){f+="["==k?1:"]"==k?-1:0;return"]"==k&&0<f?"`]":'"'==k.charAt(0)||"'"==k.charAt(0)?"`"+(a.push(k)-1):k});var d="";b.replace(/(\]|\)|push|pop|shift|splice|sort|reverse)\s*\(/,function(){throw Error("Unsafe function call");});b=b.replace(/([^<>=]=)([^=])/g,"$1\x3d$2").replace(/@|(\.\s*)?[a-zA-Z\$_]+(\s*:)?/g,function(a){return"."==a.charAt(0)?
a:"@"==a?"$obj":(a.match(/:|^(\$|Math|true|false|null)$/)?"":"$obj.")+a}).replace(/\.?\.?\[(`\]|[^\]])*\]|\?.*|\.\.([\w\$_]+)|\.\*/g,function(a,b,c){return(b=a.match(/^\.?\.?(\[\s*\^?\?|\^?\?|\[\s*==)(.*?)\]?$/))?(c="",a.match(/^\./)&&(d="dojox.json._find("+d,c=",true)"),d=(b[1].match(/\=/)?"dojo.map":b[1].match(/\^/)?"dojox.json._distinctFilter":"dojo.filter")+"("+d,c+",function($obj){return "+b[2]+"})"):(b=a.match(/^\[\s*([\/\\].*)\]/))?".concat().sort(function(a,b){"+b[1].replace(/\s*,?\s*([\/\\])\s*([^,\\\/]+)/g,
function(a,b,c){return"var av\x3d "+c.replace(/\$obj/,"a")+",bv\x3d "+c.replace(/\$obj/,"b")+";if(av\x3ebv||bv\x3d\x3dnull){return "+("/"==b?1:-1)+";}\nif(bv\x3eav||av\x3d\x3dnull){return "+("/"==b?-1:1)+";}\n"})+"return 0;})":(b=a.match(/^\[(-?[0-9]*):(-?[0-9]*):?(-?[0-9]*)\]/))?(d="dojox.json._slice("+d,","+(b[1]||0)+","+(b[2]||0)+","+(b[3]||1)+")"):a.match(/^\.\.|\.\*|\[\s*\*\s*\]|,/)?(d="dojox.json._find("+d,("."==a.charAt(1)?",'"+c+"'":a.match(/,/)?","+a:"")+")"):a}).replace(/(\$obj\s*((\.\s*[\w_$]+\s*)|(\[\s*`([0-9]+)\s*`\]))*)(==|~)\s*`([0-9]+)/g,
e).replace(/`([0-9]+)\s*(==|~)\s*(\$obj\s*((\.\s*[\w_$]+)|(\[\s*`([0-9]+)\s*`\]))*)/g,function(a,b,c,d,f,g,h,l){return e(a,d,f,g,h,l,c,b)});b=d+("$"==b.charAt(0)?"":"$")+b.replace(/`([0-9]+|\])/g,function(b,c){return"]"==c?"]":a[c]});for(var g=eval("1\x26\x26function($,$1,$2,$3,$4,$5,$6,$7,$8,$9){var $obj\x3d$;return "+b+"}"),h=0;h<arguments.length-1;h++)arguments[h]=arguments[h+1];return c?g.apply(this,arguments):g}});