10/20/2006

強化你的 irb

剛剛看到 JavaEye 這一篇 强化irb,感到十分的興奮。特別寫出來,感謝對岸的cookoo先生。以下功能在 Linux 下面測試,均可直接套用到 ruby script/console 。

安裝
  1. 安裝下列套件 wirble, map_by_method, what_methods
    gem i wirble map_by_method what_methods
  2. 寫入到 home 底下的 .irbrc 下面
# Compiled by Cookoo
# Reference:
# http://drnicwilliams.com/2006/10/12/my-irbrc-for-consoleirb
# http://pablotron.org/software/wirble/

require 'rubygems'
require 'what_methods'
require 'wirble'
require 'irb/completion'

IRB.conf[:AUTO_INDENT]=true

class Regexp
def show(a)
a =~ self ? "#{$`}<<#{$&}>>#{$'}" : "no match"
end
end

Wirble.init
Wirble.colorize unless Config::CONFIG['host_os'] == 'mswin32'



然後就可以開始使用了
我們發現到有許多新功能(我只列出我覺得很有用的功能)
  1. irb 有顏色了
  2. 歷史紀錄(原本的irb 也有,但是跳出irb,再重新進入irb 就不能叫出以前的紀錄了)
  3. tab auto-complete
  4. 直接可以使用ri查詢doc
  5. regular expression 快速查詢
  6. 可以使用 pp
  7. .what? 猜相關的 api
方式

1. 使用ri
>> ri 'String'
---------------------------------------------------------- Class: String
A +String+ object holds and manipulates an arbitrary sequence of
bytes, typically representing characters. String objects may be
created using +String::new+ or as lite....


2. reaular expression 快速查詢
他會將這個regular expression match 的部份用 << >> 標起來
>> /[a-z]+/.show "pi is 3.14"
=> "<<pi>> is 3.14"

3. .what? 猜api
一個相當不賴的功能, a.what? b
他會列出有a所有 method 當中,所有可能讓 a 變成 b的 api
>> 3.14.what? 3
3.14.floor == 3
3.14.to_int == 3
3.14.prec_i == 3
3.14.round == 3
3.14.to_i == 3
3.14.truncate == 3
=> ["floor", "to_int", "prec_i", "round", "to_i", "truncate"]


延伸閱讀
  1. Ruby Garden Wiki
  2. Irb itches eliminated
  3. Wirble: Tab-Completion and Syntax Coloring for irb

沒有留言: