トップ «前の日記(2006-09-27) 最新 次の日記(2006-10-09)» 編集

Route 477



2006-10-07

[ruby] Ruby勉強会@関西-12

行ってきた。

「すごいリファレンスマニュアル(仮題)」by 青木峰郎さん
なんで「改善」でなく「全面刷新」なのか?というと、「デカいことやった方が面白いから」だそうな。アツイ。
「about nadoka」by 西山和広さん
nadokaのbotってこんな簡単に作れるのか。NadokaWiki
「小波ゼミ卒研ネタから」by ゼミ生のみなさん
難しかったです(><)しかし他人の卒論なんて分からないもんかも。
Ruby 初級者向けレッスン第9回「Rubyで学ぼうテスト駆動開発」
隣の方とペアプログラミングした。こんなに真面目にテスト書いたのは初めてかも知れんw

[vim] RRSV

RRSEのVim版が実装できそう。

obj.kind_of?(Array)

というコードの'd'あたりにカーソルを合わせると、メソッド名が"kind_of?"でレシーバが"obj"であることを表示する、というところ まではできた。

 function s:FindBeginning(src, start)
   let p = a:start
   while strpart(a:src, p, 1) =~ "\\w"
     let p = p - 1
   endwhile
   return p
 endfunction

 function s:GetReceiver(src, beg)
   let p = a:beg - 1
   while strpart(a:src, p, 1) =~ "[A-Za-z0-9_@:]"
     let p = p - 1
   endwhile
   return strpart(a:src, p+1, (a:beg-p-1))
 endfunction

 function s:GetMethodName(src, start)
   let beg = s:FindBeginning(a:src, a:start)
   let receiver = ""

   if strpart(a:src, beg, 1) == "."
     let receiver = s:GetReceiver(a:src, beg)
   endif
   let method = matchstr(a:src, "\\w*\[!?]\\?", beg+1)
   return receiver . "の" . method
 endfunction

 function RRSV()
   let s = getline(line("."))
   echo "`" . s:GetMethodName(s,col(".")-1) . "'"
 endfunction

 set updatetime=600
 autocmd CursorHold *.vim call RRSV()

メソッド情報のデータベースはRRSEのをそのまま使わせてもらう予定。

[vim] Vim Scriptって

思ったよりLLだわ。