3d0fb55f |
1 | $ = document.getElementById.bind(document); |
2 | function printStats(lines, numLines, numChars, parasWithExtraSpace, parasLines) { |
3 | $("results").innerHTML=""; |
4 | for(var i=0; i<numLines; i++) { |
5 | $("results").innerHTML+=(i<9?"0"+(i+1):(i+1))+" "+lines[i]+"<br />"; |
6 | if(parasLines.indexOf(i+1)>=0 && $("chk2").checked) $("results").innerHTML+="<br />"; |
7 | } |
8 | |
9 | $("statLines").innerHTML="Lines: "+numLines+"/47"; |
10 | $("statLines").style.color=numLines>47?"red":"initial"; |
11 | $("statChars").innerHTML="Characters: "+numChars+"/4000"; |
12 | $("statChars").style.color=numChars>4000?"red":"initial"; |
13 | |
14 | if(parasWithExtraSpace.length>0) { |
15 | $("statWarn").innerHTML="Warning: Extra space(s) found at end of paragraph(s) "+parasWithExtraSpace.join(", "); |
16 | $("statWarn").style.visibility="visible"; |
17 | $("statWarn").style.color="red"; |
18 | } else { |
19 | $("statWarn").innerHTML="Warning: Extra space(s) found at end of paragraph(s) "; |
20 | $("statWarn").style.visibility="hidden"; |
21 | } |
22 | } |
23 | |
24 | function analyse() { |
25 | var text=$("txt1").value; |
26 | var parasWithExtraSpace=[]; |
27 | var parasLines=[]; |
28 | var paras=text.split('\n'); |
29 | var lines=[]; |
30 | var line="" |
31 | if(text=="") { |
32 | printStats(lines, 0, 0, parasWithExtraSpace, parasLines); |
33 | return; |
34 | } |
35 | for(var i=0; i<paras.length; i++) { |
36 | if(paras[i][paras[i].length-1]==' ') parasWithExtraSpace.push(i+1); |
37 | do { |
38 | if(paras[i][0]==' ') paras[i]=paras[i].substring(1); //remove preceding space |
39 | line=paras[i].substring(0, paras[i].length>94?94:paras[i].length); //extract line of 94 chars or fewer |
40 | var lastidx=line.lastIndexOf(' '); |
41 | if(lastidx>=0) { //if there is a space in line |
42 | if(line.length<94) lastidx=line.length; //if it can contain whole line |
43 | } else lastidx=line.length; |
44 | if(paras[i][94]==' ') lastidx=94; //if extracted right before a space |
45 | paras[i] = line.substring(lastidx+1)+paras[i].substring(94); //remove extracted string (up to lastidx) from paras |
46 | line=line.substring(0, lastidx); |
47 | lines.push(line); |
48 | } while(paras[i]!=""); |
49 | parasLines.push(lines.length); //lines where paragraphs end |
50 | } |
51 | printStats(lines, lines.length, text.length+paras.length-1, parasWithExtraSpace, parasLines); |
52 | } |
53 | |
54 | function autocheck() { |
55 | if($("chk1").checked) { |
56 | $("txt1").addEventListener("input", analyse); |
57 | $("btn1").style.visibility='hidden'; |
58 | analyse(); |
59 | } else { |
60 | $("txt1").removeEventListener("input", analyse); |
61 | $("btn1").style.visibility='visible'; |
62 | } |
63 | } |