Rubyでエンコードする方法
こんな感じで
1 2 |
|
URI.escape()
関数を使ってあげるとJavaScriptのencodeURIComponent()
と
同じ事ができます。
octopress-encodeURIComponent
そのまま名前をくっつけたので長くなってしまいましたが、 プラグインはこちら:
上のコードをJekyll用フィルタのひな形に押し込んだだけのものです。
インストールはplugins/encodeURIComponent.rb
をOctopressのplugins
フォルダに入れて
上げるだけです。
使い方も簡単で、他のフィルター同様、変換したい値に|encodeuricomponent
を付けてあげるだけです。
This is original: {{site.url}}
This is encoded: {{site.url|encodeURIComponent}}
こんな感じの物を書いた時、site.url
がhttp://rcmdnk.github.io/
だとすると、
This is original: http://rcmdnk.github.io/
This is encoded: http%3A%2F%2Frcmdnk.github.io%2F
こんな感じで出力されます。
直接出力させても仕方ないですが、 Tumblrなんかの共有用URLへ渡す際に便利です。
Tumblrの公式からボタン設置用のコードを作ると、
追加のJavaScriptを書いてencodeURIComponent()
を使って
変換して渡す、みたいなことをしてますが、
直接書ければ多少なりとも負担を減らしたりも出来るし
管理も楽になると思います。
ということで、先日書いた
にもOctopress用のコードの所にTumblrも追加しておきました。
追記: 2013/12/12
Jekyllの中に最初からURIを変換してくれるFilterが入ってるのを見つけました。
ちゃんと見とけ、という話ですが、上のencodeURIComponent
の代わりに
cgi_escape
を使えばOK。
また、日本語が途中に入ってるURLを普通にリンクとして貼りたい時は
uri_escape
を使えばOK。こちらだと://
みたいな部分はそのままで、
日本後やそのまま使えない記号、空白部分だけ変換してくれます。
LiquidのFilter、Jekyllで加えられたFilter、Octopressで加えられたFilter と段階があって結構たくさん便利なFilterもありそうなもんですが、 そのうちちゃんとまとめて見たいところです(誰か作ってないかな。。。)
追記ここまで