[{"data":1,"prerenderedAt":53},["Reactive",2],{"blog-post-golang-markdown-parsing":3},{"slug":4,"title":5,"description":6,"excerpt":7,"date":8,"category":9,"author":10,"keywords":11,"readingMinutes":12,"html":13,"headings":14,"tools":30,"related":31},"golang-markdown-parsing","Golang Markdown Parsing with Blackfriday Library","Learn how to parse Markdown into HTML in Golang using the Blackfriday library. Simple steps for effective Markdown processing.","In this tutorial, we're going to delve into how Go (or Golang) can be used to parse Markdown files. If you're not already familiar with the Markdown syntax, I recommend this comprehensive guide.","2024-07-21","Tutorial","Matthew Rathbone","golang markdown parsing",2,"\u003Ch2 id=\"introduction-to-parsing-markdown-in-golang\">Introduction to Parsing Markdown in Golang\u003C/h2>\n\u003Cp>In this tutorial, we&#39;re going to delve into how Go (or Golang) can be used to parse Markdown files. If you&#39;re not already familiar with the Markdown syntax, I recommend \u003Ca href=\"/blog/markdown-table-ultimate-guide\">this comprehensive guide\u003C/a>.\u003C/p>\n\u003Cp>Parsing of Markdown in Golang can be accomplished using open source libraries, which will greatly simplify the process. Most libraries will output HTML which can then be styled or processed further. \u003C/p>\n\u003Cp>One such library is \u003Ccode>blackfriday\u003C/code>, so let&#39;s jump in and look at how it is used.\u003C/p>\n\u003Ch2 id=\"parsing-markdown-using-blackfriday\">Parsing Markdown using Blackfriday\u003C/h2>\n\u003Cp>Blackfriday library is a Markdown processor implemented in Go. It is compliant with the \u003Ca href=\"https://commonmark.org/\">CommonMark specification\u003C/a> and also includes some GitHub-flavored markdown extensions. \u003C/p>\n\u003Cp>First, we need to install the library:\u003C/p>\n\u003Cpre>\u003Ccode class=\"hljs language-bash\">go get -u github.com/russross/blackfriday\n\u003C/code>\u003C/pre>\u003Cp>Now let&#39;s see how to parse markdown text into HTML:\u003C/p>\n\u003Cpre>\u003Ccode class=\"hljs language-go\">\u003Cspan class=\"hljs-keyword\">package\u003C/span> main\n\n\u003Cspan class=\"hljs-keyword\">import\u003C/span> (\n    \u003Cspan class=\"hljs-string\">&quot;fmt&quot;\u003C/span>\n    \u003Cspan class=\"hljs-string\">&quot;github.com/russross/blackfriday&quot;\u003C/span>\n)\n\n\u003Cspan class=\"hljs-function\">\u003Cspan class=\"hljs-keyword\">func\u003C/span> \u003Cspan class=\"hljs-title\">main\u003C/span>\u003Cspan class=\"hljs-params\">()\u003C/span>\u003C/span> {\n\n    \u003Cspan class=\"hljs-comment\">// Markdown input as string\u003C/span>\n    input := []\u003Cspan class=\"hljs-type\">byte\u003C/span>(\u003Cspan class=\"hljs-string\">`\n# Golang Markdown Parsing \n\n- Golang\n- Blackfriday\n- Markdown\n- Parsing\n`\u003C/span>)\n\n    \u003Cspan class=\"hljs-comment\">// Parsing markdown to HTML\u003C/span>\n    output := blackfriday.Run(input)\n\n    fmt.Println(\u003Cspan class=\"hljs-type\">string\u003C/span>(output))\n}\n\u003C/code>\u003C/pre>\u003Cp>Running the above code will return the following HTML:\u003C/p>\n\u003Cpre>\u003Ccode class=\"hljs language-html\">\u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">h1\u003C/span>&gt;\u003C/span>Golang Markdown Parsing\u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">h1\u003C/span>&gt;\u003C/span>\n\n\u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">ul\u003C/span>&gt;\u003C/span>\n\u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">li\u003C/span>&gt;\u003C/span>Golang\u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">li\u003C/span>&gt;\u003C/span>\n\u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">li\u003C/span>&gt;\u003C/span>Blackfriday\u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">li\u003C/span>&gt;\u003C/span>\n\u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">li\u003C/span>&gt;\u003C/span>Markdown\u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">li\u003C/span>&gt;\u003C/span>\n\u003Cspan class=\"hljs-tag\">&lt;\u003Cspan class=\"hljs-name\">li\u003C/span>&gt;\u003C/span>Parsing\u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">li\u003C/span>&gt;\u003C/span>\n\u003Cspan class=\"hljs-tag\">&lt;/\u003Cspan class=\"hljs-name\">ul\u003C/span>&gt;\u003C/span>\n\u003C/code>\u003C/pre>\u003Ch2 id=\"parsing-markdown-files\">Parsing Markdown Files\u003C/h2>\n\u003Cp>Now, let&#39;s suppose that our Markdown input is in a file. Our goal is to parse that file and output the HTML. This will involve reading in the file as a byte slice which then can be passed to \u003Ccode>blackfriday.Run\u003C/code>.\u003C/p>\n\u003Cpre>\u003Ccode class=\"hljs language-go\">\u003Cspan class=\"hljs-keyword\">package\u003C/span> main\n\n\u003Cspan class=\"hljs-keyword\">import\u003C/span> (\n    \u003Cspan class=\"hljs-string\">&quot;fmt&quot;\u003C/span>\n    \u003Cspan class=\"hljs-string\">&quot;github.com/russross/blackfriday&quot;\u003C/span>\n    \u003Cspan class=\"hljs-string\">&quot;io/ioutil&quot;\u003C/span>\n    \u003Cspan class=\"hljs-string\">&quot;log&quot;\u003C/span>\n)\n\n\u003Cspan class=\"hljs-function\">\u003Cspan class=\"hljs-keyword\">func\u003C/span> \u003Cspan class=\"hljs-title\">main\u003C/span>\u003Cspan class=\"hljs-params\">()\u003C/span>\u003C/span> {\n\n    \u003Cspan class=\"hljs-comment\">// Read file contents into byte slice\u003C/span>\n    input, err := ioutil.ReadFile(\u003Cspan class=\"hljs-string\">&quot;example.md&quot;\u003C/span>)\n    \u003Cspan class=\"hljs-keyword\">if\u003C/span> err != \u003Cspan class=\"hljs-literal\">nil\u003C/span> {\n        log.Fatal(err)\n    }\n\n    \u003Cspan class=\"hljs-comment\">// Parsing markdown to HTML\u003C/span>\n    output := blackfriday.Run(input)\n\n    fmt.Println(\u003Cspan class=\"hljs-type\">string\u003C/span>(output))\n}\n\u003C/code>\u003C/pre>\u003Cp>Just replace \u003Ccode>example.md\u003C/code> with your markdown file, run the code, and you will get the HTML output.\u003C/p>\n\u003Ch2 id=\"more-on-markdown-in-golang\">More on Markdown in Golang\u003C/h2>\n\u003Cp>While \u003Ccode>blackfriday\u003C/code> is a great library for general markdown parsing, specific requirements might require other solutions. If you&#39;re rendering markdown in various other languages/frameworks, you might want to refer to other articles on \u003Ca href=\"/blog\">our blog\u003C/a> for specifics, like \u003Ca href=\"/blog/rendering-markdown-in-react\">Markdown in React\u003C/a> or \u003Ca href=\"/blog/rendering-markdown-in-ruby-on-rails\">Markdown in Ruby on Rails\u003C/a>.\u003C/p>\n\u003Ch2 id=\"wrapping-up\">Wrapping up\u003C/h2>\n\u003Cp>That&#39;s it. As you can see, parsing markdown in Go using the Blackfriday library is simple and straightforward. You can now use this know-how to build own Go application and process markdown effectively. Happy coding!\u003C/p>\n",[15,18,21,24,27],{"id":16,"text":17,"level":12},"introduction-to-parsing-markdown-in-golang","Introduction to Parsing Markdown in Golang",{"id":19,"text":20,"level":12},"parsing-markdown-using-blackfriday","Parsing Markdown using Blackfriday",{"id":22,"text":23,"level":12},"parsing-markdown-files","Parsing Markdown Files",{"id":25,"text":26,"level":12},"more-on-markdown-in-golang","More on Markdown in Golang",{"id":28,"text":29,"level":12},"wrapping-up","Wrapping up",[],[32,39,46],{"slug":33,"title":34,"description":35,"excerpt":36,"date":37,"category":9,"author":10,"keywords":38,"readingMinutes":12},"javascript-markdown-example","Javascript Markdown Parsing with Markdown-it: A Guide","Discover how to parse and generate markdown in Javascript using Markdown-it, with practical examples for easy markdown-to-HTML conversion.","Markdown, a lightweight markup language with plain text formatting syntax, has gained immense popularity due to its ease of use and broad compatibility. This article will guide you on how to parse…","2024-04-26","Javascript markdown example",{"slug":40,"title":41,"description":42,"excerpt":43,"date":44,"category":9,"author":10,"keywords":45,"readingMinutes":12},"swift-markdown-parsing","Swift Markdown Parsing: How to Guide & Examples","Learn to parse Markdown in Swift using SwiftMarkdown. This tutorial provides examples for converting Markdown to HTML and customization.","As Swift becomes increasingly ubiquitous in iOS development, we often find ourselves needing to process different kinds of text data. Today, we'll focus on a popular plaintext markup language:…","2024-07-23","Swift markdown parsing",{"slug":47,"title":48,"description":49,"excerpt":50,"date":51,"category":9,"author":10,"keywords":52,"readingMinutes":12},"flutter-markdown-parsing","Flutter Markdown Parsing Tutorial","Learn to parse Markdown in Flutter with the `flutter_markdown` library. This tutorial covers setup, implementation, and customization.","This tutorial aims to demonstrate how to parse Markdown content in the Flutter framework. We will utilize the fluttermarkdown library which wraps around the Dart package markdown to translate…","2024-07-20","Flutter markdown parsing",1792184940692]