Fix whitespace cleanup in confs

pull/111/head
MattIPv4 2020-05-21 15:42:02 +01:00
parent 7c12dfc0c2
commit 7276767102
1 changed files with 25 additions and 11 deletions

View File

@ -78,16 +78,30 @@ const recurse = (entriesOrObject, depth) => {
return retVal;
};
export default entriesOrObject => recurse(entriesOrObject, 0)
// Cleanup triple linebreaks
.replace(/\n\n\n/g, '\n\n')
export default entriesOrObject => {
// Generate the conf
let conf = recurse(entriesOrObject, 0);
// Do some regex cleanup
conf = conf
// Cleanup triple linebreaks
.replace(/\n\n\n/g, '\n\n')
// Double linebreak before comment
.replace(/^([^\S\r\n]*[^#\s].*[^\n])\n([^\S\r\n]*)#/gm, '$1\n\n$2#')
// Single linebreak between comment and block
.replace(/^([^\S\r\n]*#.*)(?:\n[^\S\r\n]*)+\n([^\S\r\n]*.*{)/gm, '$1\n$2')
// Double linebreak after double comment
.replace(/^([^\S\r\n]*#.*\n[^\S\r\n]*#.*\n)([^\S\r\n]*[^#\s])/gm, '$1\n$2');
// Cleanup extra linebreaks between multiple close blocks
.replace(/^([^\S\r\n]*})(?:\n[^\S\r\n]*)+\n([^\S\r\n]*})/gm, '$1\n$2')
// Double linebreak before comment
.replace(/^([^\S\r\n]*[^#\s].*[^\n])\n([^\S\r\n]*)#/gm, '$1\n\n$2#')
// Single linebreak between comment and block
.replace(/^([^\S\r\n]*#.*)(?:\n[^\S\r\n]*)+\n([^\S\r\n]*.*{)/gm, '$1\n$2')
// Double linebreak after double comment
.replace(/^([^\S\r\n]*#.*\n[^\S\r\n]*#.*\n)([^\S\r\n]*[^#\s])/gm, '$1\n$2')
// Use a loop as this has overlapping matches
let match;
do {
match = /^([^\S\r\n]*})(?:\n[^\S\r\n]*)+\n([^\S\r\n]*})/m.exec(conf);
if (match)
conf = conf.slice(0, match.index) + match[1] + '\n' + match[2] + conf.slice(match.index + match[0].length);
} while (match);
// Remove initial & trailing whitespace
.trim();
return conf.trim();
};