DEV Community

Jason Hughes
Jason Hughes

Posted on

 

Generate markdown files with ease - deno-markdown 🦕

Why Deno?

Like the rest of the Node community I've been jumping on the Deno band wagon and for good reason!

I could create a fairly large list of why I like Deno however I'd recommend everyone read The Deno Handbook by Flavio Copes and see for yourself.

So what is deno-markdown?

deno-markdown is a module that allows a developer to quickly create markdown content and files using TS function chaining.

Examples

Create a Markdown file with a 2 headings, a paragraph, and a bullet point list of items.


import { Markdown, ListTypes } from 'https://deno.land/x/deno_markdown/mod.ts';

let markdown = new Markdown();

await markdown
    .header("Hello Dev community!", 1) // This will generate # Hello Dev community!
    .paragraph("Here is an example of some text under the heading")
    .header("Another heading!", 2) // This will generate ## Another heading!
    .list(["Item 1", "Item 2"], ListTypes.UnOrdered, "*") // Character can be set to *, -, or + 
    .write("./folder/", "fileName"); // This will write the content out to ./folder/fileName.md 

Output:


# Hello Dev community!

Here is an example of some text under the heading

## Another heading!

* Item 1
* Item 2

Create markdown tables


import { Markdown } from "https://deno.land/x/deno_markdown/mod.ts";

let markdown = new Markdown();

await markdown
  .table([
    ["Branch", "Commit"],
    ["master", "0123456789abcdef"],
    ["staging", "fedcba9876543210"],
  ])
  .write("./examples/", "table");

Output:


| Branch  | Commit           |
| ------- | ---------------- |
| master  | 0123456789abcdef |
| staging | fedcba9876543210 |

You can also use the built in string extensions to enhance your markdown files


import { Markdown, bold, italics } from 'https://deno.land/x/deno_markdown/mod.ts';

let markdown = new Markdown();

await markdown
  .header("Hello Dev community!", 1)
  .paragraph(`You can inline extensions like ${bold('bold')} or ${italics('italics')}`)
  .write("./examples/", "fileName");

Output:


# Hello Dev community!

You can inline extensions like **bold** or _italics_

Further Examples

What's next?

I will be looking to improve the code quality overall and remove the dependency on markdown-table.

No doubt as my knowledge of Deno improves I will be making tweaks and changes as I go along.

If anyone would like to contribute to the project please take a look at the ReadMe.md

And yes I did generate this entire blog post with the module 😁

Source

Thanks for reading!

Top comments (2)

Collapse
 
granthair5 profile image
Grant Hair

github.com/showdownjs/showdown have you tried showdown for this, ive used it for a few projects and it is awesome (not sure if it plays nice with deno)

Collapse
 
granthair5 profile image
Grant Hair

I read into this and looks like there isnt a deno port of the showdown npm module

An Animated Guide to Node.js Event Loop

Node.js doesn’t stop from running other operations because of Libuv, a C++ library responsible for the event loop and asynchronously handling tasks such as network requests, DNS resolution, file system operations, data encryption, etc.

What happens under the hood when Node.js works on tasks such as database queries? We will explore it by following this piece of code step by step.