diff --git a/scripts/build.js b/scripts/build.js index 251b755f9..421d0e3e0 100644 --- a/scripts/build.js +++ b/scripts/build.js @@ -93,8 +93,6 @@ let startPart = '', // Load helper functions (these are from existing snippets in 30 seconds of code!) const objectFromPairs = arr => arr.reduce((a, v) => ((a[v[0]] = v[1]), a), {}); -const capitalize = (str, lowerRest = false) => - str.slice(0, 1).toUpperCase() + (lowerRest ? str.slice(1).toLowerCase() : str.slice(1)); console.time('Builder'); @@ -120,7 +118,7 @@ try { Object.entries(tagDbData) .map(t => t[1][0]) .filter(v => v) - .sort((a, b) => capitalize(a, true) === 'Uncategorized' ? 1 : capitalize(b, true) === 'Uncategorized' ? -1 : a.localeCompare(b))) + .sort((a, b) => util.capitalize(a, true) === 'Uncategorized' ? 1 : util.capitalize(b, true) === 'Uncategorized' ? -1 : a.localeCompare(b))) ]; // Add the start static part @@ -128,10 +126,10 @@ try { // Loop over tags and snippets to create the table of contents for (const tag of tags) { - const capitalizedTag = capitalize(tag, true); + const capitalizedTag = util.capitalize(tag, true); output += `### ${ EMOJIS[tag] || '' - } ${capitalizedTag}\n\n
\nView contents\n\n`; + } ${util.capitalizedTag}\n\n
\nView contents\n\n`; for (const taggedSnippet of Object.entries(tagDbData).filter(v => v[1][0] === tag)) { output += `* [\`${taggedSnippet[0]}\`](#${taggedSnippet[0].toLowerCase()}${taggedSnippet[1].includes('advanced')?'-':''})\n`; } @@ -140,8 +138,8 @@ try { // Loop over tags and snippets to create the list of snippets for (const tag of tags) { - const capitalizedTag = capitalize(tag, true); - output += `---\n ## ${EMOJIS[tag] || ''} ${capitalizedTag}\n`; + const capitalizedTag = util.capitalize(tag, true); + output += `---\n ## ${EMOJIS[tag] || ''} ${util.capitalizedTag}\n`; for (const taggedSnippet of Object.entries(tagDbData).filter(v => v[1][0] === tag)) { let data = snippets[taggedSnippet[0] + '.md']; // Add advanced tag diff --git a/scripts/util.js b/scripts/util.js index fda5709a8..7e7e41933 100644 --- a/scripts/util.js +++ b/scripts/util.js @@ -48,6 +48,7 @@ const readTags = () => { } return tagDbData; } +// Optimizes nodes in an HTML document const optimizeNodes = (data, regexp, replacer) => { let count = 0; let output = data; @@ -60,4 +61,7 @@ const optimizeNodes = (data, regexp, replacer) => { } while (count > 0); return output; } -module.exports = {readSnippets, readTags, optimizeNodes}; +// Capitalizes the first letter of a string +const capitalize = (str, lowerRest = false) => + str.slice(0, 1).toUpperCase() + (lowerRest ? str.slice(1).toLowerCase() : str.slice(1)); +module.exports = {readSnippets, readTags, optimizeNodes, capitalize}; diff --git a/scripts/web.js b/scripts/web.js index 5ca861e22..61a3a2c47 100644 --- a/scripts/web.js +++ b/scripts/web.js @@ -59,8 +59,6 @@ let snippets = {}, tagDbData = {}; // Load helper functions (these are from existing snippets in 30 seconds of code!) const objectFromPairs = arr => arr.reduce((a, v) => ((a[v[0]] = v[1]), a), {}); -const capitalize = (str, lowerRest = false) => - str.slice(0, 1).toUpperCase() + (lowerRest ? str.slice(1).toLowerCase() : str.slice(1)); // Start the timer of the script console.time('Webber'); // Synchronously read all snippets and sort them as necessary (case-insensitive) @@ -83,11 +81,11 @@ try { // Loop over tags and snippets to create the table of contents for (let tag of [...new Set(Object.entries(tagDbData).map(t => t[1][0]))] .filter(v => v) - .sort((a, b) => capitalize(a, true) === 'Uncategorized' ? 1 : capitalize(b, true) === 'Uncategorized' ? -1 : a.localeCompare(b))) { + .sort((a, b) => util.capitalize(a, true) === 'Uncategorized' ? 1 : util.capitalize(b, true) === 'Uncategorized' ? -1 : a.localeCompare(b))) { output += `

` + md - .render(`${capitalize(tag, true)}\n`) + .render(`${util.capitalize(tag, true)}\n`) .replace(/

/g, '') .replace(/<\/p>/g, '') + `

`; @@ -104,9 +102,9 @@ try { // Loop over tags and snippets to create the list of snippets for (let tag of [...new Set(Object.entries(tagDbData).map(t => t[1][0]))] .filter(v => v) - .sort((a, b) => capitalize(a, true) === 'Uncategorized' ? 1 : capitalize(b, true) === 'Uncategorized' ? -1 : a.localeCompare(b))) { + .sort((a, b) => util.capitalize(a, true) === 'Uncategorized' ? 1 : util.capitalize(b, true) === 'Uncategorized' ? -1 : a.localeCompare(b))) { output += md - .render(`## ${capitalize(tag, true)}\n`) + .render(`## ${util.capitalize(tag, true)}\n`) .replace(/

/g, '

'); for (let taggedSnippet of Object.entries(tagDbData).filter(v => v[1][0] === tag)) output +=