const fs = require("fs-extra") const path = require("path") const chalk = require("chalk") const { attempt, readSnippets, getCodeBlocks, getSection, getTitle, getTextualContent } = require("./util"); console.time("Extractor"); attempt("snippet_data.json generation", () => { const output = Object.entries(readSnippets()).map(([name, contents]) => { const title = getTitle(contents); const text = getTextualContent(contents); const codeBlocks = getCodeBlocks(contents); const notes = getSection("#### Notes", contents, false) .split("\n") .map(v => v.replace(/[*-] /g, "")) .filter(v => v.trim() !== "") // const answer = getSection("#### Answer", contents) // const goodToHear = getSection("#### Good to hear", contents, false) // .split("\n") // .map(v => v.replace(/[*-] /g, "")) // .filter(v => v.trim() !== "") // const links = getSection("##### Additional links", contents) // .split("\n") // .filter(v => // /(\/\*[\w\'\s\r\n\*]*\*\/)|(\/\/[\w\s\']*)|(\\/]*\>)/.test( // v // ) // ) // .map(v => v.replace(/[*-] /g, "")) // .filter(v => v.trim() !== "" && !v.includes("tags")) return { name, title, text, codeBlocks, expertise: parseInt( (contents.match(//) || [])[1].split(",").map(v => v.trim()), notes } }) fs.writeFileSync("./data/snippet_data.json", JSON.stringify(output, null, 2)) }) console.log(`${chalk.green("SUCCESS!")} snippet_data.json file generated!`); console.timeEnd("Extractor");