今回は、RubyGem「redcarpet」を紹介します。
機能紹介
Markdown記法で書かれた文字列をHTMLに変換してくれます。例を挙げると、Markdownで見出しを意味する#を、h1タグに置き換えてくれます。機能はシンプルですが、シンプルゆえに他の機能と組み合わせやすく使い勝手がよいです。こういうの好き。
インストール
Gemをインストールするときのお馴染み、以下のコマンドでインストールできます。
gem install 'redcarpet'
注意点: Ruby3.2で実行すると以下のエラーがでます。
ruby 3.2: Markdown formatter warns "undefining the allocator of T_DATA class Redcarpet::Markdown"
2023年1月26日時点では、Gemfileに記載してBundler経由でインストールすることで、解消されました。Gemfileには以下のように記述します。
gem 'redcarpet', github: 'vmg/redcarpet'
基本的な使い方
かんたんなMarkdownを書いて、変換してみます。
require 'redcarpet' text = <<~EOS # Title * list1 * list2 * list3 ## SubTitle1 hello redcarpet EOS markdown = Redcarpet::Markdown.new(Redcarpet::Render::HTML) puts markdown.render(text)
これを実行すると、以下のような結果が得られます。
<h1>Title</h1> <ul> <li>list1</li> <li>list2</li> <li>list3</li> </ul> <h2>SubTitle1</h2> <p>hello redcarpet</p>
Redcarpet::Markdown.new(Redcarpet::Render::HTML)得られるオブジェクトに対してrenderメソッドを呼ぶだけで作れます。簡単。シンプルなだけではなく、Markdown変換時のルールや吐き出すHTMLタグを改変したりなど拡張性もあります。そちらの紹介はまた次回に。