rcmdnk's blog

Markup-bot for Lego Boost 17101 instruction with programs (Build Boost Robots — a series of instructions for assembling robots with Boost 17101) (English Edition)

Octopress用に使ってるプラグインの仕様で 空白の取り扱いが結構罠にハマる所だったのでそれについて。

空白は除かれない

下のプラグインは

{% gemoji smile %}

と書くと 絵文字を出力してくれるプラグインです。

中ではもともとinitialize関数の中で、第二引数として受け取るmarkupという値を そのまま絵文字を表す文字列として扱っていました。

1
2
3
def initialize(name, markup, tokens)
  @emoji = markup
end

ですが、これをもし、

{% gemoji smile %}

の様に空白を入れて書くとmarkupsmile の様に最後の空白も含んでしまうので 絵文字を検索しても見つけられません。

これを回避するために以下のようにstrip!で空白削除する部分を追加しました。

1
2
3
4
5
def initialize(name, markup, tokens)
  @emoji = markup
  @emoji.strip!
  end
end

他のプラグインの中でもこの仕様によって、最後に空白を入れると上手く動かない 物もあるので注意が必要です。 (以前、Octopressの中のgistのプラグインについてもこれに似たような事があって pull request出して直してもらいました 1)

空白に意味を持たせることも可能なのでこの様に最後の空白も含めて 渡すようなのは間違ってないと思いますが、 特に、1つのワードだけを使う様な単純なプラグイン程この問題に引っかかりやすいので 注意が必要だと思います。

Sponsored Links
Sponsored Links

« Travis CIを使ってブログのリンクチェックを自動化する シェルスクリプトを簡単にチェックできるShellCheck, Vimでも使える »

}