JavaScript
/*
*jsonQ.js v 1.0.3
*Author: Sudhanshu Yadav
*s-yadav.github.com
*Copyright (c) 2013 -2015 Sudhanshu Yadav.
*Dual licensed under the MIT and GPL licenses
*/
!function(undefined){function matchPath(n,r){var t=new RegExp("^"+n.join("~~"),"i");return t.test(r.join("~~"))}function newFormat(n){var r=n.keyAdded||[],t=n.json,e=n.path,o=n.newJson;return jsonQ.each(t,function(n,a){var i=e?JSON.parse(JSON.stringify(e)):[];i.push(n),"object"==objType(t)&&(-1==r.indexOf(n)&&(r.push(n),o[n]=[]),o[n].push({path:i}));var s=objType(a);("object"==s||"array"==s)&&newFormat({json:a,newJson:o,path:i,keyAdded:r})}),o}var jsonQ=function(n){return new jsonQ.fn.init(n)},error=function(n){throw n},stringify=JSON.stringify,parse=JSON.parse;jsonQ.settings={sort:{order:"ASC",logic:function(n){return n},caseIgnore:!0,allLevel:!0}};var tFunc={topLevel:function(n){for(var r=this.jsonQ_current,t=this.cloneObj(jsonQ()),e=t.jsonQ_current=[],o="",a=n.key,i=n.method,s=0,u=r.length;u>s;s++){var l,c=r[s].path,f=!1,h=c.concat([]);if("parent"==i)0===h.length?f=!0:h.pop();else{var j=h.lastIndexOf(a);-1==j?f=!0:h=h.slice(0,j+1)}l=JSON.stringify(h),o==l||f||e.push({path:h}),o=l}return t.length=e.length,t.selector.push({method:i,key:a}),t},qualTrv:function(n){for(var r=this.jsonQ_current,t=this.cloneObj(jsonQ()),e=t.jsonQ_current=[],o=n.key,a=jsonQ.clone(this[o])||[],i=n.qualifier,s=objType(i),u=n.method,l="find"==u?!0:!1,c=0,f=r.length;f>c;c++){var h=r[c].path,j=!1;if(!l){if(0===h.length)continue;var p=h.concat([]);p.pop()}for(var y=0;y<a.length;y++){var v,g=a[y].path;if(l)v=matchPath(h,g);else{var b=g.concat([]);b.pop(),v=p.join()==b.join()}if(v){var Q=tFunc.qTest.call(this,s,i,g,e);Q&&(a.splice(y,1),y--),j=!0}else if(j)break}}return"string"==s&&(t=this.filter.call(t,i)),t.length=t.jsonQ_current.length,t.selector.push({method:u,key:o,qualifier:i}),t},qTest:function(n,r,t,e){var o="function"==n?r.call(this.pathValue(t)):"object"==n?jsonQ.checkKeyValue(this.pathValue(t),r):!0;return...