ごっつ基本的なMozRepl

id:omochist:20061020:1161334958のブクマコメントより

2006年10月21日 lurker ruby mozreplモジュールが欲しい

うん,俺も欲しい.

モジュール化を考える前に

まずは使い方を知らないとどうしようもないわけで.簡単な使い方は,使って覚えるのが一番.

cd

MozReplで言うところのcd,lsの方法.
まずcdから.

repl> repl.enter(screen)
[object Screen]

enterで,入る感じ.上の階層に戻るときは,

repl> repl.back()

で戻れる.

ls

次にls.
とりあえずオブジェクトの中身をゴソッと表示するときはlook()という関数を使う.

repl> repl.look()
this.item=[object]
this._content=[probably array, length 2]
this.utf_str=+;
this.getInterface=[function]
(色々略)

こんな感じに,とりあえずごそっと出てくる.=[object]ってついているヤツは,そのまんまオブジェクトってことで,その中にenterで入れる.=[function]ってついてるのもそのまんまで,関数.
カッコを付けずにコマンドを叩くと関数の実装が表示されて,カッコを付けて叩くとその関数が実行される.その他は変数.

親切なのか不親切なのかわからないls

ゴソッと全部表示するんじゃなくて,特定のものだけ表示するときはsearch()を使う.

repl> repl.search(/app/i)
gen_loggify_wrapper
GM_deepWrappersEnabled
appendFiltersForContentType
appCore
goQuitApplication
canQuitApplication
XPCNativeWrapper

このように,正規表現でマッチした関数なり何なりが表示される.ただ,それがオブジェクトなのか関数なのか変数なのかってのは,わからない.う〜ん不親切.
だから,そういうときは,とりあえず入ってみるのも一興.

repl> repl.enter(XPCNativeWrapper)
function XPCNativeWrapper() {
    [native code]
}

「なぁんだ関数だったのか」.しかし落とし穴もあって,

repl> repl.enter(title)
?a
repl> repl.back() 
        @data:application/x-javascript,repl.back()%0D:1

!!! ReferenceError: repl is not defined

このように誤って(この場合わざとって感が否めないけれど)変数なんかに入っちゃうと,もう出る術が見つからない.

pwd

whereAmIという関数があって,そのまんまだけど自分が今何処にいるのかを尋ねる.んだけど,正直不親切.

repl> repl.enter(BookmarksToolbar)
[object Object]
repl> repl.whereAmI()
[object Object]

どうしろと.

変数とか

一度変数とかを定義してしまうと,Firefoxを再起動するまでそいつは死にません.MozReplだけ切って上げ直しても,死にません.しぶてェ野郎だぜ.

ちょい技

いちいちtelnet localhost 4242なんてめんどくさいので,zshrcなりbashrcなりに

alias repl="telnet localhost 4242"

とかaliasを貼っておくと,ラクチン.


以上,ごっつ簡単なMozReplの使い方でした.