erbからslimへ html2slimの変換で少し気になったこと

erbからslimへ

年末の空いた時間に、個人でたたき台として使っているrailsアプリのviewをerbからslimに変えて見ました。

GitHub - QWYNG/GuideGG: チャンピオンに対するガイド記事のブックマークサイト

slimhtml2slim、2つのgemを入れて

 for i in app/views/**/*.erb; do erb2slim $i ${i%erb}slim && rm $i; done
 

 変換して削除を繰り返すでコマンド一つで変換できたので楽でしたね

 erb2slim app/views -d  

でもできます。 HTML2Slim のREADME でも紹介ありますがデェレクトリ指定できるのでforで回す必要ないですね。-dはdelete オプションです。 (コメントありがとうございます!)

slim、読みやすい

slimのREADMEを読んでいてまず覚えておくべきことは

  • - が制御コードを意味している。(forとかif) endもいらないようです。
  • = が出力するrubyコードの呼び出し(erbでの<%= %>)
  • | を使うとパイプよりも深くインデントされた全ての行をコピーする。

程度だと感じました。erbとくらべてすっきりして読みやすいです。

気になったこと

いくつか気になったことをメモしておきます。

cssは.続けて記述することでマージが可能。
 <div class="container body-content">
 

というcssの指定があった場合

 .container.body-content
 

とピリオドをつなげることでcssのマージができます。

自動変換でうまく対応してくれない所

これは自動変換だとどうなんだろうと思った所なのですが

 <div id="<%= "user_icon#{user.id}" %>" 
 

このerbのコードが自動変換だと

 | <div id="
= "user_icon#{user.id}"
| " >  

とずいぶんと汚く変換されるのですが slimは= の後に直接 Ruby コードを書けますので

 id="user_icon#{user.id}" 

と書けます。

また、iframeなんかも自動変換だとうまく変換してくれないので自分でなおしました。

 <iframe class="hatenablogcard"
 

がそのままの表記でslimファイルとして残されてしまうので、手動で

 iframe class="hatenablogcard" 

とする必要がありました。

今年のまとめ

今年は転職でなかなか精神MP使って大変でした。勉強会、スクール、日々のゲーム友達等々、関わってくださった方には本当に感謝しています。 来年はエンジニアとして働き始める予定です。このブログで技術書の読書録を継続して行きたいですね。