別冊とっしーぱんち

IT技術系、Ruby関連、プログラミングお役立ち

【RubyGem紹介】MarkdownをHTMLにする「redcarpet」

今回は、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'

github.com

基本的な使い方

かんたんな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タグを改変したりなど拡張性もあります。そちらの紹介はまた次回に。