なかだです。

  はずしてたらごめんなさい。

At Fri, 18 Feb 2000 17:34:35 +0900,
arton <arton / geocities.co.jp> wrote:
> すなわち2枚以上のウィンドウが存在して、かつ
> foo1.htmlとfoo2.htmlのそれぞれに、
> <script language="RubyScript">
> def fooclick
>    ....
> end
> </script>
> <input type=button name=foo onclick="fooclick" language="RubyScript">
> と書いた場合、fooclickというメソッドが、当然Rubyの中で後勝ちになって
> しまうことです。(内容が同じなら構わないけど、たいてい、異なること
> を行なうはずです) 仮に、htmlが異なれば異なる名前を付けろ
> と制限しても、新しいウィンドウに同じHTMLという状況だと、同様な
> 状態になりますし、それに余り嬉しい制限じゃないので、避けたいです。
> 
> というわけで、メソッド名の重複の解消となると、単純なブリッジ機能だけ
> ではすまなくなってきて、実装方法に悩んでいます。
> 今、考えているのはRubyのスレッド切り替えの部分を参照して、
> 名前テーブルをActiveScriptEngineのコンテキスト切り替えに合わせて
> 入れ替えることですが、もっとうまい方法があったら、教えて頂ける
> と嬉しいのですが。

  Module.new と Kernel#instance_eval、Module#module_eval の組合せとかで
なんとかならないでしょうか。

script_a = Module.new
script_a.instance_eval "def foo; 1; end"
script_b = Module.new
script_b.instance_eval "def foo; 2; end"
script_a.module_eval "p foo" # => 1
script_b.module_eval "p foo" # => 2

  こういう話では、ない?

-- 
そうだ 強気に ちょっと インチキに☆彡
    中田 "Bugるくらいがちょうどいいかも;-)" 伸悦