Webサービスを作って潰すのが趣味な人のブログ

とりあえず作ってから怒られよう

Railsでオリジナルマークダウンを使いたかったので魔改造してみた

webmoku.net

このサイトでページの装飾にマークダウンを利用しようと思い導入してみました 

Railsでマークダウンを利用する方法はいくつかあるのですが今回はここを参考にRedcarpetを使います

qiita.com

 

markdown_helper.rbを作ってコードを適当に埋め込んでやります

gist28706ede8a15b1c7d1ed

 

オプションの詳しい解説はこちらの記事を参考にさせていただきました

d.hatena.ne.jp

 

 

当サイトの場合はURLを自由に書き込める環境なのですが外部サイトへのリンクが同ブラウザ内で開いてしまうとユーザーの手間が増えてしまいます。そこで「target=_blank」を付与しようと思います。Rails側でソースを上書きしてやれば実装できるのですがめんどく……JSでサクッとやる方法があったのでそっちを採用しました

 

qiita.com

 

gista896b3165469da03c18e

 

元のソースコードの場合はサイトすべてのリンクが対象となってしまうため範囲を絞ってやります。当サイトの場合だとマークダウンを利用する場所はすべて「.markdown」の下に設置しているので、その範囲だけ対応させます

 

サイトの特性上ニコニコ動画やYoutubeの埋め込みにも対応する必要があります。もちろんデフォルトでは用意されていないので独自のカスタマイズを施さなければなりません

 

k0kubun.hatenablog.com

こちらを参考に「lib/redcarpet/original_render.rb」を作成しました

giste9f13439961f133ccba2

[ozcard:***]で値を受け取りますが、autolinkも利用しているためそのまま置換しようとすると

[ozcard:<a href="".... となってしまいます。そこで多少面倒くさいですが中身を確認してhttpリンクを探すという一手間を加えています

 

自分のサイトに適したマークダウンを導入したいと思った時、おそらくこの3つがカスタマイズできれば十分という方も多いと思うので一応メモがてら残しておきました