Fix some snippets, start creating scripts
This commit is contained in:
59
scripts/extract.js
Normal file
59
scripts/extract.js
Normal file
@ -0,0 +1,59 @@
|
||||
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\']*)|(\<![\-\-\s\w\>\/]*\>)/.test(
|
||||
// v
|
||||
// )
|
||||
// )
|
||||
// .map(v => v.replace(/[*-] /g, ""))
|
||||
// .filter(v => v.trim() !== "" && !v.includes("tags"))
|
||||
|
||||
return {
|
||||
name,
|
||||
title,
|
||||
text,
|
||||
codeBlocks,
|
||||
expertise: parseInt(
|
||||
(contents.match(/<!--\s*expertise:\s*\(*(.+)\)*/) || [])[1],
|
||||
10
|
||||
),
|
||||
tags: (contents.match(/<!--\s*tags:\s*\(*(.+)\)*\s*-->/) || [])[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");
|
||||
Reference in New Issue
Block a user