summaryrefslogtreecommitdiff
path: root/resources/test/parsers/code_block.md
diff options
context:
space:
mode:
authorAsko Nomm <asko@bien.ee>2022-04-06 20:05:50 +0200
committerAsko Nomm <asko@bien.ee>2022-04-06 20:05:50 +0200
commit06bdf0f3abeab98d7713d389ae3a2c933317d701 (patch)
treed95927ff8e5f78cea72ef93c2f25c99fe6e10a70 /resources/test/parsers/code_block.md
parentcf7f5232f9e31981626135eb0977192ea5e67918 (diff)
Test code block
Diffstat (limited to 'resources/test/parsers/code_block.md')
-rw-r--r--resources/test/parsers/code_block.md41
1 files changed, 41 insertions, 0 deletions
diff --git a/resources/test/parsers/code_block.md b/resources/test/parsers/code_block.md
new file mode 100644
index 0000000..8e6f863
--- /dev/null
+++ b/resources/test/parsers/code_block.md
@@ -0,0 +1,41 @@
+```javascript
+// Detect horizontal line block
+function isHorizontalLineBlock(block) {
+ return block === "***";
+}
+
+// Render horizontal line block
+function horizontalLineBlock(block) {
+ return `<hr>`;
+}
+
+// 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