What have you found for these years?

2011-02-23

ripl-rc (0)

日前玩起了 ripl, a irb replacement... 首次於此提起這件事:
1867. 02-21 after 獨立遊戲開發者分享會
然後在 buzz 上有了一些討論...
提起了:
ripl 其實就功能上反而比 irb 少,還要灌額外的 gem
不過程式真的好簡單,我記得 README 上面寫是
250 vs 5,000+ 程式碼行數比較
有點像當年的 minitest vs test-unit

如果不去動他可能沒啥差,但如果要加東西進去的話,
程式碼行數就有關鍵上的差異了,尤其又差到 20 倍(我沒求證)

我提的三個 patch 兩個被說請放自己的 ~/.ripl 中 XD
唯一被接受的是修 test case @_@
現在正在等第四個 patch 的回應... (編按: 被接受了,雖然原因不太一樣)
接下來我想加顏色進去

然後在另一則 buzz 上提起以下:

試了 ripl-color_result, 不打算用 wirb (不知道那是啥)
awesome_printcoderay 都好
如果他還要繼續 depends on wirb 的話,我打算自己做一份...
我個人是覺得舉凡 optional 的都不該寫入 dependency
尤其看現在 bundler 如何運作的...
最多加入 development dependency 即可

p.s. Textarea Cache addon rocks...

然後我剛才試了一下用 awesome_print 或 coderay,
甚至連 pygmentize 都試了!大概這樣寫:
IO.popen('pygmentize -f terminal -l ruby', 'r+'){ |p|
    p << result
    p.close_write
    p.read
}
不過有些字還真的是看不到... 是不是 iterm 設定不好啊? :(
畢竟在上上則 buzz 裡有提到 wirb 有些字看不到,應該是同個問題?
我用 -f 256 想跑 xterm256 也不行,有些字居然變成會閃。
只好暫時放棄 pygmentize, 回到 awesome_print 或 coderay.
可惜後來試試覺得各有各的缺點..?

awesome_print 很明顯是比較好的,畢竟我們其實是拿到實體物件,
而不是 string. 用 coderay 或 pygmentize 都會變成先把物件轉成字串,
然後再拿去 parse 一次。這有優點也有缺點,優點是奇怪的物件也能
有 syntax highlight, 比方說這個物件 inspect 之後會變成 xml,
那正好我們可以有 xml 的 syntax highlight... 理想上啦,實際上的話
這要做到不容易。缺點的話,很明顯就是這是多此一舉,有些物件反而
會變得很難做 syntax highlight, 畢竟資訊遺失了嘛。

不過 awesome_print 實在太 awesome 了,如果給他跑 ActiveRecord 的
User.methods.sort 的話,我的 terminal 就完全被洗板了,幾千行的輸出...
雖然這我或許會說是 rails 的錯,因為很明顯就是不必要的 code bloat.
但這確實是個很實際的問題,又不能去改 rails :o

其實因為都能拿到實體物件,要上色真的很簡單說,又不需要 parser.
那何不自己寫算了?我是還滿想弄個 ripl-colorful 之類的,這名字多好 XD
不然 ripl-rainbows 好了... XD 就像在這篇提到的:
1871. 02-22 2011-02-21 早睡新絕招? (2)
然後半路就開始弄起 ripl-color_result 和 ripl-multi_line...
前者打算用 awesome_print 或是 coderay, 後者送了兩個 patch,
一個被接受另一個被改寫,不過原意都達到了。不錯不錯,
看來 ripl 領域是滿值得投入時間下去做東西...

但其實我覺得 ripl 有個我不是很喜歡的地方,就是短短二、三十行的程式
也要額外做成 gem, 這樣很麻煩說。我是覺得,又不是說包在同一個 gem
裡面就要一起讀進去不讓人選,明明寫這些:
require 'ripl'
require 'ripl/multi_line'
require 'ripl/color_result'
在同一個 gem 裡面也根本無所謂吧?重點是 distribution...
全部分開造成很大的維護成本,對使用者來說也很麻煩。
所以其實我比較想弄個例如 ripl-godfat 之類的... 但不可能用這個名字。
我還要想想看叫什麼名字才好。基本上就是一個功能一個檔案了,
預設當然是什麼都不會 require 進去。這樣裝起來不是方便許多?
明明很多作者都是同一個,並沒有打架的問題吧..?

所以剛剛就順手寫了一點上色的功能,放在 dev-tool 上的 .riplrc 裡面。
整個上色的功能應該能壓在一百行以內吧...

暫定弄這些好了:
require 'ripl/squeeze_history'
require 'ripl/ctrld_newline'
require 'ripl/eat_whites'
require 'ripl/colorful'
整個 gem 該叫什麼名字呢?(抓頭)叫 ripple 好了,因為剛開始我老是
打錯。啊,還是叫 ripl-rc 好了 XDDD 跟好跟 dot-rc 呼應。不知道會不會
被打 XDDD 管他的,先搶先贏 lol 這篇的標題也改一下 XD

弄好了,肝也爆了 lol
gem install ripl-rc
require 'ripl/rc'

0 retries:

Post a Comment

All texts are licensed under CC Attribution 3.0