From bdc51db2026fdd561ac064527b39caa84006c7e6 Mon Sep 17 00:00:00 2001 From: XhmikosR Date: Sat, 8 Mar 2014 18:04:17 +0200 Subject: [PATCH] Run `grunt dist`. --- dist/htmlminifier.js | 133 ++++++++++++++++++++++++--------------- dist/htmlminifier.min.js | 2 +- 2 files changed, 85 insertions(+), 50 deletions(-) diff --git a/dist/htmlminifier.js b/dist/htmlminifier.js index c48692b..02a6b2d 100644 --- a/dist/htmlminifier.js +++ b/dist/htmlminifier.js @@ -34,6 +34,7 @@ /* global ActiveXObject, DOMDocument */ (function(global){ + 'use strict'; // Regular Expressions for parsing tags and attributes var startTag = /^<([\w:-]+)((?:\s*[\w:-]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)>/, @@ -82,8 +83,9 @@ index = html.indexOf('-->'); if ( index >= 0 ) { - if ( handler.comment ) + if ( handler.comment ) { handler.comment( html.substring( 4, index ) ); + } html = html.substring( index + 3 ); chars = false; } @@ -102,8 +104,9 @@ // Doctype: else if ( (match = doctype.exec( html )) ) { - if ( handler.doctype ) + if ( handler.doctype ) { handler.doctype( match[0] ); + } html = html.substring( match[0].length ); chars = false; } @@ -115,12 +118,13 @@ if ( match ) { html = html.substring( match[0].length ); match[0].replace( endTag, parseEndTag ); - prevTag = '/'+match[1]; + prevTag = '/' + match[1]; chars = false; } // Start tag: - } else if ( html.indexOf('<') === 0 ) { + } + else if ( html.indexOf('<') === 0 ) { match = html.match( startTag ); if ( match ) { @@ -141,21 +145,25 @@ tagMatch = html.match( startTag ); if (tagMatch) { nextTag = tagMatch[1]; - } else { + } + else { tagMatch = html.match( endTag ); if (tagMatch) { - nextTag = '/'+tagMatch[1]; - } else { + nextTag = '/' + tagMatch[1]; + } + else { nextTag = ''; } } - if ( handler.chars ) + if ( handler.chars ) { handler.chars(text, prevTag, nextTag); + } } - } else { + } + else { stackedTag = stack.last().toLowerCase(); reStackedTag = reCache[stackedTag] || (reCache[stackedTag] = new RegExp('([\\s\\S]*?)<\/' + stackedTag + '[^>]*>', 'i')); @@ -167,8 +175,9 @@ .replace(//g, '$1'); } - if ( handler.chars ) + if ( handler.chars ) { handler.chars( text ); + } return ''; }); @@ -176,8 +185,9 @@ parseEndTag( '', stackedTag ); } - if ( html === last ) + if ( html === last ) { throw 'Parse Error: ' + html; + } last = html; } @@ -199,7 +209,8 @@ if ( !unary ) { stack.push( tagName ); - } else { + } + else { unarySlash = tag.match( endingSlash ); } @@ -218,8 +229,9 @@ }); }); - if ( handler.start ) + if ( handler.start ) { handler.start( tagName, attrs, unary, unarySlash ); + } } } @@ -227,20 +239,24 @@ var pos; // If no tag name is provided, clean shop - if ( !tagName ) + if ( !tagName ) { pos = 0; - - // Find the closest opened tag of the same type - else - for ( pos = stack.length - 1; pos >= 0; pos-- ) - if ( stack[ pos ] === tagName ) + } + else { // Find the closest opened tag of the same type + for ( pos = stack.length - 1; pos >= 0; pos-- ) { + if ( stack[ pos ] === tagName ) { break; + } + } + } if ( pos >= 0 ) { // Close all the open elements, up the stack - for ( var i = stack.length - 1; i >= pos; i-- ) - if ( handler.end ) + for ( var i = stack.length - 1; i >= pos; i-- ) { + if ( handler.end ) { handler.end( stack[ i ] ); + } + } // Remove the open elements from the stack stack.length = pos; @@ -251,12 +267,13 @@ global.HTMLtoXML = function( html ) { var results = ''; - HTMLParser(html, { + new HTMLParser(html, { start: function( tag, attrs, unary ) { results += '<' + tag; - for ( var i = 0; i < attrs.length; i++ ) + for ( var i = 0; i < attrs.length; i++ ) { results += ' ' + attrs[i].name + '="' + attrs[i].escaped + '"'; + } results += (unary ? '/' : '') + '>'; }, @@ -288,17 +305,22 @@ }; if ( !doc ) { - if ( typeof DOMDocument !== 'undefined' ) + if ( typeof DOMDocument !== 'undefined' ) { doc = new DOMDocument(); - else if ( typeof document !== 'undefined' && document.implementation && document.implementation.createDocument ) + } + else if ( typeof document !== 'undefined' && document.implementation && document.implementation.createDocument ) { doc = document.implementation.createDocument('', '', null); - else if ( typeof ActiveX !== 'undefined' ) + } + else if ( typeof ActiveX !== 'undefined' ) { doc = new ActiveXObject('Msxml.DOMDocument'); + } - } else + } + else { doc = doc.ownerDocument || doc.getOwnerDocument && doc.getOwnerDocument() || doc; + } var elems = [], documentElement = doc.documentElement || @@ -318,15 +340,17 @@ } // Find all the unique elements - if ( doc.getElementsByTagName ) - for ( var i in one ) + if ( doc.getElementsByTagName ) { + for ( var i in one ) { one[ i ] = doc.getElementsByTagName( i )[0]; + } + } // If we're working with a document, inject contents into // the body element var curParentNode = one.body; - HTMLParser( html, { + new HTMLParser( html, { start: function( tagName, attrs, unary ) { // If it's a pre-built element, then we can ignore // its construction @@ -337,14 +361,16 @@ var elem = doc.createElement( tagName ); - for ( var attr in attrs ) + for ( var attr in attrs ) { elem.setAttribute( attrs[ attr ].name, attrs[ attr ].value ); + } - if ( structure[ tagName ] && typeof one[ structure[ tagName ] ] !== 'boolean' ) + if ( structure[ tagName ] && typeof one[ structure[ tagName ] ] !== 'boolean' ) { one[ structure[ tagName ] ].appendChild( elem ); - - else if ( curParentNode && curParentNode.appendChild ) + } + else if ( curParentNode && curParentNode.appendChild ) { curParentNode.appendChild( elem ); + } if ( !unary ) { elems.push( elem ); @@ -382,6 +408,7 @@ })(typeof exports === 'undefined' ? this : exports); (function(global){ + 'use strict'; var log, HTMLParser; if (global.console && global.console.log) { @@ -572,12 +599,12 @@ var reStartDelimiter = { // account for js + html comments (e.g.: //\s*$/, - 'style': /\s*-->\s*$/ + script: /\s*(?:\/\/)?\s*-->\s*$/, + style: /\s*-->\s*$/ }; function removeComments(text, tag) { return text.replace(reStartDelimiter[tag], '').replace(reEndDelimiter[tag], ''); @@ -653,7 +680,6 @@ return (' ' + attrFragment); } - function setDefaultTesters(options) { var defaultTesters = ['canCollapseWhitespace','canTrimWhitespace']; @@ -691,7 +717,7 @@ return canTrimWhitespace(tag) || options.canTrimWhitespace(tag, attrs); } - HTMLParser(value, { + new HTMLParser(value, { html5: typeof options.html5 !== 'undefined' ? options.html5 : true, start: function( tag, attrs, unary, unarySlash ) { @@ -777,7 +803,8 @@ if (options.removeComments) { if (isConditionalComment(text)) { text = ''; - } else if (isIgnoredComment(text)) { + } + else if (isIgnoredComment(text)) { text = ''; } else { @@ -807,7 +834,8 @@ // for CommonJS enviroments, export everything if ( typeof exports !== 'undefined' ) { exports.minify = minify; - } else { + } + else { global.minify = minify; } @@ -822,6 +850,7 @@ */ (function(global) { + 'use strict'; function isPresentationalElement(tag) { return (/^(?:b|i|big|small|hr|blink|marquee)$/).test(tag); @@ -888,12 +917,14 @@ if (isDeprecatedElement(tag)) { this.log.push( '
  • Found deprecated <' + - tag + '> element
  • '); + tag + '> element' + ); } else if (isPresentationalElement(tag)) { this.log.push( '
  • Found presentational <' + - tag + '> element
  • '); + tag + '> element' + ); } else { this.checkRepeatingElement(tag); @@ -919,21 +950,25 @@ if (isEventAttribute(attrName)) { this.log.push( '
  • Found event attribute (', - attrName, ') on <' + tag + '> element
  • '); + attrName, ') on <' + tag + '> element' + ); } else if (isDeprecatedAttribute(tag, attrName)) { this.log.push( '
  • Found deprecated ' + - attrName + ' attribute on <', tag, '> element
  • '); + attrName + ' attribute on <', tag, '> element' + ); } else if (isStyleAttribute(attrName)) { this.log.push( - '
  • Found style attribute on <', tag, '> element
  • '); + '
  • Found style attribute on <', tag, '> element
  • ' + ); } else if (isInaccessibleAttribute(attrName, attrValue)) { this.log.push( - '
  • Found inaccessible attribute '+ - '(on <', tag, '> element)
  • '); + '
  • Found inaccessible attribute ' + + '(on <', tag, '> element)
  • ' + ); } }; diff --git a/dist/htmlminifier.min.js b/dist/htmlminifier.min.js index 75679ac..91475d9 100644 --- a/dist/htmlminifier.min.js +++ b/dist/htmlminifier.min.js @@ -3,4 +3,4 @@ * Copyright 2010-2014 Juriy "kangax" Zaytsev * Licensed under MIT (https://github.com/kangax/html-minifier/blob/gh-pages/LICENSE) */ -!function(a){function b(a){for(var b={},c=a.split(","),d=0;d\s]+))?)*)\s*(\/?)>/,g=/^<\/([\w:-]+)[^>]*>/,h=/\/>$/,i=/([\w:-]+)(?:\s*=\s*(?:(?:"((?:\\.|[^"])*)")|(?:'((?:\\.|[^'])*)')|([^>\s]+)))?/g,j=/^]+>/i,k=/<(%|\?)/,l=/(%|\?)>/,m=b("area,base,basefont,br,col,frame,hr,img,input,isindex,link,meta,param,embed"),n=b("a,abbr,acronym,applet,b,basefont,bdo,big,br,button,cite,code,del,dfn,em,font,i,iframe,img,input,ins,kbd,label,map,object,q,s,samp,script,select,small,span,strike,strong,sub,sup,textarea,tt,u,var"),o=b("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source"),p=b("checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected"),q=b("script,style"),r={},s=a.HTMLParser=function(a,b){function s(a,c,d,e){for(var f=!1;!b.html5&&z.last()&&n[z.last()];)t("",z.last());if(o[c]&&z.last()===c&&t("",c),e=m[c]||!!e,e?f=a.match(h):z.push(c),b.start){var g=[];d.replace(i,function(a,b){var c=arguments[2]?arguments[2]:arguments[3]?arguments[3]:arguments[4]?arguments[4]:p[b]?b:"";g.push({name:b,value:c,escaped:c.replace(/(^|[^\\])"/g,"$1"")})}),b.start&&b.start(c,g,e,f)}}function t(a,c){var d;if(c)for(d=z.length-1;d>=0&&z[d]!==c;d--);else d=0;if(d>=0){for(var e=z.length-1;e>=d;e--)b.end&&b.end(z[e]);z.length=d}}var u,v,w,x,y,z=[],A=a;for(z.last=function(){return this[this.length-1]};a;){if(v=!0,z.last()&&q[z.last()])c=z.last().toLowerCase(),d=r[c]||(r[c]=new RegExp("([\\s\\S]*?)]*>","i")),a=a.replace(d,function(a,d){return"script"!==c&&"style"!==c&&(d=d.replace(//g,"$1").replace(//g,"$1")),b.chars&&b.chars(d),""}),t("",c);else if(0===a.indexOf(""),u>=0&&(b.comment&&b.comment(a.substring(4,u)),a=a.substring(u+3),v=!1)):0===a.search(k)?(u=a.search(l),u>=0&&(b.ignore&&b.ignore(a.substring(0,u+2)),a=a.substring(u+2),v=!1)):(w=j.exec(a))?(b.doctype&&b.doctype(w[0]),a=a.substring(w[0].length),v=!1):0===a.indexOf("u?a:a.substring(0,u);a=0>u?"":a.substring(u),e=a.match(f),e?y=e[1]:(e=a.match(g),y=e?"/"+e[1]:""),b.chars&&b.chars(B,x,y)}if(a===A)throw"Parse Error: "+a;A=a}t()};a.HTMLtoXML=function(a){var b="";return s(a,{start:function(a,c,d){b+="<"+a;for(var e=0;e"},end:function(a){b+=""},chars:function(a){b+=a},comment:function(a){b+=""},ignore:function(a){b+=a}}),b},a.HTMLtoDOM=function(a,c){var d=b("html,head,body,title"),e={link:"head",base:"head"};c?c=c.ownerDocument||c.getOwnerDocument&&c.getOwnerDocument()||c:"undefined"!=typeof DOMDocument?c=new DOMDocument:"undefined"!=typeof document&&document.implementation&&document.implementation.createDocument?c=document.implementation.createDocument("","",null):"undefined"!=typeof ActiveX&&(c=new ActiveXObject("Msxml.DOMDocument"));var f=[],g=c.documentElement||c.getDocumentElement&&c.getDocumentElement();if(!g&&c.createElement&&!function(){var a=c.createElement("html"),b=c.createElement("head");b.appendChild(c.createElement("title")),a.appendChild(b),a.appendChild(c.createElement("body")),c.appendChild(a)}(),c.getElementsByTagName)for(var h in d)d[h]=c.getElementsByTagName(h)[0];var i=d.body;return s(a,{start:function(a,b,g){if(d[a])return void(i=d[a]);var h=c.createElement(a);for(var j in b)h.setAttribute(b[j].name,b[j].value);e[a]&&"boolean"!=typeof d[e[a]]?d[e[a]].appendChild(h):i&&i.appendChild&&i.appendChild(h),g||(f.push(h),i=h)},end:function(){f.length-=1,i=f[f.length-1]},chars:function(a){i.appendChild(c.createTextNode(a))},comment:function(){},ignore:function(){}}),c}}("undefined"==typeof exports?this:exports),function(a){function b(a){return a.replace(/\s+/g," ")}function c(a,b,c){var d=["a","abbr","acronym","b","bdi","bdo","big","button","cite","code","del","dfn","em","font","i","ins","kbd","mark","q","rt","rp","s","samp","small","span","strike","strong","sub","sup","time","tt","u","var"];return b&&"img"!==b&&("/"!==b.substr(0,1)||"/"===b.substr(0,1)&&-1===d.indexOf(b.substr(1)))&&(a=a.replace(/^\s+/,"")),c&&"img"!==c&&("/"===c.substr(0,1)||"/"!==c.substr(0,1)&&-1===d.indexOf(c))&&(a=a.replace(/\s+$/,"")),b&&c?a.replace(/[\t\n\r]+/g," ").replace(/[ ]+/g," "):a}function d(a){return/\[if[^\]]+\]/.test(a)||/\s*(]+$/.test(a)&&!/\/$/.test(a)&&!/\/$/.test(a)}function h(a,b){for(var c=a.length;c--;)if(a[c].name.toLowerCase()===b)return!0;return!1}function i(a,b,c,d){return c=C(c.toLowerCase()),"script"===a&&"language"===b&&"javascript"===c||"form"===a&&"method"===b&&"get"===c||"input"===a&&"type"===b&&"text"===c||"script"===a&&"charset"===b&&!h(d,"src")||"a"===a&&"name"===b&&h(d,"id")||"area"===a&&"shape"===b&&"rect"===c}function j(a,b,c){return"script"===a&&"type"===b&&"text/javascript"===C(c.toLowerCase())}function k(a,b,c){return("style"===a||"link"===a)&&"type"===b&&"text/css"===C(c.toLowerCase())}function l(a){return/^(?:allowfullscreen|async|autofocus|checked|compact|declare|default|defer|disabled|formnovalidate|hidden|inert|ismap|itemscope|multiple|muted|nohref|noresize|noshade|novalidate|nowrap|open|readonly|required|reversed|seamless|selected|sortable|truespeed|typemustmatch)$/.test(a)}function m(a,b){return/^(?:a|area|link|base)$/.test(b)&&"href"===a||"img"===b&&/^(?:src|longdesc|usemap)$/.test(a)||"object"===b&&/^(?:classid|codebase|data|usemap)$/.test(a)||"q"===b&&"cite"===a||"blockquote"===b&&"cite"===a||("ins"===b||"del"===b)&&"cite"===a||"form"===b&&"action"===a||"input"===b&&("src"===a||"usemap"===a)||"head"===b&&"profile"===a||"script"===b&&("src"===a||"for"===a)}function n(a,b){return/^(?:a|area|object|button)$/.test(b)&&"tabindex"===a||"input"===b&&("maxlength"===a||"tabindex"===a)||"select"===b&&("size"===a||"tabindex"===a)||"textarea"===b&&/^(?:rows|cols|tabindex)$/.test(a)||"colgroup"===b&&"span"===a||"col"===b&&"span"===a||("th"===b||"td"===b)&&("rowspan"===a||"colspan"===a)}function o(a,c,d){return f(c)?C(d).replace(/^javascript:\s*/i,"").replace(/\s*;$/,""):"class"===c?b(C(d)):m(c,a)||n(c,a)?C(d):"style"===c?C(d).replace(/\s*;\s*$/,""):d}function p(a){return a.replace(/^(\[[^\]]+\]>)\s*/,"$1").replace(/\s*(\s*\*\/|\/\/\s*\]\]>)\s*$/,"")}function r(a,b){return a.replace(D[b],"").replace(E[b],"")}function s(a){return/^(?:html|t?body|t?head|tfoot|tr|td|th|option|source)$/.test(a)}function t(a,b,c){var d=/^(["'])?\s*\1$/.test(c);return d?"input"===a&&"value"===b||F.test(b):!1}function u(a){return"textarea"!==a}function v(a){return!/^(?:script|style|pre|textarea)$/.test(a)}function w(a){return!/^(?:pre|textarea)$/.test(a)}function x(a,b,c,d){var e,f=d.caseSensitive?a.name:a.name.toLowerCase(),h=a.escaped;return d.removeRedundantAttributes&&i(c,f,h,b)||d.removeScriptTypeAttributes&&j(c,f,h)||d.removeStyleLinkTypeAttributes&&k(c,f,h)?"":(h=o(c,f,h),d.removeAttributeQuotes&&g(h)||(h='"'+h+'"'),d.removeEmptyAttributes&&t(c,f,h)?"":(e=d.collapseBooleanAttributes&&l(f)?f:f+"="+h," "+e))}function y(a){for(var b=["canCollapseWhitespace","canTrimWhitespace"],c=0,d=b.length;d>c;c++)a[b[c]]||(a[b[c]]=function(){return!1})}function z(a,f){function g(a,b){return v(a)||f.canCollapseWhitespace(a,b)}function h(a,b){return w(a)||f.canTrimWhitespace(a,b)}f=f||{},a=C(a),y(f);var i=[],j=[],k="",l="",m=[],n=[],o=[],t=f.lint,z=new Date;B(a,{html5:"undefined"!=typeof f.html5?f.html5:!0,start:function(a,b,c,d){a=a.toLowerCase(),l=a,k="",m=b,f.collapseWhitespace&&(h(a,b)||n.push(a),g(a,b)||o.push(a)),j.push("<",a),t&&t.testElement(a);for(var e=0,i=b.length;i>e;e++)t&&t.testAttribute(a,b[e].name.toLowerCase(),b[e].escaped),j.push(x(b[e],b,a,f));j.push((d&&f.keepClosingSlash?"/":"")+">")},end:function(a){f.collapseWhitespace&&(n.length&&a===n[n.length-1]&&n.pop(),o.length&&a===o[o.length-1]&&o.pop());var b=""===k&&a===l;return f.removeEmptyElements&&b&&u(a)?void j.splice(j.lastIndexOf("<")):void(f.removeOptionalTags&&s(a)||(j.push(""),i.push.apply(i,j),j.length=0,k=""))},chars:function(a,d,e){("script"===l||"style"===l)&&(f.removeCommentsFromCDATA&&(a=r(a,l)),f.removeCDATASectionsFromCDATA&&(a=q(a))),f.collapseWhitespace&&(n.length||(a=d||e?c(a,d,e):C(a)),o.length||(a=b(a))),k=a,t&&t.testChars(a),j.push(a)},comment:function(a){a=f.removeComments?d(a)?"":e(a)?"":"":"",j.push(a)},ignore:function(a){j.push(f.removeIgnored?"":a)},doctype:function(a){j.push(f.useShortDoctype?"":b(a))}}),i.push.apply(i,j);var D=i.join("");return A("minified in: "+(new Date-z)+"ms"),D}var A,B;A=a.console&&a.console.log?function(b){a.console.log(b)}:function(){},a.HTMLParser?B=a.HTMLParser:"function"==typeof require&&(B=require("./htmlparser").HTMLParser);var C=function(a){return a.replace(/^\s+/,"").replace(/\s+$/,"")};String.prototype.trim&&(C=function(a){return a.trim()});var D={script:/^\s*(?:\/\/)?\s*\s*$/,style:/\s*-->\s*$/},F=new RegExp("^(?:class|id|style|title|lang|dir|on(?:focus|blur|change|click|dblclick|mouse(?:down|up|over|move|out)|key(?:press|down|up)))$");"undefined"!=typeof exports?exports.minify=z:a.minify=z}(this),function(a){function b(a){return/^(?:b|i|big|small|hr|blink|marquee)$/.test(a)}function c(a){return/^(?:applet|basefont|center|dir|font|isindex|s|strike|u)$/.test(a)}function d(a){return/^on[a-z]+/.test(a)}function e(a){return"style"===a.toLowerCase()}function f(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 g(a,b){return"href"===a&&/^\s*javascript\s*:\s*void\s*(\s+0|\(\s*0\s*\))\s*$/i.test(b)}function h(){this.log=[],this._lastElement=null,this._isElementRepeated=!1}h.prototype.testElement=function(a){c(a)?this.log.push('
  • Found deprecated <'+a+"> element
  • "):b(a)?this.log.push('
  • Found presentational <'+a+"> element
  • "):this.checkRepeatingElement(a)},h.prototype.checkRepeatingElement=function(a){"br"===a&&"br"===this._lastElement?this._isElementRepeated=!0:this._isElementRepeated&&(this._reportRepeatingElement(),this._isElementRepeated=!1),this._lastElement=a},h.prototype._reportRepeatingElement=function(){this.log.push("
  • Found <br> sequence. Try replacing it with styling.
  • ")},h.prototype.testAttribute=function(a,b,c){d(b)?this.log.push('
  • Found event attribute (',b,") on <"+a+"> element
  • "):f(a,b)?this.log.push('
  • Found deprecated '+b+" attribute on <",a,"> element
  • "):e(b)?this.log.push('
  • Found style attribute on <',a,"> element
  • "):g(b,c)&&this.log.push('
  • Found inaccessible attribute (on <',a,"> element)
  • ")},h.prototype.testChars=function(a){this._lastElement="",/( \s*){2,}/.test(a)&&this.log.push("
  • Found repeating &nbsp; sequence. Try replacing it with styling.
  • ")},h.prototype.test=function(a,b,c){this.testElement(a),this.testAttribute(a,b,c)},h.prototype.populate=function(a){this._isElementRepeated&&this._reportRepeatingElement();var b;this.log.length&&a&&(b="
      "+this.log.join("")+"
    ",a.innerHTML=b)},a.HTMLLint=h}("undefined"==typeof exports?this:exports); \ No newline at end of file +!function(a){"use strict";function b(a){for(var b={},c=a.split(","),d=0;d\s]+))?)*)\s*(\/?)>/,g=/^<\/([\w:-]+)[^>]*>/,h=/\/>$/,i=/([\w:-]+)(?:\s*=\s*(?:(?:"((?:\\.|[^"])*)")|(?:'((?:\\.|[^'])*)')|([^>\s]+)))?/g,j=/^]+>/i,k=/<(%|\?)/,l=/(%|\?)>/,m=b("area,base,basefont,br,col,frame,hr,img,input,isindex,link,meta,param,embed"),n=b("a,abbr,acronym,applet,b,basefont,bdo,big,br,button,cite,code,del,dfn,em,font,i,iframe,img,input,ins,kbd,label,map,object,q,s,samp,script,select,small,span,strike,strong,sub,sup,textarea,tt,u,var"),o=b("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source"),p=b("checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected"),q=b("script,style"),r={},s=a.HTMLParser=function(a,b){function s(a,c,d,e){for(var f=!1;!b.html5&&z.last()&&n[z.last()];)t("",z.last());if(o[c]&&z.last()===c&&t("",c),e=m[c]||!!e,e?f=a.match(h):z.push(c),b.start){var g=[];d.replace(i,function(a,b){var c=arguments[2]?arguments[2]:arguments[3]?arguments[3]:arguments[4]?arguments[4]:p[b]?b:"";g.push({name:b,value:c,escaped:c.replace(/(^|[^\\])"/g,"$1"")})}),b.start&&b.start(c,g,e,f)}}function t(a,c){var d;if(c)for(d=z.length-1;d>=0&&z[d]!==c;d--);else d=0;if(d>=0){for(var e=z.length-1;e>=d;e--)b.end&&b.end(z[e]);z.length=d}}var u,v,w,x,y,z=[],A=a;for(z.last=function(){return this[this.length-1]};a;){if(v=!0,z.last()&&q[z.last()])c=z.last().toLowerCase(),d=r[c]||(r[c]=new RegExp("([\\s\\S]*?)]*>","i")),a=a.replace(d,function(a,d){return"script"!==c&&"style"!==c&&(d=d.replace(//g,"$1").replace(//g,"$1")),b.chars&&b.chars(d),""}),t("",c);else if(0===a.indexOf(""),u>=0&&(b.comment&&b.comment(a.substring(4,u)),a=a.substring(u+3),v=!1)):0===a.search(k)?(u=a.search(l),u>=0&&(b.ignore&&b.ignore(a.substring(0,u+2)),a=a.substring(u+2),v=!1)):(w=j.exec(a))?(b.doctype&&b.doctype(w[0]),a=a.substring(w[0].length),v=!1):0===a.indexOf("u?a:a.substring(0,u);a=0>u?"":a.substring(u),e=a.match(f),e?y=e[1]:(e=a.match(g),y=e?"/"+e[1]:""),b.chars&&b.chars(B,x,y)}if(a===A)throw"Parse Error: "+a;A=a}t()};a.HTMLtoXML=function(a){var b="";return new s(a,{start:function(a,c,d){b+="<"+a;for(var e=0;e"},end:function(a){b+=""},chars:function(a){b+=a},comment:function(a){b+=""},ignore:function(a){b+=a}}),b},a.HTMLtoDOM=function(a,c){var d=b("html,head,body,title"),e={link:"head",base:"head"};c?c=c.ownerDocument||c.getOwnerDocument&&c.getOwnerDocument()||c:"undefined"!=typeof DOMDocument?c=new DOMDocument:"undefined"!=typeof document&&document.implementation&&document.implementation.createDocument?c=document.implementation.createDocument("","",null):"undefined"!=typeof ActiveX&&(c=new ActiveXObject("Msxml.DOMDocument"));var f=[],g=c.documentElement||c.getDocumentElement&&c.getDocumentElement();if(!g&&c.createElement&&!function(){var a=c.createElement("html"),b=c.createElement("head");b.appendChild(c.createElement("title")),a.appendChild(b),a.appendChild(c.createElement("body")),c.appendChild(a)}(),c.getElementsByTagName)for(var h in d)d[h]=c.getElementsByTagName(h)[0];var i=d.body;return new s(a,{start:function(a,b,g){if(d[a])return void(i=d[a]);var h=c.createElement(a);for(var j in b)h.setAttribute(b[j].name,b[j].value);e[a]&&"boolean"!=typeof d[e[a]]?d[e[a]].appendChild(h):i&&i.appendChild&&i.appendChild(h),g||(f.push(h),i=h)},end:function(){f.length-=1,i=f[f.length-1]},chars:function(a){i.appendChild(c.createTextNode(a))},comment:function(){},ignore:function(){}}),c}}("undefined"==typeof exports?this:exports),function(a){"use strict";function b(a){return a.replace(/\s+/g," ")}function c(a,b,c){var d=["a","abbr","acronym","b","bdi","bdo","big","button","cite","code","del","dfn","em","font","i","ins","kbd","mark","q","rt","rp","s","samp","small","span","strike","strong","sub","sup","time","tt","u","var"];return b&&"img"!==b&&("/"!==b.substr(0,1)||"/"===b.substr(0,1)&&-1===d.indexOf(b.substr(1)))&&(a=a.replace(/^\s+/,"")),c&&"img"!==c&&("/"===c.substr(0,1)||"/"!==c.substr(0,1)&&-1===d.indexOf(c))&&(a=a.replace(/\s+$/,"")),b&&c?a.replace(/[\t\n\r]+/g," ").replace(/[ ]+/g," "):a}function d(a){return/\[if[^\]]+\]/.test(a)||/\s*(]+$/.test(a)&&!/\/$/.test(a)&&!/\/$/.test(a)}function h(a,b){for(var c=a.length;c--;)if(a[c].name.toLowerCase()===b)return!0;return!1}function i(a,b,c,d){return c=C(c.toLowerCase()),"script"===a&&"language"===b&&"javascript"===c||"form"===a&&"method"===b&&"get"===c||"input"===a&&"type"===b&&"text"===c||"script"===a&&"charset"===b&&!h(d,"src")||"a"===a&&"name"===b&&h(d,"id")||"area"===a&&"shape"===b&&"rect"===c}function j(a,b,c){return"script"===a&&"type"===b&&"text/javascript"===C(c.toLowerCase())}function k(a,b,c){return("style"===a||"link"===a)&&"type"===b&&"text/css"===C(c.toLowerCase())}function l(a){return/^(?:allowfullscreen|async|autofocus|checked|compact|declare|default|defer|disabled|formnovalidate|hidden|inert|ismap|itemscope|multiple|muted|nohref|noresize|noshade|novalidate|nowrap|open|readonly|required|reversed|seamless|selected|sortable|truespeed|typemustmatch)$/.test(a)}function m(a,b){return/^(?:a|area|link|base)$/.test(b)&&"href"===a||"img"===b&&/^(?:src|longdesc|usemap)$/.test(a)||"object"===b&&/^(?:classid|codebase|data|usemap)$/.test(a)||"q"===b&&"cite"===a||"blockquote"===b&&"cite"===a||("ins"===b||"del"===b)&&"cite"===a||"form"===b&&"action"===a||"input"===b&&("src"===a||"usemap"===a)||"head"===b&&"profile"===a||"script"===b&&("src"===a||"for"===a)}function n(a,b){return/^(?:a|area|object|button)$/.test(b)&&"tabindex"===a||"input"===b&&("maxlength"===a||"tabindex"===a)||"select"===b&&("size"===a||"tabindex"===a)||"textarea"===b&&/^(?:rows|cols|tabindex)$/.test(a)||"colgroup"===b&&"span"===a||"col"===b&&"span"===a||("th"===b||"td"===b)&&("rowspan"===a||"colspan"===a)}function o(a,c,d){return f(c)?C(d).replace(/^javascript:\s*/i,"").replace(/\s*;$/,""):"class"===c?b(C(d)):m(c,a)||n(c,a)?C(d):"style"===c?C(d).replace(/\s*;\s*$/,""):d}function p(a){return a.replace(/^(\[[^\]]+\]>)\s*/,"$1").replace(/\s*(\s*\*\/|\/\/\s*\]\]>)\s*$/,"")}function r(a,b){return a.replace(D[b],"").replace(E[b],"")}function s(a){return/^(?:html|t?body|t?head|tfoot|tr|td|th|option|source)$/.test(a)}function t(a,b,c){var d=/^(["'])?\s*\1$/.test(c);return d?"input"===a&&"value"===b||F.test(b):!1}function u(a){return"textarea"!==a}function v(a){return!/^(?:script|style|pre|textarea)$/.test(a)}function w(a){return!/^(?:pre|textarea)$/.test(a)}function x(a,b,c,d){var e,f=d.caseSensitive?a.name:a.name.toLowerCase(),h=a.escaped;return d.removeRedundantAttributes&&i(c,f,h,b)||d.removeScriptTypeAttributes&&j(c,f,h)||d.removeStyleLinkTypeAttributes&&k(c,f,h)?"":(h=o(c,f,h),d.removeAttributeQuotes&&g(h)||(h='"'+h+'"'),d.removeEmptyAttributes&&t(c,f,h)?"":(e=d.collapseBooleanAttributes&&l(f)?f:f+"="+h," "+e))}function y(a){for(var b=["canCollapseWhitespace","canTrimWhitespace"],c=0,d=b.length;d>c;c++)a[b[c]]||(a[b[c]]=function(){return!1})}function z(a,f){function g(a,b){return v(a)||f.canCollapseWhitespace(a,b)}function h(a,b){return w(a)||f.canTrimWhitespace(a,b)}f=f||{},a=C(a),y(f);var i=[],j=[],k="",l="",m=[],n=[],o=[],t=f.lint,z=new Date;new B(a,{html5:"undefined"!=typeof f.html5?f.html5:!0,start:function(a,b,c,d){a=a.toLowerCase(),l=a,k="",m=b,f.collapseWhitespace&&(h(a,b)||n.push(a),g(a,b)||o.push(a)),j.push("<",a),t&&t.testElement(a);for(var e=0,i=b.length;i>e;e++)t&&t.testAttribute(a,b[e].name.toLowerCase(),b[e].escaped),j.push(x(b[e],b,a,f));j.push((d&&f.keepClosingSlash?"/":"")+">")},end:function(a){f.collapseWhitespace&&(n.length&&a===n[n.length-1]&&n.pop(),o.length&&a===o[o.length-1]&&o.pop());var b=""===k&&a===l;return f.removeEmptyElements&&b&&u(a)?void j.splice(j.lastIndexOf("<")):void(f.removeOptionalTags&&s(a)||(j.push(""),i.push.apply(i,j),j.length=0,k=""))},chars:function(a,d,e){("script"===l||"style"===l)&&(f.removeCommentsFromCDATA&&(a=r(a,l)),f.removeCDATASectionsFromCDATA&&(a=q(a))),f.collapseWhitespace&&(n.length||(a=d||e?c(a,d,e):C(a)),o.length||(a=b(a))),k=a,t&&t.testChars(a),j.push(a)},comment:function(a){a=f.removeComments?d(a)?"":e(a)?"":"":"",j.push(a)},ignore:function(a){j.push(f.removeIgnored?"":a)},doctype:function(a){j.push(f.useShortDoctype?"":b(a))}}),i.push.apply(i,j);var D=i.join("");return A("minified in: "+(new Date-z)+"ms"),D}var A,B;A=a.console&&a.console.log?function(b){a.console.log(b)}:function(){},a.HTMLParser?B=a.HTMLParser:"function"==typeof require&&(B=require("./htmlparser").HTMLParser);var C=function(a){return a.replace(/^\s+/,"").replace(/\s+$/,"")};String.prototype.trim&&(C=function(a){return a.trim()});var D={script:/^\s*(?:\/\/)?\s*\s*$/,style:/\s*-->\s*$/},F=new RegExp("^(?:class|id|style|title|lang|dir|on(?:focus|blur|change|click|dblclick|mouse(?:down|up|over|move|out)|key(?:press|down|up)))$");"undefined"!=typeof exports?exports.minify=z:a.minify=z}(this),function(a){"use strict";function b(a){return/^(?:b|i|big|small|hr|blink|marquee)$/.test(a)}function c(a){return/^(?:applet|basefont|center|dir|font|isindex|s|strike|u)$/.test(a)}function d(a){return/^on[a-z]+/.test(a)}function e(a){return"style"===a.toLowerCase()}function f(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 g(a,b){return"href"===a&&/^\s*javascript\s*:\s*void\s*(\s+0|\(\s*0\s*\))\s*$/i.test(b)}function h(){this.log=[],this._lastElement=null,this._isElementRepeated=!1}h.prototype.testElement=function(a){c(a)?this.log.push('
  • Found deprecated <'+a+"> element
  • "):b(a)?this.log.push('
  • Found presentational <'+a+"> element
  • "):this.checkRepeatingElement(a)},h.prototype.checkRepeatingElement=function(a){"br"===a&&"br"===this._lastElement?this._isElementRepeated=!0:this._isElementRepeated&&(this._reportRepeatingElement(),this._isElementRepeated=!1),this._lastElement=a},h.prototype._reportRepeatingElement=function(){this.log.push("
  • Found <br> sequence. Try replacing it with styling.
  • ")},h.prototype.testAttribute=function(a,b,c){d(b)?this.log.push('
  • Found event attribute (',b,") on <"+a+"> element
  • "):f(a,b)?this.log.push('
  • Found deprecated '+b+" attribute on <",a,"> element
  • "):e(b)?this.log.push('
  • Found style attribute on <',a,"> element
  • "):g(b,c)&&this.log.push('
  • Found inaccessible attribute (on <',a,"> element)
  • ")},h.prototype.testChars=function(a){this._lastElement="",/( \s*){2,}/.test(a)&&this.log.push("
  • Found repeating &nbsp; sequence. Try replacing it with styling.
  • ")},h.prototype.test=function(a,b,c){this.testElement(a),this.testAttribute(a,b,c)},h.prototype.populate=function(a){this._isElementRepeated&&this._reportRepeatingElement();var b;this.log.length&&a&&(b="
      "+this.log.join("")+"
    ",a.innerHTML=b)},a.HTMLLint=h}("undefined"==typeof exports?this:exports); \ No newline at end of file -- 2.34.1