User:Waldyrious/formatcitations.js: Difference between revisions

Content deleted Content added
also align }} and don't keep adding newlines if there already is one
fix another bug: only normalize whitespace around equal signs that are actually from a parameter (not from, e.g., an url)
Line 2:
var txt = document.editform.wpTextbox1;
originalCiteTemplatesoriginalTemplates = txt.value.match(/\{\{cit(ation|e [a-z]+) *\n? *\|[^}]+\}\}/g);
tweakedCiteTemplatestweakedTemplates = originalCiteTemplatesoriginalTemplates.slice();
 
for(i in originalCiteTemplatesoriginalTemplates) {
if(vertical) {
originalParams = originalCiteTemplatesoriginalTemplates[i].match(/ *\n? *\| *\n? *[a-z1-9]+ *= */g);
tweakedParams = [];
 
Line 22:
numSpaces = maxWidth - tweakedParams[k].length;
alignedParam = "\n | " + tweakedParams[k] + Array(numSpaces).join(" ") + " = ";
tweakedCiteTemplatestweakedTemplates[i] = tweakedCiteTemplatestweakedTemplates[i].replace (originalParams[k], alignedParam); // Replace the original parameters with the tweakes ones
}
 
// Also align the }}
tweakedTemplates[i] = tweakedTemplates[i].replace(/ *\n? *\}\}/g,"\n }}");
// Replace the original templates with the tweaked versions
txt.value = txt.value.replace(originalCiteTemplatesoriginalTemplates[i], tweakedCiteTemplatestweakedTemplates[i].replace(/ *\n? *\}\}/g,"\n }}")); // The replace() adds a newline to finish the alignment
} else {
// Remove newlines
txt.value = txt.value.replace(originalCiteTemplates[i],
tweakedTemplates[i] = tweakedCiteTemplatestweakedTemplates[i].replace(/\n/g, "") // Remove newlines
.replace(/ *\| */g, " |") // Normalize spaces beforearound the pipes... and equal signs
tweakedTemplates[i] = tweakedTemplates[i].replace(/ *\| *([a-z1-9]+) *= */g," "|$1 = ")); // ...and after the equal signs
// Remove potencial spaces before template ends
tweakedTemplates[i] = tweakedTemplates[i].replace(/ *\}\}$/," }}")
txt.value = txt.value.replace(originalTemplates[i], tweakedTemplates[i]);
}
}