HAM MEDIA MEMO

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