Slimcop::RubyClipper

Slimcopの機能を少し改善した。

Slimcopは、Slimテンプレート内に埋め込まれたRubyコードに対してRuboCopで検査や自動修正を行うためのツールである。

| #{x}

- if foo
  | bar

- a do
  | b

Slimcopは、例えば上のようなSlimテンプレートを与えられたとき、xif fooa do というRubyコード片を抽出し、それぞれのRubyコード片に対してRuboCopを適用する。しかしこのとき、これまでのSlimcopには課題があり、x に対しては上手く動作するのだが、if fooa do に対しては上手く動作しないという課題があった。それ単体ではRubyコードとしては成立しないためである。

この課題を解決するために今回、抽出したRubyコード片に対し、次の二つの変換処理を行うことにした。

  • 先頭の if unless などの部分を取り除く
  • 末尾の dodo |x, y| などの部分を取り除く

Slimcopのコード中では、Slimcop::RubyClipperという名前のクラスで実現されている。これで、完璧ではないにしても、Slimcopを適用できる範囲がそれなりに広がったと思う。