diff --git a/build.js b/build.js index 3261654..7425795 100644 --- a/build.js +++ b/build.js @@ -18,9 +18,13 @@ const paths = { if (fs.readdirSync(".").includes(paths.output)) { fs.rmSync(paths.output, { recursive: true, force: true }); + console.log("Starting rebuild"); +} else { + console.log("Starting build"); } fs.mkdirSync(paths.output); +console.log("Indexing content.."); const directoryNames = fs.readdirSync(paths.notes.root); const manifest = directoryNames.map((noteDirectory) => ({ directoryName: noteDirectory, @@ -33,6 +37,7 @@ const manifest = directoryNames.map((noteDirectory) => ({ publicAssetDirectoryPath: `/${noteDirectory}_`, })); +console.log("Parsing content.."); manifest.forEach((m) => { const notePath = `${paths.templates.root}/${paths.templates.note}`; let htmlTemplate = fs.readFileSync(notePath, { @@ -57,6 +62,7 @@ manifest.forEach((m) => { ); }); +console.log("Moving static templates.."); [paths.templates.notFound].forEach((filename) => { fs.copyFileSync( `${paths.templates.root}/${filename}`, @@ -64,6 +70,7 @@ manifest.forEach((m) => { ); }); +console.log("Building startpage.."); let htmlTemplate = fs.readFileSync( `${paths.templates.root}/${paths.templates.index}`, { @@ -71,9 +78,9 @@ let htmlTemplate = fs.readFileSync( } ); -const links = manifest.map( - (m) => `${m.name}` -); +const links = manifest + .map((m) => `${m.name}`) + .reverse(); const unorderedListItems = links.map((l) => `
  • ${l}
  • `).join("\r\n"); const html = ` @@ -86,3 +93,5 @@ fs.writeFileSync(`${paths.output}/index.html`, htmlTemplate, { encoding: "utf-8", flag: "ax", }); + +console.log("Done"); diff --git a/markdown.js b/markdown.js index 2990b42..0ab1f06 100644 --- a/markdown.js +++ b/markdown.js @@ -542,8 +542,7 @@ class SingleLineCode extends Symbol { * @returns {boolean} */ static canParse(line) { - const trimmedLine = line.trim(); - return trimmedLine.startsWith("`"); + return line.startsWith("`"); } /** @@ -917,9 +916,7 @@ const stageThreeProcessing = (symbols) => { ); const paragraph = new Paragraph(); paragraph.children = children; - console.log(children, startIndex, endIndex); localSymbols.splice(startIndex, children.length + 1, paragraph); - console.log(localSymbols.filter((s) => s instanceof JustALineBreak).length); } // Fix indentation of bullet elements return localSymbols; diff --git a/notes/4-markdown-parser-part-2/note.md b/notes/4-markdown-parser-part-2/note.md new file mode 100644 index 0000000..00ccf16 --- /dev/null +++ b/notes/4-markdown-parser-part-2/note.md @@ -0,0 +1,21 @@ +# Markdown parser part 2 + +The markdown parser is kind of going according to plan. I realised that with the appoach I decided to take I'm going to need a couple of more steps than just going line by line and deciding what type of element each should be. + +Let's take an example: + +``` +Some **bold** text and then some _cursive_ text +``` + +This is not only a text line but it has both bold and cursive text. + +So in addition to parsing the markdown files line by line (stage 1), I implemented stage 2 processing with the purpose of expanding the identified elements into child elements. So when a text row element containing the text in the example above is requested to peform its stage 2 processing it will take its text and run it once more through the stage 1 processing to divide it into new symbols. It then calls stage 2 processing of all its new children to make sure every element has been processed. + +In the end we should have gone from `TextLine` to `PlainText, Bold, PlainText , Italic, Plaintext`. + +Here's the result. + +Some **bold** text and then some _cursive_ text + +Next up is stage 3 processing which will affect elements depending on their position in the list of elements.