/* @author Rowan Crawford (wombleton@gmail.com) @version 0.3 @requires jQuery, $.uritemplate @link http://github.com/wombleton/linkheaders JavaScript parsing of linkheaders as per http://tools.ietf.org/html/draft-nottingham-http-link-header-10 Usage: var linkHeader = '; rel="foo foz bar"; type="application/json", ; rel="foz baz"; type="application/json"'; var links = $.linkheaders(linkHeader); links.find('foo bar').href().expand({ itemId: 'xxx' }) => /collection/xxx links.find(['foz']).href().expand({ itemId: 'xxx' }) => /collection/xxx links.find('baz').rel() => 'foz baz' links.find('foz').attr('type') => 'application/json links.findAll('foz') => Array with two links links.each(fn) => calls fn(i, link) on each link. links.each('foo', fn) => calls fn(i, link) on each link that has rel 'foo'. MIT License */ (function($, undefined) { // taken from linkheader.grammer.min.js // regenerate by using linkheaders.pegjs in http://pegjs.majda.cz var parser=(function(){var a={parse:function(k){var h=0;var p=0;var g=[];var n={};function s(z,D,B){var y=z;var C=B-z.length;for(var A=0;Ap){p=h;g=[]}if(!w(g,y)){g.push(y)}}function c(B){var D="links@"+h;var A=n[D];if(A){h=A.nextPos;return A.result}var y=v(B);if(y!==null){var z=[];while(y!==null){z.push(y);var y=v(B)}}else{var z=null}var C=z!==null?(function(F){var E=[],G;for(G=0;G"){var B=">";h+=1}else{var B=null;if(y.reportMatchFailures){l(t(">"))}}if(B!==null){if(k.substr(h,1)===";"){var z=";";h+=1}else{var z=null;if(y.reportMatchFailures){l(t(";"))}}if(z!==null){var E=[D,C,B,z]}else{var E=null;h=H}}else{var E=null;h=H}}else{var E=null;h=H}}else{var E=null;h=H}var F=E!==null?(function(I){return I})(E[1]):null;n[G]={nextPos:h,result:F};return F}function e(B){var D="attributes@"+h;var A=n[D];if(A){h=A.nextPos;return A.result}var y=m(B);if(y!==null){var z=[];while(y!==null){z.push(y);var y=m(B)}}else{var z=null}var C=z!==null?(function(E){var G={},F;for(F=0;F]/)!==null){var y=k.charAt(h);h++}else{var y=null;if(B.reportMatchFailures){l("[^>]")}}if(y!==null){var z=[];while(y!==null){z.push(y);if(k.substr(h).match(/^[^>]/)!==null){var y=k.charAt(h);h++}else{var y=null;if(B.reportMatchFailures){l("[^>]")}}}}else{var z=null}var C=z!==null?(function(E){return E.join("")})(z):null;n[D]={nextPos:h,result:C};return C}function u(A){var C="ws@"+h;var z=n[C];if(z){h=z.nextPos;return z.result}var B=[];if(k.substr(h).match(/^[ ]/)!==null){var y=k.charAt(h);h++}else{var y=null;if(A.reportMatchFailures){l("[ ]")}}while(y!==null){B.push(y);if(k.substr(h).match(/^[ ]/)!==null){var y=k.charAt(h);h++}else{var y=null;if(A.reportMatchFailures){l("[ ]")}}}n[C]={nextPos:h,result:B};return B}function b(){function A(C){switch(C.length){case 0:return"end of input";case 1:return C[0];default:C.sort();return C.slice(0,C.length-1).join(", ")+" or "+C[C.length-1]}}var z=A(g);var y=Math.max(h,p);var B=y