lib/har/viewer/scripts/json-query/JSONQuery.js in har-0.1.0 vs lib/har/viewer/scripts/json-query/JSONQuery.js in har-0.1.1

- old
+ new

@@ -1,5 +1,10 @@ -(function(){function distinctFilter(a,b){var c=[],d={};for(var e=0,f=a.length;e<f;++e){var g=a[e];b(g,e,a)&&(typeof g=="object"&&g?g.__included||(g.__included=!0,c.push(g)):d[g+typeof g]||(d[g+typeof g]=!0,c.push(g)))}for(e=0,f=c.length;e<f;++e)c[e]&&delete c[e].__included;return c}function expand(a,b){function d(a){b&&(b!==!0||a instanceof Array?a[b]&&c.push(a[b]):c.push(a));for(var e in a){var f=a[e];b?f&&typeof f=="object"&&d(f):c.push(f)}}var c=[];if(b instanceof Array){if(b.length==1)return a[b[0]];for(var e=0;e<b.length;e++)c.push(a[b[e]])}else d(a);return c}function slice(a,b,c,d){var e=a.length,f=[];c=c||e,b=b<0?Math.max(0,b+e):Math.min(e,b),c=c<0?Math.max(0,c+e):Math.min(e,c);for(var g=b;g<c;g+=d)f.push(a[g]);return f}function filter(a,b){var c=a.length;if(typeof b!="function")throw new TypeError;var d=[],e=arguments[2];for(var f=0;f<c;f++)if(f in a){var g=a[f];b.call(e,g,f,a)&&d.push(g)}return d}function map(a,b){var c=a.length;if(typeof b!="function")throw new TypeError;var d=Array(c),e=arguments[2];for(var f=0;f<c;f++)f in a&&(d[f]=b.call(e,a[f],f,a));return d}var JSONQuery=function(query,obj){function makeRegex(a,b,c,d,e){return str[e].match(/[\*\?]/)||d=="~"?"/^"+str[e].substring(1,str[e].length-1).replace(/\\([btnfr\\"'])|([^\w\*\?])/g,"\\$1$2").replace(/([\*\?])/g,".$1")+(d=="~"?"$/i":"$/")+".test("+b+")":a}function call(a){prefix=a+"("+prefix}tokens=[];var depth=0,str=[];query=query.replace(/"(\\.|[^"\\])*"|'(\\.|[^'\\])*'|[\[\]]/g,function(a){depth+=a=="["?1:a=="]"?-1:0;return a=="]"&&depth>0?"`]":a.charAt(0)=='"'||a.charAt(0)=="'"?"`"+(str.push(a)-1):a});var prefix="";query.replace(/(\]|\)|push|pop|shift|splice|sort|reverse)\s*\(/,function(){throw new Error("Unsafe function call")}),query=query.replace(/([^=]=)([^=])/g,"$1=$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){var d=a.match(/^\.?\.?(\[\s*\^?\?|\^?\?|\[\s*==)(.*?)\]?$/);if(d){var e="";a.match(/^\./)&&(call("expand"),e=",true)"),call(d[1].match(/\=/)?"map":d[1].match(/\^/)?"distinctFilter":"filter");return e+",function($obj){return "+d[2]+"})"}d=a.match(/^\[\s*([\/\\].*)\]/);if(d)return".concat().sort(function(a,b){"+d[1].replace(/\s*,?\s*([\/\\])\s*([^,\\\/]+)/g,function(a,b,c){return"var av= "+c.replace(/\$obj/,"a")+",bv= "+c.replace(/\$obj/,"b")+";if(av>bv||bv==null){return "+(b=="/"?1:-1)+";}\nif(bv>av||av==null){return "+(b=="/"?-1:1)+";}\n"})+"})";d=a.match(/^\[(-?[0-9]*):(-?[0-9]*):?(-?[0-9]*)\]/);if(d){call("slice");return","+(d[1]||0)+","+(d[2]||0)+","+(d[3]||1)+")"}if(a.match(/^\.\.|\.\*|\[\s*\*\s*\]|,/)){call("expand");return(a.charAt(1)=="."?",'"+c+"'":a.match(/,/)?","+a:"")+")"}return a}).replace(/(\$obj\s*(\.\s*[\w_$]+\s*)*)(==|~)\s*`([0-9]+)/g,makeRegex).replace(/`([0-9]+)\s*(==|~)\s*(\$obj(\s*\.\s*[\w_$]+)*)/g,function(a,b,c,d,e){return makeRegex(a,d,e,c,b)}),query=prefix+(query.charAt(0)=="$"?"":"$")+query.replace(/`([0-9]+|\])/g,function(a,b){return b=="]"?"]":str[b]});var executor=eval("1&&function($,$1,$2,$3,$4,$5,$6,$7,$8,$9){var $obj=$;return "+query+"}");for(var i=0;i<arguments.length-1;i++)arguments[i]=arguments[i+1];return obj?executor.apply(this,arguments):executor};typeof namespace=="function"?namespace("json::JSONQuery",JSONQuery):window.JSONQuery=JSONQuery})() +/* +Copyright Jason E. Smith 2008 Licensed under the Apache License, Version 2.0 (the "License"); +You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 +*/ + +(function(){function map(e,t){var n=e.length;if(typeof t!="function")throw new TypeError;var r=new Array(n),i=arguments[2];for(var s=0;s<n;s++)s in e&&(r[s]=t.call(i,e[s],s,e));return r}function filter(e,t){var n=e.length;if(typeof t!="function")throw new TypeError;var r=new Array,i=arguments[2];for(var s=0;s<n;s++)if(s in e){var o=e[s];t.call(i,o,s,e)&&r.push(o)}return r}function slice(e,t,n,r){var i=e.length,s=[];n=n||i,t=t<0?Math.max(0,t+i):Math.min(i,t),n=n<0?Math.max(0,n+i):Math.min(i,n);for(var o=t;o<n;o+=r)s.push(e[o]);return s}function expand(e,t){function r(e){t&&(t!==!0||e instanceof Array?e[t]&&n.push(e[t]):n.push(e));for(var i in e){var s=e[i];t?s&&typeof s=="object"&&r(s):n.push(s)}}var n=[];if(t instanceof Array){if(t.length==1)return e[t[0]];for(var i=0;i<t.length;i++)n.push(e[t[i]])}else r(e);return n}function distinctFilter(e,t){var n=[],r={};for(var i=0,s=e.length;i<s;++i){var o=e[i];t(o,i,e)&&(typeof o=="object"&&o?o.__included||(o.__included=!0,n.push(o)):r[o+typeof o]||(r[o+typeof o]=!0,n.push(o)))}for(i=0,s=n.length;i<s;++i)n[i]&&delete n[i].__included;return n}var JSONQuery=function(query,obj){function call(e){prefix=e+"("+prefix}function makeRegex(e,t,n,r,i){return str[i].match(/[\*\?]/)||r=="~"?"/^"+str[i].substring(1,str[i].length-1).replace(/\\([btnfr\\"'])|([^\w\*\?])/g,"\\$1$2").replace(/([\*\?])/g,".$1")+(r=="~"?"$/i":"$/")+".test("+t+")":e}tokens=[];var depth=0,str=[];query=query.replace(/"(\\.|[^"\\])*"|'(\\.|[^'\\])*'|[\[\]]/g,function(e){return depth+=e=="["?1:e=="]"?-1:0,e=="]"&&depth>0?"`]":e.charAt(0)=='"'||e.charAt(0)=="'"?"`"+(str.push(e)-1):e});var prefix="";query.replace(/(\]|\)|push|pop|shift|splice|sort|reverse)\s*\(/,function(){throw new Error("Unsafe function call")}),query=query.replace(/([^=]=)([^=])/g,"$1=$2").replace(/@|(\.\s*)?[a-zA-Z\$_]+(\s*:)?/g,function(e){return e.charAt(0)=="."?e:e=="@"?"$obj":(e.match(/:|^(\$|Math|true|false|null)$/)?"":"$obj.")+e}).replace(/\.?\.?\[(`\]|[^\]])*\]|\?.*|\.\.([\w\$_]+)|\.\*/g,function(e,t,n){var r=e.match(/^\.?\.?(\[\s*\^?\?|\^?\?|\[\s*==)(.*?)\]?$/);if(r){var i="";return e.match(/^\./)&&(call("expand"),i=",true)"),call(r[1].match(/\=/)?"map":r[1].match(/\^/)?"distinctFilter":"filter"),i+",function($obj){return "+r[2]+"})"}return r=e.match(/^\[\s*([\/\\].*)\]/),r?".concat().sort(function(a,b){"+r[1].replace(/\s*,?\s*([\/\\])\s*([^,\\\/]+)/g,function(e,t,n){return"var av= "+n.replace(/\$obj/,"a")+",bv= "+n.replace(/\$obj/,"b")+";if(av>bv||bv==null){return "+(t=="/"?1:-1)+";}\n"+"if(bv>av||av==null){return "+(t=="/"?-1:1)+";}\n"})+"})":(r=e.match(/^\[(-?[0-9]*):(-?[0-9]*):?(-?[0-9]*)\]/),r?(call("slice"),","+(r[1]||0)+","+(r[2]||0)+","+(r[3]||1)+")"):e.match(/^\.\.|\.\*|\[\s*\*\s*\]|,/)?(call("expand"),(e.charAt(1)=="."?",'"+n+"'":e.match(/,/)?","+e:"")+")"):e)}).replace(/(\$obj\s*(\.\s*[\w_$]+\s*)*)(==|~)\s*`([0-9]+)/g,makeRegex).replace(/`([0-9]+)\s*(==|~)\s*(\$obj(\s*\.\s*[\w_$]+)*)/g,function(e,t,n,r,i){return makeRegex(e,r,i,n,t)}),query=prefix+(query.charAt(0)=="$"?"":"$")+query.replace(/`([0-9]+|\])/g,function(e,t){return t=="]"?"]":str[t]});var executor=eval("1&&function($,$1,$2,$3,$4,$5,$6,$7,$8,$9){var $obj=$;return "+query+"}");for(var i=0;i<arguments.length-1;i++)arguments[i]=arguments[i+1];return obj?executor.apply(this,arguments):executor};typeof namespace=="function"?namespace("json::JSONQuery",JSONQuery):window.JSONQuery=JSONQuery})(); \ No newline at end of file