Ruby で空タグを閉じなし(スラッシュなし)に一括置換する方法

このエントリーをはてなブックマークに追加

昨日のエントリーで、 Middleman のタグヘルパを使った場合に閉じタグが入ってしまうけど、それが入らないようにしたいというような未解決のエントリーを書きました。

Middleman 勉強メモ:空タグを閉じなし(スラッシュなし)にしたい(未解決)

結局いろいろ調べたのですが、 build 後に置換するのが解決するには早そうだと考え、 middleman が ruby なので ruby のコマンドで 置換する方法を調べてみました

空タグのとじタグを一括置換

以下のブログを参考にさせていただきました。

ディレクトリ内の複数のファイルを一括で文字列置換する方法 with Ruby - でぶぬる日記

該当ファイルを find で探して、それを | パイプ?で渡して、ruby の 置換コマンドで置き換えるという流れのようです。

一括置換のコマンド

$ find . -name "*.html" | xargs ruby -i -pe '$_.sub!(/\s\/>/, ">")'

middlemanで出力された *.html ファイルを探して、該当箇所を正規表現を使い /\s\/>/ で検索して置換という方法です。いろいろ試してみたところ、$_.sub! で十分ということがわかり、$_.gsub! ではない方をつかっています。

これを middleman の build 後に コマンドを叩けばOKです。

自動化したい

middleman の after_build にフックさせたいと思い格闘してみたのですが・・・うまく行かず。フックさせるコードを コマンドが動くようにバッククオートで囲ってみて指定してみたのですが、シンタックスエラーが・・・

とりあえず、middleman の after_build がマストではないので、最終的に middelam build とセットにしたシェルでも使って対応をしようかと思います。

結局、middelam build って入力するんだから、まとめたらなんだって一緒だろうと・・・シェルファイルにしたら余計なファイルができてしまうのが唯一の心残りですが、他に方法が浮かばないくらいなレベルなので、とりあえずは今回までの方法にて。