http://reval-mocchi.rhcloud.com

==であいまい比較をしてくれる言語は便利だよね

PHPの比較は糞だって話があるけど,そのアバウトさがプログラミングのしやすさを底上げしていると思う. 今書いているプログラムで,プログラミングがしやすく可読性の高いコードが書けたので紹介する.

内容としては,スクリプトの中でエディタを立ち上げてユーザに何かしらを書かせるモジュールだ. しかし,エディタは環境によってはインストールされていない可能性がある.それを解決するために, シェルの環境変数$EDITORがあればその値をエディタとし,なければvi,emacsなどを探してくるコードを書いた.

Cなどであればif文などを使用しているが,今回はRubyを使用したのでガードっぽくコードを書いた.あいまい比較では文字列がtrueとなることを利用したHackだ. そして||は,左辺がtrueの場合にはその値を返し,falseの場合に右辺の処理を行うことを利用して処理をつなげる. それらによって,エディタが存在すればその値がRubyの定数EDITORに入る.

p EDITOR = ->{
  which = lambda{|cmd|
    `which #{cmd}`.chomp.length > 0 ? cmd : false
  }
  return which.call(ENV['EDITOR']) ||
    which.call('vi') || which.call('emacs') ||
    which.call('vim') || which.call('nano') ||
    which.call('cat')
}.call
#=> vi

option:enable title:pattern.rb