/*prettydiff.com api.topcoms: true, api.insize: 4, api.inchar: " ", api.vertical: true */
/*global pd, ace, exports, define */
/*jslint for: true*/
/*
Execute in a NodeJS app:
npm install prettydiff (local install)
var prettydiff = require("prettydiff"),
args = {
source: "asdf",
diff : "asdd",
lang : "text"
},
output = prettydiff.api(args);
Execute on command line with NodeJS:
npm install prettydiff -g (global install)
prettydiff source:"c:\mydirectory\myfile.js" readmethod:"file" diff:"c:\myotherfile.js"
Execute with WSH:
cscript prettydiff.wsf /source:"myFile.xml" /mode:"beautify"
Execute from JavaScript:
var args = {
source: "asdf",
diff : "asdd",
lang : "text"
},
output = prettydiff(args);
******* license start *******
@source: http://prettydiff.com/prettydiff.js
@documentation - English: http://prettydiff.com/documentation.php
@licstart The following is the entire license notice for Pretty Diff.
This code may not be used or redistributed unless the following
conditions are met:
* Prettydiff created by Austin Cheney originally on 3 Mar 2009.
http://prettydiff.com/
* The use of diffview.js and prettydiff.js must contain the following
copyright:
Copyright (c) 2007, Snowtide Informatics Systems, Inc.
All rights reserved.
- Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the
distribution.
- Neither the name of the Snowtide Informatics Systems nor the
names of its contributors may be used to endorse or promote products
derived from this software without specific prior written
permission.
- used as diffview function
http://prettydiff.com/lib/diffview.js
* The code mentioned above has significantly expanded documentation in
each of the respective function's external JS file as linked from the
documentation page:
http://prettydiff.com/documentation.php
* In addition to the previously stated requirements any use of any
component, aside from directly using the full files in their entirety,
must restate the license mentioned at the top of each concerned file.
If each and all these conditions are met use, extension, alteration,
and redistribution of Pretty Diff and its required assets is unlimited
and free without author permission.
@licend The above is the entire license notice for Pretty Diff.
******* license end *******
Join the Pretty Diff mailing list at:
https://groups.google.com/d/forum/pretty-diff
Special thanks to:
* Harry Whitfield for the numerous test cases provided against
JSPretty. http://g6auc.me.uk/
* Andreas Greuel for contributing samples to test diffview.js
https://plus.google.com/105958105635636993368/posts
*/
var prettydiff=function prettydiff(api){"use strict";var startTime=Date.now(),jsxstatus=false,summary="",charDecoder=function init_charDecoder(){return},csspretty=function init_csspretty(){return},csvbeauty=function init_csvbeauty(){return},csvmin=function init_csvmin(){return},diffview=function init_diffview(){return},jspretty=function init_jspretty(){return},markuppretty=function init_markuppretty(){return},safeSort=function safeSort(array,operation,recursive){var arTest=function safeSort_arTest(item){if(typeof item!=="object"||item.length===undefined||item.length<2){return false}return true},normal=function safeSort__normal(item){var done=[item[0]],storeb=item,child=function safeSort__normal_child(){var a=0,len=storeb.length;for(a=0;a Execution time: "+hourString+minuteString+secondString+"\s*)$/i).test(a)===true)){if(((/\s*/i).test(a)===true&&(/\s*=60&&elapsed<3600){minute()}else if(elapsed>=3600){hours=parseInt((elapsed/3600),10);hourString=hours.toString();elapsed=elapsed-(hours*3600);hourString=plural(hours," hour");minute()}else{secondString=plural(secondString," second")}return "
Code type set to auto. Presumed language is "+autoval[2]+".
"}}else if(options.api==="dom"){autoval=[options.lang,options.lang,options.lang];autostring="Code type is set to "+options.lang+".
"}else{options.lang=setlangmode(options.lang);autostring="Code type is set to "+options.lang+".
"}if(autoval[0]==="dustjs"){options.dustjs=true}if(options.lang==="html"){options.html=true;options.lang="markup"}else if(options.lang==="tss"||options.lang==="titanium"){options.titanium=true;options.lang="javscript"}if(options.lang==="css"){if(api.objsort==="css"||api.objsort==="cssonly"){options.objsort=true}if(api.preserve==="css"||api.preserve==="cssonly"){options.preserve=true}if(api.vertical==="css"||api.vertical==="cssonly"){options.vertical=true}}if(options.lang==="js"){if(api.objsort==="js"||api.objsort==="jsonly"){options.objsort=true}if(api.preserve==="js"||api.preserve==="jsonly"){options.preserve=true}if(api.vertical==="js"||api.vertical==="jsonly"){options.vertical=true}}if(options.mode==="minify"){if(options.lang==="css"){apioutput=csspretty(options)}else if(options.lang==="csv"){apioutput=csvmin(options.source,options.csvchar)}else if(options.lang==="markup"){apioutput=markuppretty(options)}else if(options.lang==="text"){apioutput=options.source;apidiffout=""}else{options.wrap=-1;apioutput=jspretty(options)}return(function core__minifyReport(){var sizediff=function core__minifyReport_score(){var a=0,lines=0,source=options.source,sizeOld=source.length,windowsSize=0,sizeNew=apioutput.length,sizeDifference=sizeOld-sizeNew,windowsDifference=0,percent=((sizeDifference/sizeOld)*100),percentUnix=percent.toFixed(2)+"%",percentWindows="",output=[];for(a=0;aDuplicate id attribute values detected: "+summary+"
")}output.push("Ou"+"tput Size | Number of Lines From Input | ||
---|---|---|---|
");output.push(sizeNew);output.push(" | ");output.push(lines+1);output.push(" | ||
Operating System | Input Size | Size Difference | Percentage of Decrease |
Unix/Linux | ");output.push(sizeOld);output.push(" | ");output.push(sizeDifference);output.push(" | ");output.push(percentUnix);output.push(" |
Windows | ");output.push(windowsSize);output.push(" | ");output.push(windowsDifference);output.push(" | ");output.push(percentWindows);output.push(" |
Code type set to auto. Presumed language is React JSX.
"}return[apioutput,autostring+proctime()+sizediff()]}())}if(options.mode==="parse"){if(options.lang==="css"){apioutput=csspretty(options)}else if(options.lang==="csv"){apioutput="CSV not supported in parse mode";apidiffout=""}else if(options.lang==="markup"){apioutput=markuppretty(options);autostring=autostring+summary}else if(options.lang==="text"){apioutput=options.source;apidiffout=""}else{apioutput=jspretty(options)}if(apidiffout===false){apidiffout=""}if(jsxstatus===true){autostring="Code type is presumed to be React JSX.
"}if(apioutput.token!==undefined){autostring=autostring+"Total tokens: "+apioutput.token.length+"
"}return[apioutput,autostring+proctime()]}if(options.mode==="beautify"){if(options.lang==="css"){apioutput=csspretty(options);apidiffout=summary}else if(options.lang==="csv"){apioutput=csvbeauty(options.source,options.csvchar);apidiffout=""}else if(options.lang==="markup"){if(api.vertical==="jsonly"){options.vertical="jsonly"}apioutput=markuppretty(options);apidiffout=summary;if(options.inchar!=="\t"){apioutput=apioutput.replace(/\n[\t]*\u0020\/>/g,"")}}else if(options.lang==="text"){apioutput=options.source;apidiffout=""}else{if(api.vertical==="jsonly"){options.vertical="jsonly"}apioutput=jspretty(options);apidiffout=summary}if(apidiffout===false){apidiffout=""}if(jsxstatus===true){autostring="Code type is presumed to be React JSX.
"}if(options.api===""&&options.jsscope!=="none"&&options.lang==="javascript"){builder.head="Error: Please try using the option labeled Plain Text (d"+"iff only). The input does not appear to be mark"+"up, CSS, or JavaScript.
",0,0]}else{if(options.lang!=="text"){achar=options.inchar}a[1]=diffview({baseTextLines:apioutput,baseTextName:options.sourcelabel,contextSize:options.context,inline:options.diffview,newTextLines:apidiffout,newTextName:options.difflabel,tchar:achar,tsize:options.insize});if(a[1][2]===1){t="";if(a[1][1]===0){s=""}}}a[0]="Number of differences: "+(a[1][1]+a[1][2])+" difference"+s+" from "+a[1][2]+" line"+t+" of code.
";if(jsxstatus===true){autostring="Code type is presumed to be React JSX.
"}if(options.api===""){builder.head="Accessibility note. <em> tags in the output represent character d"+"ifferences per lines compared.
";builder.scriptOpen="";return[builder.head+builder.cssCore+builder.cssColor+builder.cssExtra+builder.body+builder.bodyColor+builder.title+auto+proctime()+a[0]+builder.accessibility+a[1][0]+builder.scriptOpen+builder.scriptBody+builder.scriptEnd+"",""]}return[a[1][0],autostring+proctime()+a[0]+"Accessibility note. <em> tags in the output represent presentation for"+" variable coloring and scope.
"]}())}};charDecoder=function charDecoder(input){var a=0,b=0,index=0,inputLenA=0,inputLenB=0,output=[],entity=[],type=[],uni=(/u\+[0-9a-f]{4,5}\+/),unit=(/u![0-9a-f]{4,5}\+/),htmln=(/[0-9]{1,6};/),htmlt=(/&![0-9]{1,6};/);if((pd===undefined||pd.o.report.beau===null||pd.o.report.beau===undefined||typeof pd.o.report.beau.innerHTML!=="string")||(input.search(unit)===-1&&input.search(uni)===-1&&input.search(htmlt)===-1&&input.search(htmln)===-1)){return input}inputLenA=input.length;for(b=0;bNumber of HTTP requests: ");summ.push(uris);summ.push("
Type Name | <"+"th>QuantityCharacter Size | |
---|---|---|
curly braces<"+"/th> | ");summ.push(stats.braces);summ.push(" | ");summ.push(stats.braces);summ.push(" |
colon | ");summ.push(stats.colon);summ.push(" | ");summ.push(stats.colon);summ.push(" |
comments | ");summ.push(stats.comments.count);summ.push(" | ");summ.push(stats.comments.chars);summ.push(" |
properties | ");summ.push(stats.properties.count);summ.push(" | ");summ.push(stats.properties.chars);summ.push(" |
selectors | ");summ.push(stats.selectors.count);summ.push(" | ");summ.push(stats.selectors.chars);summ.push(" |
semicolons | ");summ.push(stats.semi);summ.push(" | ");summ.push(stats.semi);summ.push(" |
white space | ");summ.push(stats.space);summ.push(" | ");summ.push(stats.space);summ.push(" |
values | ");summ.push(stats.values.count);summ.push(" | ");summ.push(stats.values.chars);summ.push(" |
variables | ");summ.push(stats.variables.count);summ.push(" | ");summ.push(stats.variables.chars);summ.push(" |
I"+"nput | ");summ.push(inl);summ.push(" | |
---|---|---|
Output | ");summ.push(out);summ.push(" | |
");if(out>inl){summ.push("Increase | ");summ.push(out-inl);summ.push(" | |
Percent Change | ");a=(((out-inl)/out)*100);summ.push(a.toFixed(2))}else{summ.push("Decrease | ");summ.push(inl-out);summ.push(" |
Percent Change | ");a=(((inl-out)/inl)*100);summ.push(a.toFixed(2))}summ.push("% |
Quant"+"ity | URI | ");summ.push(uric);summ.push(" | ");summ.push(uri[a].replace(/&/g,"&").replace(//g,">"));summ.push(" | ")}summ.push("
---|
Error: ");output.push(error[0].replace(/&/g,"&").replace(/
");error[1]=error[1].replace(/&/g,"&").replace(//g,">").replace(/\u0000|\u0001|\u0002|\u0003|\u0004|\u0005|\u0006|\u0007|\u0008|\u000b|\u000c|\u000e|\u000f|\u0010|\u0011|\u0012|\u0013|\u0014|\u0015|\u0016|\u0017|\u0018|\u0019|\u001a|\u001b|\u001c|\u001d|\u001e|\u001f|\u007f|\u0080|\u0081|\u0082|\u0083|\u0084|\u0085|\u0086|\u0087|\u0088|\u0089|\u008a|\u008b|\u008c|\u008d|\u008e|\u008f|\u0090|\u0091|\u0092|\u0093|\u0094|\u0095|\u0096|\u0097|\u0098|\u0099|\u009a|\u009b|\u009c|\u009d|\u009e|\u009f/g,"").replace(/^(\s+)/,"");if(error.indexOf("\n")>0){output.push(error[1].replace("\n",""))}else{output.push(error[1]);output.push("")}output.push("
");summary=output.join("")}return build.join("")}())}else{if(jsscope!=="none"){result=(function jspretty__resultScope(){var a=0,b=token.length,build=[],linecount=2,last="",scope=1,buildlen=0,commentfix=(function jspretty__resultScope_commentfix(){var aa=1,bb=1;if(types[0]!=="comment"||(token[0].indexOf("//")===0&&lines[0]>0)||types[1]!=="comment"){return 1}do{if(token[aa].indexOf("/*")===0){bb+=1}aa+=1}while(types[aa]==="comment"&&aaScope analysis does not provide support for undeclared variables.
","",scolon," instances of missing semicolons counted.
","",news," unnecessary instances of the keyword new counted.
",data.join(""),last];summary=build.join("");data=[];build=[];return ""}()).replace(/(\s+)$/,"").replace(/\u0000|\u0001|\u0002|\u0003|\u0004|\u0005|\u0006|\u0007|\u0008|\u000b|\u000c|\u000e|\u000f|\u0010|\u0011|\u0012|\u0013|\u0014|\u0015|\u0016|\u0017|\u0018|\u0019|\u001a|\u001b|\u001c|\u001d|\u001e|\u001f|\u007f|\u0080|\u0081|\u0082|\u0083|\u0084|\u0085|\u0086|\u0087|\u0088|\u0089|\u008a|\u008b|\u008c|\u008d|\u008e|\u008f|\u0090|\u0091|\u0092|\u0093|\u0094|\u0095|\u0096|\u0097|\u0098|\u0099|\u009a|\u009b|\u009c|\u009d|\u009e|\u009f/g,"")}else{result=(function jspretty__result(){var a=0,b=token.length,build=[],indent=jlevel,tab=(function jspretty__result_tab(){var aa=jchar,bb=jsize,cc=[];for(bb=bb;bb>0;bb-=1){cc.push(aa)}return cc.join("")}()),nl=function jspretty__result_nl(x){var dd=0;build.push("\n");for(dd=0;ddError: ");output.push(error[0].replace(/&/g,"&").replace(//g,">").replace(/\u0000|\u0001|\u0002|\u0003|\u0004|\u0005|\u0006|\u0007|\u0008|\u000b|\u000c|\u000e|\u000f|\u0010|\u0011|\u0012|\u0013|\u0014|\u0015|\u0016|\u0017|\u0018|\u0019|\u001a|\u001b|\u001c|\u001d|\u001e|\u001f|\u007f|\u0080|\u0081|\u0082|\u0083|\u0084|\u0085|\u0086|\u0087|\u0088|\u0089|\u008a|\u008b|\u008c|\u008d|\u008e|\u008f|\u0090|\u0091|\u0092|\u0093|\u0094|\u0095|\u0096|\u0097|\u0098|\u0099|\u009a|\u009b|\u009c|\u009d|\u009e|\u009f/g,""));output.push(" ");error[1]=error[1].replace(/&/g,"&").replace(//g,">").replace(/\u0000|\u0001|\u0002|\u0003|\u0004|\u0005|\u0006|\u0007|\u0008|\u000b|\u000c|\u000e|\u000f|\u0010|\u0011|\u0012|\u0013|\u0014|\u0015|\u0016|\u0017|\u0018|\u0019|\u001a|\u001b|\u001c|\u001d|\u001e|\u001f|\u007f|\u0080|\u0081|\u0082|\u0083|\u0084|\u0085|\u0086|\u0087|\u0088|\u0089|\u008a|\u008b|\u008c|\u008d|\u008e|\u008f|\u0090|\u0091|\u0092|\u0093|\u0094|\u0095|\u0096|\u0097|\u0098|\u0099|\u009a|\u009b|\u009c|\u009d|\u009e|\u009f/g,"").replace(/^(\s+)/,"");if(error.indexOf("\n")>0){output.push(error[1].replace("\n",""))}else{output.push(error[1]);output.push("")}output.push("
");output.push(scolon);output.push(" instance");if(scolon!==1){output.push("s")}output.push(" of missing semicolons counted.
");output.push("");output.push(news);output.push(" unnessary instance");if(news!==1){output.push("s")}output.push(" of the keyword new counted.
");output.push("Data Label | Input | "+"Output | Literal Increase | Percentage Increase |
---|---|---|---|---|
Total Character Size | ");output.push(originalSize);output.push(" | ");output.push(result.length);output.push(" | ");output.push(result.length-originalSize);output.push(" | ");percent=(((result.length-originalSize)/originalSize)*100);output.push(percent.toFixed(2));output.push("% |
Total Lines of Code | ");output.push(newlines);output.push(" | ");output.push(noOfLines);output.push(" | ");output.push(noOfLines-newlines);output.push(" | ");percent=(((noOfLines-newlines)/newlines)*100);output.push(percent.toFixed(2));output.push("% |
JavaScript Component | Comp"+"onent Quantity | Percentage Quantity from Section | ");output.push("Percentage Qauntity from Total | Character Length | Percentage L"+"ength from Section | Percentage Length from Total |
---|---|---|---|---|---|---|
Total Accounted | ");output.push(total.token);output.push(" | 100.00% | 100.00% | ");output.push(total.chars);output.push(" | 100.00% | 100.00% |
Comments | ||||||
Block Comments | ");output.push(stats.commentBlock.token);output.push(" | ");output.push(zero(stats.commentBlock.token,total.comment.token));output.push(" | ");output.push(zero(stats.commentBlock.token,total.token));output.push(" | ");output.push(stats.commentBlock.chars);output.push(" | ");output.push(zero(stats.commentBlock.chars,total.comment.chars));output.push(" | ");output.push(zero(stats.commentBlock.chars,total.chars));output.push(" |
Inline Comments | ");output.push(stats.commentLine.token);output.push(" | ");output.push(zero(stats.commentLine.token,total.comment.token));output.push(" | ");output.push(zero(stats.commentLine.token,total.token));output.push(" | ");output.push(stats.commentLine.chars);output.push(" | ");output.push(zero(stats.commentLine.chars,total.comment.chars));output.push(" | ");output.push(zero(stats.commentLine.chars,total.chars));output.push(" |
Comment Total | ");output.push(total.comment.token);output.push(" | 100.00% | ");output.push(zero(total.comment.token,total.token));output.push(" | ");output.push(total.comment.chars);output.push(" | 100.00% | ");output.push(zero(total.comment.chars,total.chars));output.push(" |
Whitespace Outside of Strings and Comments | ||||||
New Lines | ");output.push(stats.space.newline);output.push(" | ");output.push(zero(stats.space.newline,total.space));output.push(" | ");output.push(zero(stats.space.newline,total.token));output.push(" | ");output.push(stats.space.newline);output.push(" | ");output.push(zero(stats.space.newline,total.space));output.push(" | ");output.push(zero(stats.space.newline,total.chars));output.push(" |
Spaces | ");output.push(stats.space.space);output.push(" | ");output.push(zero(stats.space.space,total.space));output.push(" | ");output.push(zero(stats.space.space,total.token));output.push(" | ");output.push(stats.space.space);output.push(" | ");output.push(zero(stats.space.space,total.space));output.push(" | ");output.push(zero(stats.space.space,total.chars));output.push(" |
Tabs | ");output.push(stats.space.tab);output.push(" | ");output.push(zero(stats.space.tab,total.space));output.push(" | ");output.push(zero(stats.space.tab,total.token));output.push(" | ");output.push(stats.space.tab);output.push(" | ");output.push(zero(stats.space.tab,total.space));output.push(" | ");output.push(zero(stats.space.tab,total.chars));output.push(" |
Other Whitespace | ");output.push(stats.space.other);output.push(" | ");output.push(zero(stats.space.other,total.space));output.push(" | ");output.push(zero(stats.space.other,total.token));output.push(" | ");output.push(stats.space.other);output.push(" | ");output.push(zero(stats.space.other,total.space));output.push(" | ");output.push(zero(stats.space.other,total.chars));output.push(" |
Total Whitespace | ");output.push(total.space);output.push(" | 100.00% | ");output.push(zero(total.space,total.token));output.push(" | ");output.push(total.space);output.push(" | 100.00% | ");output.push(zero(total.space,total.chars));output.push(" |
Literals | ||||||
Strings | ");output.push(stats.string.token);output.push(" | ");output.push(zero(stats.string.token,total.literal.token));output.push(" | ");output.push(zero(stats.string.token,total.token));output.push(" | ");output.push(stats.string.chars);output.push(" | ");output.push(zero(stats.string.chars,total.literal.chars));output.push(" | ");output.push(zero(stats.string.chars,total.chars));output.push(" |
Numbers | ");output.push(stats.number.token);output.push(" | ");output.push(zero(stats.number.token,total.literal.token));output.push(" | ");output.push(zero(stats.number.token,total.token));output.push(" | ");output.push(stats.number.chars);output.push(" | ");output.push(zero(stats.number.chars,total.literal.chars));output.push(" | ");output.push(zero(stats.number.chars,total.chars));output.push(" |
Regular Expressions | ");output.push(stats.regex.token);output.push(" | ");output.push(zero(stats.regex.token,total.literal.token));output.push(" | ");output.push(zero(stats.regex.token,total.token));output.push(" | ");output.push(stats.regex.chars);output.push(" | ");output.push(zero(stats.regex.chars,total.literal.chars));output.push(" | ");output.push(zero(stats.regex.chars,total.chars));output.push(" |
Total Literals | ");output.push(total.literal.token);output.push(" | 100.00% | ");output.push(zero(total.literal.token,total.token));output.push(" | ");output.push(total.literal.chars);output.push(" | 100.00% | ");output.push(zero(total.literal.chars,total.chars));output.push(" |
Syntax Characters | ||||||
Quote Character"+"s | ");output.push(stats.string.quote);output.push(" | ");output.push(zero(stats.string.quote,total.syntax.token));output.push(" | ");output.push(zero(stats.string.quote,total.token));output.push(" | ");output.push(stats.string.quote);output.push(" | ");output.push(zero(stats.string.quote,total.syntax.chars));output.push(" | ");output.push(zero(stats.string.quote,total.chars));output.push(" |
Commas | ");output.push(stats.comma);output.push(" | ");output.push(zero(stats.comma,total.syntax.token));output.push(" | ");output.push(zero(stats.comma,total.token));output.push(" | ");output.push(stats.comma);output.push(" | ");output.push(zero(stats.comma,total.syntax.chars));output.push(" | ");output.push(zero(stats.comma,total.chars));output.push(" |
Containment Characters | ");output.push(stats.container);output.push(" | ");output.push(zero(stats.container,total.syntax.token));output.push(" | ");output.push(zero(stats.container,total.token));output.push(" | ");output.push(stats.container);output.push(" | ");output.push(zero(stats.container,total.syntax.chars));output.push(" | ");output.push(zero(stats.container,total.chars));output.push(" |
Semicolons | ");output.push(stats.semicolon);output.push(" | ");output.push(zero(stats.semicolon,total.syntax.token));output.push(" | ");output.push(zero(stats.semicolon,total.token));output.push(" | ");output.push(stats.semicolon);output.push(" | ");output.push(zero(stats.semicolon,total.syntax.chars));output.push(" | ");output.push(zero(stats.semicolon,total.chars));output.push(" |
Operators | ");output.push(stats.operator.token);output.push(" | ");output.push(zero(stats.operator.token,total.syntax.token));output.push(" | ");output.push(zero(stats.operator.token,total.token));output.push(" | ");output.push(stats.operator.chars);output.push(" | ");output.push(zero(stats.operator.chars,total.syntax.chars));output.push(" | ");output.push(zero(stats.operator.chars,total.chars));output.push(" |
Total Syntax Characters | ");output.push(total.syntax.token);output.push(" | 100.00% | ");output.push(zero(total.syntax.token,total.token));output.push(" | ");output.push(total.syntax.chars);output.push(" | 100.00% | ");output.push(zero(total.syntax.chars,total.chars));output.push(" |
Keywords and Variables | ||||||
Words | ");output.push(stats.word.token);output.push(" | 100.00% | ");output.push(zero(stats.word.token,total.token));output.push(" | ");output.push(stats.word.chars);output.push(" | 100.00% | ");output.push(zero(stats.word.chars,total.chars));output.push(" |
Server-side Tags | ||||||
Server Tags | ");output.push(stats.server.token);output.push(" | 100.00% | ");output.push(zero(stats.server.token,total.token));output.push(" | ");output.push(stats.server.chars);output.push(" | 100.00% | ");output.push(zero(stats.server.chars,total.chars));output.push(" |
Obsolete elements do not appropriately describe content.
");attr.push(token[presentationEl[x]].replace(/&/g,"&").replace(//g,">"));attr.push("
on input line number ");attr.push(linen[presentationEl[x]]);attr.push("")}attr.push("Obsolete elements do no"+"t appropriately describe content.
");attr.push(tagname);attr.push("
on input line number ");attr.push(linen[presentationAt[x][0]]);attr.push("")}attr.splice(y,0,z);violations+=z;attr.push("The id attribute is required t"+"o bind a point of interaction to an HTML label.
");attr.push(token[formnoID[x]].replace(/&/g,"&").replace(//g,">"));attr.push("
on input line number ");attr.push(linen[formnoID[x]]);attr.push("")}attr.push("The id attribute is required to bind a point of interaction to an "+"HTML label.
")}b=formID.length;formnoID=[];for(x=0;x-1;y-=1){if(attrName(attrs[formID[x][0]][formID[x][1]])[1]===labelFor[y]){break}}if(y<0){formnoID.push(formID[x])}}b=formnoID.length;violations+=b;if(b>0){attr.push("The id of a form control must match the <"+"em>for of a label.
");attr.push(token[formnoID[x][0]].replace(/&/g,"&").replace(//g,">"));attr.push("
on input line number ");attr.push(linen[formnoID[x][0]]);attr.push("")}attr.push("The
The tabindex attribute should have a"+" 0 or -1 value and should not be over used.
");if(tabindex[x][1]===true){attr.push("")}attr.push(token[tabindex[x][0]].replace(/&/g,"&").replace(//g,">"));if(tabindex[x][1]===true){attr.push("")}attr.push("
on input line number ");attr.push(linen[tabindex[x][0]]);attr.push("")}attr.push("The t"+"abindex attribute should have a 0 or -1 value and should not be over used.
")}b=headings.length;if(b>0){attr.push("Poorly ordered tags are described with a strong"+" tag (color red).
");if(headings[x][2]===true){attr.push("")}attr.push(token[headings[x][0]].replace(/&/g,"&").replace(//g,">"));if(headings[x][2]===true){attr.push("")}attr.push("
on input line number ");attr.push(linen[headings[x][0]]);attr.push("")}attr.push("The alt attribute is required"+" even if it contains no value.
");attr.push(token[noalt[x]].replace(/&/g,"&").replace(//g,">"));attr.push("
on input line number ");attr.push(linen[noalt[x]]);attr.push("")}attr.push(""+"The alt attribute is required even if it contains no value.
")}b=emptyalt.length;violations+=b;if(b>0){attr.push("Empty alt text is not necess"+"arily a violation, such as the case of tracking pixels. If an image has embedded");for(x=0;x");attr.push(token[emptyalt[x]].replace(/&/g,"&").replace(//g,">"));attr.push("
on input line number ");attr.push(linen[emptyalt[x]]);attr.push("")}attr.push("")}else{attr.push("0 images have an empty alt attribute value
")}return attr.join("")};if(maccessibility===false){return ""}findings.push(tagsbyname());return findings.join("")}()),parseErrors=(function markuppretty__apply_summary_parseErrors(){var x=parseError.length,y=0,fails=[];violations+=x;if(x===0){return ""}fails.push("");fails.push(x);fails.push(" errors interpreting markup
");for(y=0;y
");return fails.join("")}()),sizes=(function markuppretty__apply_summary_sizes(){var table=[],insize=msource.length,outlines=output.split("\n").length,outsize=output.length,linechange=(outlines/line)*100,charchange=(outsize/insize)*100;table.push(""));fails.push("
")}fails.push("Data sizes
");table.push("
");return table.join("")}()),statistics=(function markuppretty__apply_summary_statistics(){var stat=[],totalItems=stats.cdata[0]+stats.comment[0]+stats.content[0]+stats.end[0]+stats.ignore[0]+stats.script[0]+stats.sgml[0]+stats.singleton[0]+stats.start[0]+stats.style[0]+stats.template[0]+stats.text[0]+stats.xml[0],totalSizes=stats.cdata[1]+stats.comment[1]+stats.content[1]+stats.end[1]+stats.ignore[1]+stats.script[1]+stats.sgml[1]+stats.singleton[1]+stats.start[1]+stats.style[1]+stats.template[1]+stats.text[1]+stats.xml[1],rowBuilder=function markuppretty__apply_summary_statistics_rowBuilder(type){var itema=(type==="Total*")?totalItems:stats[type][0],itemb=(type==="Total*")?totalSizes:stats[type][1],ratio=0;stat.push(" ");table.push("Data figure Input Output Percent change"+"th> ");table.push("Lines of code ");table.push(numformat(line));table.push(" ");table.push(numformat(outlines));table.push(" ");table.push(linechange.toFixed(2));table.push("% ");table.push("Character size ");table.push(numformat(insize));table.push(" ");table.push(numformat(outsize));table.push(" ");table.push(charchange.toFixed(2));table.push("% ")};stat.push("");stat.push(type);if(itema>0&&(type==="script"||type==="style")){stat.push("**")}stat.push(" ");stat.push(itema);stat.push(" ");ratio=((itema/totalItems)*100);stat.push(ratio.toFixed(2));stat.push("% ");stat.push(itemb);stat.push(" 0&&(type==="script"||type==="style")){stat.push(" class='bad'")}stat.push(">");ratio=((itemb/totalSizes)*100);stat.push(ratio.toFixed(2));stat.push("% Statistics and analysis of parsed code
");stat.push("
");stat.push(" ");stat.push("");rowBuilder("Total*");rowBuilder("cdata");rowBuilder("comment");rowBuilder("content");rowBuilder("end");rowBuilder("ignore");rowBuilder("script");rowBuilder("sgml");rowBuilder("singleton");rowBuilder("start");rowBuilder("style");rowBuilder("template");rowBuilder("text");rowBuilder("xml");stat.push("Item type Number of instances Percentage of total"+" items Character size Percentage of total size ");stat.push("space between tags*** ");stat.push(stats.space);stat.push("
* Totals are accounted for parsed code/content tokens only and not extraneous"+" space for beautification.
");stat.push("** Script and Style code is measured with minimal white space.
");stat.push("*** This is space that is not associated with text, tags, script, or css.
"+" ");return stat.join("")}()),zipf=(function markuppretty__apply_summary_zipf(){var x=0,ratio=0,wordlen=0,wordcount=0,word="",wordlist=[],wordtotal=[],wordproper=[],zipfout=[],identical=true,sortchild=function markuppretty__apply_summary_zipf_sortchild(y,z){return z[0]-y[0]};for(x=x;xWord Rank | Most Occurring Word by Rank | Number of I"+"nstances | Ratio Increased Over Next Most Frequence Occurance | Perc"+"entage from ");zipfout.push(wordcount);zipfout.push(" total words |
---|---|---|---|---|
Unfiltered Word Set | ");zipfout.push(x+1);zipfout.push(" | ");zipfout.push(wordtotal[x][1]);zipfout.push(" | ");zipfout.push(wordtotal[x][0]);zipfout.push(" | ");zipfout.push(ratio.toFixed(2));zipfout.push(" | ");ratio=((wordtotal[x][0]/wordcount)*100);zipfout.push(ratio.toFixed(2));zipfout.push("% | ")}wordlen=(wordproper.length>10)?10:wordproper.length;if(wordlen>1&&identical===false){zipfout.push("
Filtered Word Set | ");zipfout.push(x+1);zipfout.push(" | ");zipfout.push(wordproper[x][1]);zipfout.push(" | ");zipfout.push(wordproper[x][0]);zipfout.push(" | ");zipfout.push(ratio.toFixed(2));zipfout.push(" | ");ratio=((wordproper[x][0]/wordcount)*100);zipfout.push(ratio.toFixed(2));zipfout.push("% | ")}}zipfout.push("
");sum.push(startend);sum.push(" more start tag");if(startend>1){sum.push("s")}sum.push(" than end tags!
")}else if(startend<0){startend=startend*-1;sum.push("");sum.push(startend);sum.push(" more end tag");if(startend>1){sum.push("s")}sum.push(" than start tags!
")}sum.push("Total number of HTTP requests (presuming HTML or XML Schema): ");sum.push(reqs.length);sum.push("
");sum.push("Total potential accessibility violations: "+violations+"