Updated node optimization
Abstracted into a utility function.
This commit is contained in:
@ -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};
|
||||||
|
|||||||
@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user