diff --git a/scripts/build.js b/scripts/build.js index f931e8249..e63ba7101 100644 --- a/scripts/build.js +++ b/scripts/build.js @@ -111,22 +111,7 @@ try { } // Load tag data from the database -try { - tagDbData = objectFromPairs( - fs - .readFileSync('tag_database', 'utf8') - .split('\n') - .slice(0, -1) - .map(v => { - let data = v.split(':').slice(0, 2); - data[1] = data[1].split(',').map(t => t.trim()); - return data; - }) - ); -} catch (err) { - console.log(`${chalk.red('ERROR!')} During tag database loading: ${err}`); - process.exit(1); -} +tagDbData = util.readTags(); // Create the output for the README file try { diff --git a/scripts/tag.js b/scripts/tag.js index 650b70c83..9b0371671 100644 --- a/scripts/tag.js +++ b/scripts/tag.js @@ -28,28 +28,13 @@ const countOccurrences = (arr, value) => arr.reduce((a, v) => (v === value ? a + console.time('Tagger'); // Synchronously read all snippets and sort them as necessary (case-insensitive) snippets = util.readSnippets(snippetsPath); -try { - tagDbData = objectFromPairs( - fs - .readFileSync('tag_database', 'utf8') - .split('\n') - .slice(0, -1) - .map(v => { - let data = v.split(':').slice(0, 2); - data[1] = data[1].split(',').map(t => t.trim()); - return data; - }) - ); - tagDbStats = Object.entries(tagDbData) - .reduce((acc, val) => { - val[1].forEach(v => acc.hasOwnProperty(v) ? acc[v]++ : (acc[v] = 1)); - return acc; - }, {}); -} catch (err) { - // Handle errors (hopefully not!) - console.log(`${chalk.red('ERROR!')} During tag database loading: ${err}`); - process.exit(1); -} +// Load tag data from the database +tagDbData = util.readTags(); +tagDbStats = Object.entries(tagDbData) + .reduce((acc, val) => { + val[1].forEach(v => acc.hasOwnProperty(v) ? acc[v]++ : (acc[v] = 1)); + return acc; + }, {}); // Update the listing of snippets in tag_database and log the statistics, along with missing scripts try { for (let snippet of Object.entries(snippets)) diff --git a/scripts/util.js b/scripts/util.js index e5de2a830..613e65ca3 100644 --- a/scripts/util.js +++ b/scripts/util.js @@ -23,4 +23,29 @@ const readSnippets = snippetsPath => { } return snippets; } -module.exports = {readSnippets}; +// Used in `readTags` +const objectFromPairs = arr => arr.reduce((a, v) => ((a[v[0]] = v[1]), a), {}); +// Load tag data from the database +const readTags = () => { + let tagDbData = {}; + try { + tagDbData = objectFromPairs( + fs + .readFileSync('tag_database', 'utf8') + .split('\n') + .slice(0, -1) + .map(v => { + let data = v.split(':').slice(0, 2); + data[1] = data[1].split(',').map(t => t.trim()); + return data; + }) + ); + + } catch (err) { + // Handle errors (hopefully not!) + console.log(`${chalk.red('ERROR!')} During tag database loading: ${err}`); + process.exit(1); + } + return tagDbData; +} +module.exports = {readSnippets, readTags}; diff --git a/scripts/web.js b/scripts/web.js index 30a04b0fd..4baddfd87 100644 --- a/scripts/web.js +++ b/scripts/web.js @@ -75,23 +75,7 @@ try { process.exit(1); } // Load tag data from the database -try { - tagDbData = objectFromPairs( - fs - .readFileSync('tag_database', 'utf8') - .split('\n') - .slice(0, -1) - .map(v => { - let data = v.split(':').slice(0, 2); - data[1] = data[1].split(',').map(t => t.trim()); - return data; - }) - ); -} catch (err) { - // Handle errors (hopefully not!) - console.log(`${chalk.red('ERROR!')} During tag database loading: ${err}`); - process.exit(1); -} +tagDbData = util.readTags(); // Create the output for the index.html file try { // Add the start static part