From 8202d3f8c386992268a4af51aa7f144d7aca52b5 Mon Sep 17 00:00:00 2001 From: alexlamsl Date: Sat, 10 Sep 2016 18:21:16 +0800 Subject: [PATCH] update dependencies and tests --- .travis.yml | 1 - dist/htmllint.js | 2 +- dist/htmllint.min.js | 4 +- index.html | 2 +- package.json | 10 ++-- tests/index.html | 4 +- tests/lint.js | 107 +++++++++++++++++++++---------------------- 7 files changed, 64 insertions(+), 66 deletions(-) diff --git a/.travis.yml b/.travis.yml index e67714f..0d1a637 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,7 +3,6 @@ language: node_js sudo: false node_js: - - "0.10" - "4" - "6" diff --git a/dist/htmllint.js b/dist/htmllint.js index 88c3fec..0dbef6e 100644 --- a/dist/htmllint.js +++ b/dist/htmllint.js @@ -1,5 +1,5 @@ /*! - * HTMLLint v1.1.1 (http://kangax.github.io/html-lint/) + * HTMLLint v2.0.0 (http://kangax.github.io/html-lint/) * Copyright 2010-2016 Juriy "kangax" Zaytsev * Licensed under the MIT license */ diff --git a/dist/htmllint.min.js b/dist/htmllint.min.js index a608501..810da70 100644 --- a/dist/htmllint.min.js +++ b/dist/htmllint.min.js @@ -1,6 +1,6 @@ /*! - * HTMLLint v1.1.1 (http://kangax.github.io/html-lint/) + * HTMLLint v2.0.0 (http://kangax.github.io/html-lint/) * Copyright 2010-2016 Juriy "kangax" Zaytsev * Licensed under the MIT license */ -require=function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g=0;d--)c[d]="(?:("+a.customAttrSurround[d][0].source+")\\s*"+b+"\\s*("+a.customAttrSurround[d][1].source+"))";c.push("(?:"+b+")"),b="(?:"+c.join("|")+")"}return new RegExp("^\\s*"+b)}function f(a){return k.concat(a.customAttrAssign||[]).map(function(a){return"(?:"+a.source+")"}).join("|")}function g(a,b){function c(a){var b=a.match(n);if(b){var c={tagName:b[1],attrs:[]};a=a.slice(b[0].length);for(var d,e;!(d=a.match(o))&&(e=a.match(l));)a=a.slice(e[0].length),c.attrs.push(e);if(d)return c.unarySlash=d[1],c.rest=a.slice(d[0].length),c}}function d(a){var c=a.tagName,d=a.unarySlash;if(b.html5&&"p"===g&&x(c)&&f("",g),!b.html5)for(;g&&t(g);)f("",g);u(c)&&g===c&&f("",c);var e=s(c)||"html"===c&&"head"===g||!!d,h=a.attrs.map(function(a){function c(b){return h=a[b],e=a[b+1],"undefined"!=typeof e?'"':(e=a[b+2],"undefined"!=typeof e?"'":(e=a[b+3],"undefined"==typeof e&&v(d)&&(e=d),""))}var d,e,f,g,h,i,j=7;r&&-1===a[0].indexOf('""')&&(""===a[3]&&delete a[3],""===a[4]&&delete a[4],""===a[5]&&delete a[5]);var k=1;if(b.customAttrSurround)for(var l=0,m=b.customAttrSurround.length;m>l;l++,k+=j)if(d=a[k+1]){i=c(k+2),f=a[k],g=a[k+6];break}return!d&&(d=a[k])&&(i=c(k+1)),{name:d,value:e,customAssign:h||"=",customOpen:f||"",customClose:g||"",quote:i||""}});e||(k.push({tag:c,attrs:h}),g=c,d=""),b.start&&b.start(c,h,e,d)}function f(a,c){var d;if(c){var e=c.toLowerCase();for(d=k.length-1;d>=0&&k[d].tag.toLowerCase()!==e;d--);}else d=0;if(d>=0){for(var f=k.length-1;f>=d;f--)b.end&&b.end(k[f].tag,k[f].attrs,f>d||!a);k.length=d,g=d&&k[d-1].tag}else"br"===c.toLowerCase()?b.start&&b.start(c,[],!0,""):"p"===c.toLowerCase()&&(b.start&&b.start(c,[],!1,"",!0),b.end&&b.end(c,[]))}for(var g,h,i,j,k=[],l=e(b);a;){if(h=a,g&&w(g)){var m=g.toLowerCase(),z=y[m]||(y[m]=new RegExp("([\\s\\S]*?)]*>","i"));a=a.replace(z,function(a,c){return"script"!==m&&"style"!==m&&"noscript"!==m&&(c=c.replace(//g,"$1").replace(//g,"$1")),b.chars&&b.chars(c),""}),f("",m)}else{var A=a.indexOf("<");if(0===A){if(/^");if(B>=0){b.comment&&b.comment(a.substring(4,B)),a=a.substring(B+3),i="";continue}}if(/^");if(C>=0){b.comment&&b.comment(a.substring(2,C+1),!0),a=a.substring(C+2),i="";continue}}var D=a.match(q);if(D){b.doctype&&b.doctype(D[0]),a=a.substring(D[0].length),i="";continue}var E=a.match(p);if(E){a=a.substring(E[0].length),E[0].replace(p,f),i="/"+E[1].toLowerCase();continue}var F=c(a);if(F){a=F.rest,d(F),i=F.tagName.toLowerCase();continue}}var G;A>=0?(G=a.substring(0,A),a=a.substring(A)):(G=a,a="");var H=c(a);H?j=H.tagName:(H=a.match(p),j=H?"/"+H[1]:""),b.chars&&b.chars(G,i,j),i=""}if(a===h)throw new Error("Parse Error: "+a)}b.partialMarkup||f()}var h=a("./utils").createMapFromString,i=/([^\s"'<>\/=]+)/,j=/=/,k=[j],l=[/"([^"]*)"+/.source,/'([^']*)'+/.source,/([^\s"'=<>`]+)/.source],m=function(){var b=a("ncname").source.slice(1,-1);return"((?:"+b+"\\:)?"+b+")"}(),n=new RegExp("^<"+m),o=/^\s*(\/?)>/,p=new RegExp("^<\\/"+m+"[^>]*>"),q=/^]+>/i,r=!1;"x".replace(/x(.)?/g,function(a,b){r=""===b});var s=d("area,base,basefont,br,col,embed,frame,hr,img,input,isindex,keygen,link,meta,param,source,track,wbr"),t=d("a,abbr,acronym,applet,b,basefont,bdo,big,br,button,cite,code,del,dfn,em,font,i,iframe,img,input,ins,kbd,label,map,noscript,object,q,s,samp,script,select,small,span,strike,strong,sub,sup,svg,textarea,tt,u,var"),u=d("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source"),v=d("checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected"),w=d("script,style"),x=d("address,article,aside,base,blockquote,body,caption,col,colgroup,dd,details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,title,tr,track"),y={};c.HTMLParser=g,c.HTMLtoXML=function(a){var b="";return new g(a,{start:function(a,c,d){b+="<"+a;for(var e=0,f=c.length;f>e;e++)b+=" "+c[e].name+'="'+(c[e].value||"").replace(/"/g,""")+'"';b+=(d?"/":"")+">"},end:function(a){b+=""},chars:function(a){b+=a},comment:function(a){b+=""},ignore:function(a){b+=a}}),b},c.HTMLtoDOM=function(a,b){var c={html:!0,head:!0,body:!0,title:!0},d={link:"head",base:"head"};b?b=b.ownerDocument||b.getOwnerDocument&&b.getOwnerDocument()||b:"undefined"!=typeof DOMDocument?b=new DOMDocument:"undefined"!=typeof document&&document.implementation&&document.implementation.createDocument?b=document.implementation.createDocument("","",null):"undefined"!=typeof ActiveX&&(b=new ActiveXObject("Msxml.DOMDocument"));var e=[],f=b.documentElement||b.getDocumentElement&&b.getDocumentElement();if(!f&&b.createElement&&!function(){var a=b.createElement("html"),c=b.createElement("head");c.appendChild(b.createElement("title")),a.appendChild(c),a.appendChild(b.createElement("body")),b.appendChild(a)}(),b.getElementsByTagName)for(var h in c)c[h]=b.getElementsByTagName(h)[0];var i=c.body;return new g(a,{start:function(a,f,g){if(c[a])return void(i=c[a]);var h=b.createElement(a);for(var j in f)h.setAttribute(f[j].name,f[j].value);d[a]&&"boolean"!=typeof c[d[a]]?c[d[a]].appendChild(h):i&&i.appendChild&&i.appendChild(h),g||(e.push(h),i=h)},end:function(){e.length-=1,i=e[e.length-1]},chars:function(a){i.appendChild(b.createTextNode(a))},comment:function(){},ignore:function(){}}),b}},{"./utils":2,ncname:3}],2:[function(a,b,c){"use strict";function d(a,b){var c={};return a.forEach(function(a){c[a]=1}),b?function(a){return 1===c[a.toLowerCase()]}:function(a){return 1===c[a]}}c.createMap=d,c.createMapFromString=function(a,b){return d(a.split(/,/),b)}},{}],3:[function(a,b,c){"use strict";function d(a){return a.source.slice(1,-1)}var e=a("xml-char-classes");b.exports=new RegExp("^["+d(e.letter)+"_]["+d(e.letter)+d(e.digit)+"\\.\\-_"+d(e.combiningChar)+d(e.extender)+"]*$")},{"xml-char-classes":4}],4:[function(a,b,c){c.baseChar=/[A-Za-z\xC0-\xD6\xD8-\xF6\xF8-\u0131\u0134-\u013E\u0141-\u0148\u014A-\u017E\u0180-\u01C3\u01CD-\u01F0\u01F4\u01F5\u01FA-\u0217\u0250-\u02A8\u02BB-\u02C1\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03CE\u03D0-\u03D6\u03DA\u03DC\u03DE\u03E0\u03E2-\u03F3\u0401-\u040C\u040E-\u044F\u0451-\u045C\u045E-\u0481\u0490-\u04C4\u04C7\u04C8\u04CB\u04CC\u04D0-\u04EB\u04EE-\u04F5\u04F8\u04F9\u0531-\u0556\u0559\u0561-\u0586\u05D0-\u05EA\u05F0-\u05F2\u0621-\u063A\u0641-\u064A\u0671-\u06B7\u06BA-\u06BE\u06C0-\u06CE\u06D0-\u06D3\u06D5\u06E5\u06E6\u0905-\u0939\u093D\u0958-\u0961\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8B\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AE0\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B36-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB5\u0BB7-\u0BB9\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CDE\u0CE0\u0CE1\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D28\u0D2A-\u0D39\u0D60\u0D61\u0E01-\u0E2E\u0E30\u0E32\u0E33\u0E40-\u0E45\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD\u0EAE\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0F40-\u0F47\u0F49-\u0F69\u10A0-\u10C5\u10D0-\u10F6\u1100\u1102\u1103\u1105-\u1107\u1109\u110B\u110C\u110E-\u1112\u113C\u113E\u1140\u114C\u114E\u1150\u1154\u1155\u1159\u115F-\u1161\u1163\u1165\u1167\u1169\u116D\u116E\u1172\u1173\u1175\u119E\u11A8\u11AB\u11AE\u11AF\u11B7\u11B8\u11BA\u11BC-\u11C2\u11EB\u11F0\u11F9\u1E00-\u1E9B\u1EA0-\u1EF9\u1F00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2126\u212A\u212B\u212E\u2180-\u2182\u3041-\u3094\u30A1-\u30FA\u3105-\u312C\uAC00-\uD7A3]/,c.ideographic=/[\u3007\u3021-\u3029\u4E00-\u9FA5]/,c.letter=/[A-Za-z\xC0-\xD6\xD8-\xF6\xF8-\u0131\u0134-\u013E\u0141-\u0148\u014A-\u017E\u0180-\u01C3\u01CD-\u01F0\u01F4\u01F5\u01FA-\u0217\u0250-\u02A8\u02BB-\u02C1\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03CE\u03D0-\u03D6\u03DA\u03DC\u03DE\u03E0\u03E2-\u03F3\u0401-\u040C\u040E-\u044F\u0451-\u045C\u045E-\u0481\u0490-\u04C4\u04C7\u04C8\u04CB\u04CC\u04D0-\u04EB\u04EE-\u04F5\u04F8\u04F9\u0531-\u0556\u0559\u0561-\u0586\u05D0-\u05EA\u05F0-\u05F2\u0621-\u063A\u0641-\u064A\u0671-\u06B7\u06BA-\u06BE\u06C0-\u06CE\u06D0-\u06D3\u06D5\u06E5\u06E6\u0905-\u0939\u093D\u0958-\u0961\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8B\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AE0\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B36-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB5\u0BB7-\u0BB9\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CDE\u0CE0\u0CE1\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D28\u0D2A-\u0D39\u0D60\u0D61\u0E01-\u0E2E\u0E30\u0E32\u0E33\u0E40-\u0E45\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD\u0EAE\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0F40-\u0F47\u0F49-\u0F69\u10A0-\u10C5\u10D0-\u10F6\u1100\u1102\u1103\u1105-\u1107\u1109\u110B\u110C\u110E-\u1112\u113C\u113E\u1140\u114C\u114E\u1150\u1154\u1155\u1159\u115F-\u1161\u1163\u1165\u1167\u1169\u116D\u116E\u1172\u1173\u1175\u119E\u11A8\u11AB\u11AE\u11AF\u11B7\u11B8\u11BA\u11BC-\u11C2\u11EB\u11F0\u11F9\u1E00-\u1E9B\u1EA0-\u1EF9\u1F00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2126\u212A\u212B\u212E\u2180-\u2182\u3007\u3021-\u3029\u3041-\u3094\u30A1-\u30FA\u3105-\u312C\u4E00-\u9FA5\uAC00-\uD7A3]/,c.combiningChar=/[\u0300-\u0345\u0360\u0361\u0483-\u0486\u0591-\u05A1\u05A3-\u05B9\u05BB-\u05BD\u05BF\u05C1\u05C2\u05C4\u064B-\u0652\u0670\u06D6-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0901-\u0903\u093C\u093E-\u094D\u0951-\u0954\u0962\u0963\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u0A02\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A70\u0A71\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0B01-\u0B03\u0B3C\u0B3E-\u0B43\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B82\u0B83\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C01-\u0C03\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C82\u0C83\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0D02\u0D03\u0D3E-\u0D43\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86-\u0F8B\u0F90-\u0F95\u0F97\u0F99-\u0FAD\u0FB1-\u0FB7\u0FB9\u20D0-\u20DC\u20E1\u302A-\u302F\u3099\u309A]/,c.digit=/[0-9\u0660-\u0669\u06F0-\u06F9\u0966-\u096F\u09E6-\u09EF\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0BE7-\u0BEF\u0C66-\u0C6F\u0CE6-\u0CEF\u0D66-\u0D6F\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F29]/,c.extender=/[\xB7\u02D0\u02D1\u0387\u0640\u0E46\u0EC6\u3005\u3031-\u3035\u309D\u309E\u30FC-\u30FE]/},{}],"html-minifier-lint":[function(a,b,c){"use strict";function d(a){return/^(?:big|small|hr|blink|marquee)$/.test(a)}function e(a){return/^(?:applet|basefont|center|dir|font|isindex|strike)$/.test(a)}function f(a){return/^on[a-z]+/.test(a)}function g(a){return"style"===a.toLowerCase()}function h(a,b){return"align"===b&&/^(?:caption|applet|iframe|img|imput|object|legend|table|hr|div|h[1-6]|p)$/.test(a)||"alink"===b&&"body"===a||"alt"===b&&"applet"===a||"archive"===b&&"applet"===a||"background"===b&&"body"===a||"bgcolor"===b&&/^(?:table|t[rdh]|body)$/.test(a)||"border"===b&&/^(?:img|object)$/.test(a)||"clear"===b&&"br"===a||"code"===b&&"applet"===a||"codebase"===b&&"applet"===a||"color"===b&&/^(?:base(?:font)?)$/.test(a)||"compact"===b&&/^(?:dir|[dou]l|menu)$/.test(a)||"face"===b&&/^base(?:font)?$/.test(a)||"height"===b&&/^(?:t[dh]|applet)$/.test(a)||"hspace"===b&&/^(?:applet|img|object)$/.test(a)||"language"===b&&"script"===a||"link"===b&&"body"===a||"name"===b&&"applet"===a||"noshade"===b&&"hr"===a||"nowrap"===b&&/^t[dh]$/.test(a)||"object"===b&&"applet"===a||"prompt"===b&&"isindex"===a||"size"===b&&/^(?:hr|font|basefont)$/.test(a)||"start"===b&&"ol"===a||"text"===b&&"body"===a||"type"===b&&/^(?:li|ol|ul)$/.test(a)||"value"===b&&"li"===a||"version"===b&&"html"===a||"vlink"===b&&"body"===a||"vspace"===b&&/^(?:applet|img|object)$/.test(a)||"width"===b&&/^(?:hr|td|th|applet|pre)$/.test(a)}function i(a,b){return"href"===a&&/^\s*javascript\s*:\s*void\s*(\s+0|\(\s*0\s*\))\s*$/i.test(b)}function j(){this.log=[],this._lastElement=null,this._isElementRepeated=!1}var k=a("html-minifier/src/htmlparser").HTMLParser;j.prototype.testElement=function(a){this._attributes=Object.create(null),e(a)?this.log.push('Found deprecated <'+a+"> element"):d(a)?this.log.push('Found presentational <'+a+"> element"):this.checkRepeatingElement(a)},j.prototype.checkRepeatingElement=function(a){"br"===a&&"br"===this._lastElement?this._isElementRepeated=!0:this._isElementRepeated&&(this._reportRepeatingElement(),this._isElementRepeated=!1),this._lastElement=a},j.prototype._reportRepeatingElement=function(){this.log.push("Found <br> sequence. Try replacing it with styling.")},j.prototype.testAttribute=function(a,b,c){this._attributes[b]?this.log.push('Found repeating attribute ('+b+") on <"+a+"> element."):this._attributes[b]=!0,f(b)?this.log.push('Found event attribute ('+b+") on <"+a+"> element."):h(a,b)?this.log.push('Found deprecated '+b+" attribute on <"+a+"> element."):g(b)?this.log.push('Found style attribute on <'+a+"> element."):i(b,c)&&this.log.push('Found inaccessible attribute (on <'+a+"> element).")},j.prototype.testChars=function(a){this._lastElement="",/( \s*){2,}/.test(a)&&this.log.push("Found repeating &nbsp; sequence. Try replacing it with styling.")},j.prototype.test=function(a,b,c){this.testElement(a),this.testAttribute(a,b,c)},j.prototype.testDoctype=function(a){this._doctype=a},j.prototype.populate=function(a){this._doctype||this.log.push("No DOCTYPE found."),this._isElementRepeated&&this._reportRepeatingElement();var b;if(a)b=this.log.map(function(a){return"
  • "+a+"
  • "}).join(""),a.innerHTML="
      "+b+"
    ";else if(this.log.length)return b=this.log.join("\n - ").replace(/<[^>]+>/g,"")," - "+b.replace(/</g,"<").replace(/>/g,">")},c.HTMLLint=j,c.lint=function(a,b){var c=new j;return new k(a,{html5:!0,start:function(a,b){a=a.toLowerCase(),c.testElement(a);for(var d=0,e=b.length;e>d;d++){var f=b[d];c.testAttribute(a,f.name.toLowerCase(),f.value)}},chars:function(a){c.testChars(a)},doctype:function(a){c.testDoctype(a)}}),c.populate(b)}},{"html-minifier/src/htmlparser":1}]},{},["html-minifier-lint"]); \ No newline at end of file +require=function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g=0;d--)c[d]="(?:("+a.customAttrSurround[d][0].source+")\\s*"+b+"\\s*("+a.customAttrSurround[d][1].source+"))";c.push("(?:"+b+")"),b="(?:"+c.join("|")+")"}return new RegExp("^\\s*"+b)}function f(a){return k.concat(a.customAttrAssign||[]).map(function(a){return"(?:"+a.source+")"}).join("|")}function g(a,b){function c(a){var b=a.match(n);if(b){var c={tagName:b[1],attrs:[]};a=a.slice(b[0].length);for(var d,e;!(d=a.match(o))&&(e=a.match(l));)a=a.slice(e[0].length),c.attrs.push(e);if(d)return c.unarySlash=d[1],c.rest=a.slice(d[0].length),c}}function d(a){var c=a.tagName,d=a.unarySlash;if(b.html5&&"p"===g&&x(c)&&f("",g),!b.html5)for(;g&&t(g);)f("",g);u(c)&&g===c&&f("",c);var e=s(c)||"html"===c&&"head"===g||!!d,h=a.attrs.map(function(a){function c(b){return h=a[b],e=a[b+1],"undefined"!=typeof e?'"':(e=a[b+2],"undefined"!=typeof e?"'":(e=a[b+3],"undefined"==typeof e&&v(d)&&(e=d),""))}var d,e,f,g,h,i,j=7;r&&a[0].indexOf('""')===-1&&(""===a[3]&&delete a[3],""===a[4]&&delete a[4],""===a[5]&&delete a[5]);var k=1;if(b.customAttrSurround)for(var l=0,m=b.customAttrSurround.length;l=0&&k[d].tag.toLowerCase()!==e;d--);}else d=0;if(d>=0){for(var f=k.length-1;f>=d;f--)b.end&&b.end(k[f].tag,k[f].attrs,f>d||!a);k.length=d,g=d&&k[d-1].tag}else"br"===c.toLowerCase()?b.start&&b.start(c,[],!0,""):"p"===c.toLowerCase()&&(b.start&&b.start(c,[],!1,"",!0),b.end&&b.end(c,[]))}for(var g,h,i,j,k=[],l=e(b);a;){if(h=a,g&&w(g)){var m=g.toLowerCase(),z=y[m]||(y[m]=new RegExp("([\\s\\S]*?)]*>","i"));a=a.replace(z,function(a,c){return"script"!==m&&"style"!==m&&"noscript"!==m&&(c=c.replace(//g,"$1").replace(//g,"$1")),b.chars&&b.chars(c),""}),f("",m)}else{var A=a.indexOf("<");if(0===A){if(/^");if(B>=0){b.comment&&b.comment(a.substring(4,B)),a=a.substring(B+3),i="";continue}}if(/^");if(C>=0){b.comment&&b.comment(a.substring(2,C+1),!0),a=a.substring(C+2),i="";continue}}var D=a.match(q);if(D){b.doctype&&b.doctype(D[0]),a=a.substring(D[0].length),i="";continue}var E=a.match(p);if(E){a=a.substring(E[0].length),E[0].replace(p,f),i="/"+E[1].toLowerCase();continue}var F=c(a);if(F){a=F.rest,d(F),i=F.tagName.toLowerCase();continue}}var G;A>=0?(G=a.substring(0,A),a=a.substring(A)):(G=a,a="");var H=c(a);H?j=H.tagName:(H=a.match(p),j=H?"/"+H[1]:""),b.chars&&b.chars(G,i,j),i=""}if(a===h)throw new Error("Parse Error: "+a)}b.partialMarkup||f()}var h=a("./utils").createMapFromString,i=/([^\s"'<>\/=]+)/,j=/=/,k=[j],l=[/"([^"]*)"+/.source,/'([^']*)'+/.source,/([^\s"'=<>`]+)/.source],m=function(){var b=a("ncname").source.slice(1,-1);return"((?:"+b+"\\:)?"+b+")"}(),n=new RegExp("^<"+m),o=/^\s*(\/?)>/,p=new RegExp("^<\\/"+m+"[^>]*>"),q=/^]+>/i,r=!1;"x".replace(/x(.)?/g,function(a,b){r=""===b});var s=d("area,base,basefont,br,col,embed,frame,hr,img,input,isindex,keygen,link,meta,param,source,track,wbr"),t=d("a,abbr,acronym,applet,b,basefont,bdo,big,br,button,cite,code,del,dfn,em,font,i,iframe,img,input,ins,kbd,label,map,noscript,object,q,s,samp,script,select,small,span,strike,strong,sub,sup,svg,textarea,tt,u,var"),u=d("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source"),v=d("checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected"),w=d("script,style"),x=d("address,article,aside,base,blockquote,body,caption,col,colgroup,dd,details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,title,tr,track"),y={};c.HTMLParser=g,c.HTMLtoXML=function(a){var b="";return new g(a,{start:function(a,c,d){b+="<"+a;for(var e=0,f=c.length;e"},end:function(a){b+=""},chars:function(a){b+=a},comment:function(a){b+=""},ignore:function(a){b+=a}}),b},c.HTMLtoDOM=function(a,b){var c={html:!0,head:!0,body:!0,title:!0},d={link:"head",base:"head"};b?b=b.ownerDocument||b.getOwnerDocument&&b.getOwnerDocument()||b:"undefined"!=typeof DOMDocument?b=new DOMDocument:"undefined"!=typeof document&&document.implementation&&document.implementation.createDocument?b=document.implementation.createDocument("","",null):"undefined"!=typeof ActiveX&&(b=new ActiveXObject("Msxml.DOMDocument"));var e=[],f=b.documentElement||b.getDocumentElement&&b.getDocumentElement();if(!f&&b.createElement&&!function(){var a=b.createElement("html"),c=b.createElement("head");c.appendChild(b.createElement("title")),a.appendChild(c),a.appendChild(b.createElement("body")),b.appendChild(a)}(),b.getElementsByTagName)for(var h in c)c[h]=b.getElementsByTagName(h)[0];var i=c.body;return new g(a,{start:function(a,f,g){if(c[a])return void(i=c[a]);var h=b.createElement(a);for(var j in f)h.setAttribute(f[j].name,f[j].value);d[a]&&"boolean"!=typeof c[d[a]]?c[d[a]].appendChild(h):i&&i.appendChild&&i.appendChild(h),g||(e.push(h),i=h)},end:function(){e.length-=1,i=e[e.length-1]},chars:function(a){i.appendChild(b.createTextNode(a))},comment:function(){},ignore:function(){}}),b}},{"./utils":2,ncname:3}],2:[function(a,b,c){"use strict";function d(a,b){var c={};return a.forEach(function(a){c[a]=1}),b?function(a){return 1===c[a.toLowerCase()]}:function(a){return 1===c[a]}}c.createMap=d,c.createMapFromString=function(a,b){return d(a.split(/,/),b)}},{}],3:[function(a,b,c){"use strict";function d(a){return a.source.slice(1,-1)}var e=a("xml-char-classes");b.exports=new RegExp("^["+d(e.letter)+"_]["+d(e.letter)+d(e.digit)+"\\.\\-_"+d(e.combiningChar)+d(e.extender)+"]*$")},{"xml-char-classes":4}],4:[function(a,b,c){c.baseChar=/[A-Za-z\xC0-\xD6\xD8-\xF6\xF8-\u0131\u0134-\u013E\u0141-\u0148\u014A-\u017E\u0180-\u01C3\u01CD-\u01F0\u01F4\u01F5\u01FA-\u0217\u0250-\u02A8\u02BB-\u02C1\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03CE\u03D0-\u03D6\u03DA\u03DC\u03DE\u03E0\u03E2-\u03F3\u0401-\u040C\u040E-\u044F\u0451-\u045C\u045E-\u0481\u0490-\u04C4\u04C7\u04C8\u04CB\u04CC\u04D0-\u04EB\u04EE-\u04F5\u04F8\u04F9\u0531-\u0556\u0559\u0561-\u0586\u05D0-\u05EA\u05F0-\u05F2\u0621-\u063A\u0641-\u064A\u0671-\u06B7\u06BA-\u06BE\u06C0-\u06CE\u06D0-\u06D3\u06D5\u06E5\u06E6\u0905-\u0939\u093D\u0958-\u0961\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8B\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AE0\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B36-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB5\u0BB7-\u0BB9\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CDE\u0CE0\u0CE1\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D28\u0D2A-\u0D39\u0D60\u0D61\u0E01-\u0E2E\u0E30\u0E32\u0E33\u0E40-\u0E45\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD\u0EAE\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0F40-\u0F47\u0F49-\u0F69\u10A0-\u10C5\u10D0-\u10F6\u1100\u1102\u1103\u1105-\u1107\u1109\u110B\u110C\u110E-\u1112\u113C\u113E\u1140\u114C\u114E\u1150\u1154\u1155\u1159\u115F-\u1161\u1163\u1165\u1167\u1169\u116D\u116E\u1172\u1173\u1175\u119E\u11A8\u11AB\u11AE\u11AF\u11B7\u11B8\u11BA\u11BC-\u11C2\u11EB\u11F0\u11F9\u1E00-\u1E9B\u1EA0-\u1EF9\u1F00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2126\u212A\u212B\u212E\u2180-\u2182\u3041-\u3094\u30A1-\u30FA\u3105-\u312C\uAC00-\uD7A3]/,c.ideographic=/[\u3007\u3021-\u3029\u4E00-\u9FA5]/,c.letter=/[A-Za-z\xC0-\xD6\xD8-\xF6\xF8-\u0131\u0134-\u013E\u0141-\u0148\u014A-\u017E\u0180-\u01C3\u01CD-\u01F0\u01F4\u01F5\u01FA-\u0217\u0250-\u02A8\u02BB-\u02C1\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03CE\u03D0-\u03D6\u03DA\u03DC\u03DE\u03E0\u03E2-\u03F3\u0401-\u040C\u040E-\u044F\u0451-\u045C\u045E-\u0481\u0490-\u04C4\u04C7\u04C8\u04CB\u04CC\u04D0-\u04EB\u04EE-\u04F5\u04F8\u04F9\u0531-\u0556\u0559\u0561-\u0586\u05D0-\u05EA\u05F0-\u05F2\u0621-\u063A\u0641-\u064A\u0671-\u06B7\u06BA-\u06BE\u06C0-\u06CE\u06D0-\u06D3\u06D5\u06E5\u06E6\u0905-\u0939\u093D\u0958-\u0961\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8B\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AE0\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B36-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB5\u0BB7-\u0BB9\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CDE\u0CE0\u0CE1\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D28\u0D2A-\u0D39\u0D60\u0D61\u0E01-\u0E2E\u0E30\u0E32\u0E33\u0E40-\u0E45\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD\u0EAE\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0F40-\u0F47\u0F49-\u0F69\u10A0-\u10C5\u10D0-\u10F6\u1100\u1102\u1103\u1105-\u1107\u1109\u110B\u110C\u110E-\u1112\u113C\u113E\u1140\u114C\u114E\u1150\u1154\u1155\u1159\u115F-\u1161\u1163\u1165\u1167\u1169\u116D\u116E\u1172\u1173\u1175\u119E\u11A8\u11AB\u11AE\u11AF\u11B7\u11B8\u11BA\u11BC-\u11C2\u11EB\u11F0\u11F9\u1E00-\u1E9B\u1EA0-\u1EF9\u1F00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2126\u212A\u212B\u212E\u2180-\u2182\u3007\u3021-\u3029\u3041-\u3094\u30A1-\u30FA\u3105-\u312C\u4E00-\u9FA5\uAC00-\uD7A3]/,c.combiningChar=/[\u0300-\u0345\u0360\u0361\u0483-\u0486\u0591-\u05A1\u05A3-\u05B9\u05BB-\u05BD\u05BF\u05C1\u05C2\u05C4\u064B-\u0652\u0670\u06D6-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0901-\u0903\u093C\u093E-\u094D\u0951-\u0954\u0962\u0963\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u0A02\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A70\u0A71\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0B01-\u0B03\u0B3C\u0B3E-\u0B43\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B82\u0B83\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C01-\u0C03\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C82\u0C83\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0D02\u0D03\u0D3E-\u0D43\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86-\u0F8B\u0F90-\u0F95\u0F97\u0F99-\u0FAD\u0FB1-\u0FB7\u0FB9\u20D0-\u20DC\u20E1\u302A-\u302F\u3099\u309A]/,c.digit=/[0-9\u0660-\u0669\u06F0-\u06F9\u0966-\u096F\u09E6-\u09EF\u0A66-\u0A6F\u0AE6-\u0AEF\u0B66-\u0B6F\u0BE7-\u0BEF\u0C66-\u0C6F\u0CE6-\u0CEF\u0D66-\u0D6F\u0E50-\u0E59\u0ED0-\u0ED9\u0F20-\u0F29]/,c.extender=/[\xB7\u02D0\u02D1\u0387\u0640\u0E46\u0EC6\u3005\u3031-\u3035\u309D\u309E\u30FC-\u30FE]/},{}],"html-minifier-lint":[function(a,b,c){"use strict";function d(a){return/^(?:big|small|hr|blink|marquee)$/.test(a)}function e(a){return/^(?:applet|basefont|center|dir|font|isindex|strike)$/.test(a)}function f(a){return/^on[a-z]+/.test(a)}function g(a){return"style"===a.toLowerCase()}function h(a,b){return"align"===b&&/^(?:caption|applet|iframe|img|imput|object|legend|table|hr|div|h[1-6]|p)$/.test(a)||"alink"===b&&"body"===a||"alt"===b&&"applet"===a||"archive"===b&&"applet"===a||"background"===b&&"body"===a||"bgcolor"===b&&/^(?:table|t[rdh]|body)$/.test(a)||"border"===b&&/^(?:img|object)$/.test(a)||"clear"===b&&"br"===a||"code"===b&&"applet"===a||"codebase"===b&&"applet"===a||"color"===b&&/^(?:base(?:font)?)$/.test(a)||"compact"===b&&/^(?:dir|[dou]l|menu)$/.test(a)||"face"===b&&/^base(?:font)?$/.test(a)||"height"===b&&/^(?:t[dh]|applet)$/.test(a)||"hspace"===b&&/^(?:applet|img|object)$/.test(a)||"language"===b&&"script"===a||"link"===b&&"body"===a||"name"===b&&"applet"===a||"noshade"===b&&"hr"===a||"nowrap"===b&&/^t[dh]$/.test(a)||"object"===b&&"applet"===a||"prompt"===b&&"isindex"===a||"size"===b&&/^(?:hr|font|basefont)$/.test(a)||"start"===b&&"ol"===a||"text"===b&&"body"===a||"type"===b&&/^(?:li|ol|ul)$/.test(a)||"value"===b&&"li"===a||"version"===b&&"html"===a||"vlink"===b&&"body"===a||"vspace"===b&&/^(?:applet|img|object)$/.test(a)||"width"===b&&/^(?:hr|td|th|applet|pre)$/.test(a)}function i(a,b){return"href"===a&&/^\s*javascript\s*:\s*void\s*(\s+0|\(\s*0\s*\))\s*$/i.test(b)}function j(){this.log=[],this._lastElement=null,this._isElementRepeated=!1}var k=a("html-minifier/src/htmlparser").HTMLParser;j.prototype.testElement=function(a){this._attributes=Object.create(null),e(a)?this.log.push('Found deprecated <'+a+"> element"):d(a)?this.log.push('Found presentational <'+a+"> element"):this.checkRepeatingElement(a)},j.prototype.checkRepeatingElement=function(a){"br"===a&&"br"===this._lastElement?this._isElementRepeated=!0:this._isElementRepeated&&(this._reportRepeatingElement(),this._isElementRepeated=!1),this._lastElement=a},j.prototype._reportRepeatingElement=function(){this.log.push("Found <br> sequence. Try replacing it with styling.")},j.prototype.testAttribute=function(a,b,c){this._attributes[b]?this.log.push('Found repeating attribute ('+b+") on <"+a+"> element."):this._attributes[b]=!0,f(b)?this.log.push('Found event attribute ('+b+") on <"+a+"> element."):h(a,b)?this.log.push('Found deprecated '+b+" attribute on <"+a+"> element."):g(b)?this.log.push('Found style attribute on <'+a+"> element."):i(b,c)&&this.log.push('Found inaccessible attribute (on <'+a+"> element).")},j.prototype.testChars=function(a){this._lastElement="",/( \s*){2,}/.test(a)&&this.log.push("Found repeating &nbsp; sequence. Try replacing it with styling.")},j.prototype.test=function(a,b,c){this.testElement(a),this.testAttribute(a,b,c)},j.prototype.testDoctype=function(a){this._doctype=a},j.prototype.populate=function(a){this._doctype||this.log.push("No DOCTYPE found."),this._isElementRepeated&&this._reportRepeatingElement();var b;if(a)b=this.log.map(function(a){return"
  • "+a+"
  • "}).join(""),a.innerHTML="
      "+b+"
    ";else if(this.log.length)return b=this.log.join("\n - ").replace(/<[^>]+>/g,"")," - "+b.replace(/</g,"<").replace(/>/g,">")},c.HTMLLint=j,c.lint=function(a,b){var c=new j;return new k(a,{html5:!0,start:function(a,b){a=a.toLowerCase(),c.testElement(a);for(var d=0,e=b.length;d
    -

    HTML Lint (v1.1.1)

    +

    HTML Lint (v2.0.0)

    diff --git a/package.json b/package.json index 325813a..b4bce39 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "html-minifier-lint", "description": "HTML Linter based on HTMLMinifier.", - "version": "1.1.1", + "version": "2.0.0", "keywords": [ "check", "checker", @@ -43,15 +43,15 @@ "test": "grunt test" }, "dependencies": { - "html-minifier": "2.x" + "html-minifier": "3.x" }, "devDependencies": { "grunt": "1.0.x", "grunt-browserify": "5.0.x", - "grunt-contrib-uglify": "1.0.x", - "grunt-eslint": "18.1.x", + "grunt-contrib-uglify": "2.0.x", + "grunt-eslint": "19.0.x", "phantomjs-prebuilt": "2.1.x", - "qunitjs": "1.x" + "qunitjs": "2.x" }, "files": [ "src/*.js", diff --git a/tests/index.html b/tests/index.html index 3702387..63798c3 100644 --- a/tests/index.html +++ b/tests/index.html @@ -3,12 +3,12 @@ HTML Lint Tests - +
    - + diff --git a/tests/lint.js b/tests/lint.js index 442673d..a651799 100644 --- a/tests/lint.js +++ b/tests/lint.js @@ -8,78 +8,77 @@ if (typeof HTMLLint === 'undefined') { self.HTMLLint = require('html-minifier-lint').HTMLLint; } -test('lint exists', function() { - ok(lint); - ok(HTMLLint); +QUnit.test('lint exists', function(assert) { + assert.ok(lint); + assert.ok(HTMLLint); }); -test('lint is instance of HTMLLint', function() { +QUnit.test('lint is instance of HTMLLint', function(assert) { var lint = new HTMLLint(); - ok(lint instanceof HTMLLint); + assert.ok(lint instanceof HTMLLint); }); -test('lint API', function() { +QUnit.test('lint API', function(assert) { var lint = new HTMLLint(); - equal(0, lint.log.length, '`log` property exists'); - equal('function', typeof lint.populate, '`populate` method exists'); - equal('function', typeof lint.test, '`test` method exists'); - equal('function', typeof lint.testElement, '`testElement` method exists'); - equal('function', typeof lint.testAttribute, '`testAttribute` method exists'); + assert.equal(0, lint.log.length, '`log` property exists'); + assert.equal('function', typeof lint.populate, '`populate` method exists'); + assert.equal('function', typeof lint.test, '`test` method exists'); + assert.equal('function', typeof lint.testElement, '`testElement` method exists'); + assert.equal('function', typeof lint.testAttribute, '`testAttribute` method exists'); }); -function process(input) { +function process(assert, input) { var element = {}; lint(input, element); - return element.innerHTML || ''; + var log = element.innerHTML || ''; + return function(str, count) { + var index = -str.length; + var n = 0; + do { + index = log.indexOf(str, index + str.length); + } while (index !== -1 && ++n); + assert.equal(n, count); + }; } -function match(log, str, count) { - var index = -str.length; - var n = 0; - do { - index = log.indexOf(str, index + str.length); - } while (index !== -1 && ++n); - equal(n, count); -} - -test('deprecated attribute', function() { - var log = process(''); - match(log, 'script', 1); - match(log, 'language', 1); - match(log, 'deprecated-attribute', 1); - log = process(''); - match(log, 'script', 0); - match(log, 'language', 0); - match(log, 'deprecated-attribute', 0); +QUnit.test('deprecated attribute', function(assert) { + var match = process(assert, ''); + match('script', 1); + match('language', 1); + match('deprecated-attribute', 1); + match = process(assert, ''); + match('script', 0); + match('language', 0); + match('deprecated-attribute', 0); }); -test('deprecated element', function() { - var log = process('foo'); - match(log, 'font', 1); - match(log, 'deprecated-element', 1); - log = process('foo'); - match(log, 'span', 0); - match(log, 'deprecated-element', 0); +QUnit.test('deprecated element', function(assert) { + var match = process(assert, 'foo'); + match('font', 1); + match('deprecated-element', 1); + match = process(assert, 'foo'); + match('span', 0); + match('deprecated-element', 0); }); -test('missing DOCTYPE', function() { - var log = process('foobar'); - match(log, 'DOCTYPE', 1); - log = process('foobar'); - match(log, 'DOCTYPE', 0); +QUnit.test('missing DOCTYPE', function(assert) { + var match = process(assert, 'foobar'); + match('DOCTYPE', 1); + match = process(assert, 'foobar'); + match('DOCTYPE', 0); }); -test('repeating attribute', function() { - var log = process('click'); - match(log, 'data-foo', 1); - match(log, 'repeating-attribute', 1); - log = process('click'); - match(log, 'repeating-attribute', 0); +QUnit.test('repeating attribute', function(assert) { + var match = process(assert, 'click'); + match('data-foo', 1); + match('repeating-attribute', 1); + match = process(assert, 'click'); + match('repeating-attribute', 0); }); -test('duplicate errors', function() { - var log = process('foo'); - match(log, 'DOCTYPE', 1); - match(log, 'font', 1); - match(log, 'deprecated-element', 1); +QUnit.test('duplicate errors', function(assert) { + var match = process(assert, 'foo'); + match('DOCTYPE', 1); + match('font', 1); + match('deprecated-element', 1); });