From aac78c214ea953e4d1fcd84943c867395bfc22ec Mon Sep 17 00:00:00 2001 From: Asko Nomm Date: Sat, 9 Apr 2022 14:01:31 +0200 Subject: Add full test coverage for code blocks (re #4) --- resources/test/parsers/code_block_no_language.md | 41 ++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 resources/test/parsers/code_block_no_language.md (limited to 'resources/test/parsers/code_block_no_language.md') diff --git a/resources/test/parsers/code_block_no_language.md b/resources/test/parsers/code_block_no_language.md new file mode 100644 index 0000000..dbba1f1 --- /dev/null +++ b/resources/test/parsers/code_block_no_language.md @@ -0,0 +1,41 @@ +``` +// Detect horizontal line block +function isHorizontalLineBlock(block) { + return block === "***"; +} + +// Render horizontal line block +function horizontalLineBlock(block) { + return `
`; +} + +// Compose an array of parsers +const parsers = [{ + matcher: isHorizontalLineBlock, + renderers: [horizontalLineBlock] +}]; + +// And finally, our parser itself +function markdownToHTML(markdown) { + // Create blocks + const blocks = content.split(/\n\n/); + + // Parse blocks + const parsedBlocks = blocks.map((block) => { + // Let's find a parser that has a matcher that matches + const parser = parsers.find((parser) => parser.matcher(block)); + + // If match was found, let's run our renderers over `block` + if (parser) { + for (const renderer of match.renderers) { + block = renderer(block); + } + } + + return block; + }); + + // And at last, join the blocks together for one big block. + return parsedBlocks.join(""); +} +``` \ No newline at end of file -- cgit v1.2.3