Updated node optimization

Abstracted into a utility function.
This commit is contained in:
Angelos Chalaris
2018-02-04 20:03:00 +02:00
parent 5255ed1a3d
commit 25b97819b1
2 changed files with 48 additions and 32 deletions

View File

@ -48,4 +48,16 @@ const readTags = () => {
} }
return tagDbData; return tagDbData;
} }
module.exports = {readSnippets, readTags}; const optimizeNodes = (data, regexp, replacer) => {
let count = 0;
let output = data;
do {
output = output.replace(regexp, replacer);
count = 0;
while (regexp.exec(output) !== null) {
++count;
}
} while (count > 0);
return output;
}
module.exports = {readSnippets, readTags, optimizeNodes};

View File

@ -124,39 +124,43 @@ try {
// Add the ending static part // Add the ending static part
output += `\n${endPart + '\n'}`; output += `\n${endPart + '\n'}`;
// Optimize punctuation nodes // Optimize punctuation nodes
let count = 0; output = util.optimizeNodes(output, /<span class="token punctuation">([^\0<]*?)<\/span>([\n\r\s]*)<span class="token punctuation">([^\0]*?)<\/span>/gm, (match, p1, p2, p3) => `<span class="token punctuation">${p1}${p2}${p3}</span>`);
do {
const punctuationRegex = /<span class="token punctuation">([^\0<]*?)<\/span>([\n\r\s]*)<span class="token punctuation">([^\0]*?)<\/span>/gm;
output = output.replace(punctuationRegex,
(match, p1, p2, p3) => `<span class="token punctuation">${p1}${p2}${p3}</span>`
);
count = 0;
while (punctuationRegex.exec(output) !== null) {
++count;
}
} while (count > 0);
// Optimize operator nodes // Optimize operator nodes
do { output = util.optimizeNodes(output, /<span class="token operator">([^\0<]*?)<\/span>([\n\r\s]*)<span class="token operator">([^\0]*?)<\/span>/gm, (match, p1, p2, p3) => `<span class="token operator">${p1}${p2}${p3}</span>`);
const operatorRegex = /<span class="token operator">([^\0<]*?)<\/span>([\n\r\s]*)<span class="token operator">([^\0]*?)<\/span>/gm;
output = output.replace(operatorRegex,
(match, p1, p2, p3) => `<span class="token operator">${p1}${p2}${p3}</span>`
);
count = 0;
while (operatorRegex.exec(output) !== null) {
++count;
}
} while (count > 0);
// Optimize keyword nodes // Optimize keyword nodes
do { output = util.optimizeNodes(output, /<span class="token keyword">([^\0<]*?)<\/span>([\n\r\s]*)<span class="token keyword">([^\0]*?)<\/span>/gm, (match, p1, p2, p3) => `<span class="token keyword">${p1}${p2}${p3}</span>`);
const keyWordRegex = /<span class="token keyword">([^\0<]*?)<\/span>([\n\r\s]*)<span class="token keyword">([^\0]*?)<\/span>/gm; // do {
output = output.replace(keyWordRegex, // const punctuationRegex = /<span class="token punctuation">([^\0<]*?)<\/span>([\n\r\s]*)<span class="token punctuation">([^\0]*?)<\/span>/gm;
(match, p1, p2, p3) => `<span class="token keyword">${p1}${p2}${p3}</span>` // output = output.replace(punctuationRegex,
); // (match, p1, p2, p3) => `<span class="token punctuation">${p1}${p2}${p3}</span>`
count = 0; // );
while (keyWordRegex.exec(output) !== null) { // count = 0;
++count; // while (punctuationRegex.exec(output) !== null) {
} // ++count;
} while (count > 0); // }
// } while (count > 0);
// // Optimize operator nodes
// do {
// const operatorRegex = /<span class="token operator">([^\0<]*?)<\/span>([\n\r\s]*)<span class="token operator">([^\0]*?)<\/span>/gm;
// output = output.replace(operatorRegex,
// (match, p1, p2, p3) => `<span class="token operator">${p1}${p2}${p3}</span>`
// );
// count = 0;
// while (operatorRegex.exec(output) !== null) {
// ++count;
// }
// } while (count > 0);
// // Optimize keyword nodes
// do {
// const keyWordRegex = /<span class="token keyword">([^\0<]*?)<\/span>([\n\r\s]*)<span class="token keyword">([^\0]*?)<\/span>/gm;
// output = output.replace(keyWordRegex,
// (match, p1, p2, p3) => `<span class="token keyword">${p1}${p2}${p3}</span>`
// );
// count = 0;
// while (keyWordRegex.exec(output) !== null) {
// ++count;
// }
// } while (count > 0);
// Minify output // Minify output
output = minify(output, { output = minify(output, {
collapseBooleanAttributes: true, collapseBooleanAttributes: true,