タグ

ブックマーク / www.todesking.com (2)

  • Rubyで高速にパターンマッチするgemを作った - TODESKING

    Ripperの出力とかParseletの解析結果などを扱うのに、ArrayやHashでパターンマッチして中身を取り出す処理を多用する必要があったのでパターンマッチライブラリを作りました。 GitHub: todesking/patm 同様のライブラリとしてはpattern-matchがあります。 機能面ではpattern-matchのほうが豊富ですが、PATMは高速なのが売りです(DSLによるメソッド定義を使用した場合、ネイティブRubyコードにコンパイルされるため50倍くらい速い。case式内で使用した場合でも7倍程度)。ベンチマークについてはこの記事の下のほう参照。 主な機能 DSLによるメソッド定義 extend Patm::DSL することで define_matcherを使ったメソッド定義が可能です。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

  • Rubyのローカル変数をシンタクスハイライトするVimプラグインを書いた - TODESKING

    Rubyはローカル変数への参照と無引数のメソッド呼び出しを同じ記法で書けるので、コードを読むときに混乱したりtypoでNoMethodErrorを出してがっかりすることが多々あります。 幸いなことにこれらは静的に解析することができるので、ローカル変数への参照を色付けするVimプラグインを書いた。 Github/ruby_hl_lvar.vim すごく便利な気がする!!!!!!! Rubyインタフェース(>=1.9)が有効になったVimが必要なのでご注意ください。MacVim 7.4 KaoriYa 20140107で動作確認しました。 しくみ Ruby1.9以降に標準添付されているripperというライブラリで、Rubyの構文解析をしてローカル変数への参照を取り出しています。 require 'ripper' Ripper.sexp(<<EOS) a = 10 b = 20 c = a +

    Rubyのローカル変数をシンタクスハイライトするVimプラグインを書いた - TODESKING
  • 1