[#36069] 日本語に混じった URL を抜き出したい — keiichi matsunaga <ma2@...>

 松永です。

26 messages 2002/10/02
[#36072] Re: 日本語に混じった URL を抜き出したい — keiichi matsunaga <ma2@...> 2002/10/02

 松永です。

[#36073] Re: 日本語に混じった URL を抜き出したい — SAITO Shukaku <shukaku@...> 2002/10/02

At Wed, 2 Oct 2002 13:51:42 +0900,

[ruby-list:36125] Re: 閉じた binding

From: UENO Katsuhiro <unnie@...>
Date: 2002-10-06 23:36:25 UTC
List: ruby-list #36125
うえのです。

On Mon, 7 Oct 2002 01:48:46 +0900
Takashi Tsugoh <tks@dive-in.to> wrote:

> >ええと、僕も同じようなことを考えて書いたコードがあります。
> >  http://www.blue.sky.or.jp/atelier/ruby/wakaba/wakaba-0.1.0.tar.gz
> >の中の lib/wakaba/pbinding.rb ってファイルです。
>
> 参照させて頂きました。
>
> なるほど…、特異クラスを作り、その中で、メタ機能により削除可能な定数を経由して
> ローカル変数を生成するという方法なんですね。
> こんなやり方があったとは、目から鱗が落ちます。

最初に思いついたのはこんな感じでした。

  variables = { 'foo' => 1, 'bar' => 2 }
  keys = variable.keys
  carrier = keys.shift
  s = "def tmp_binding(#{carrier});"
  keys.each { |k| s << "#{k}=#{carrier}[#{k.dump}];" }
  s << "#{carrier}=#{carrier}[#{dump.carrier}];"
  s << "binding;end"
  module_eval s
  b = tmp_binding(variables)

複雑すぎるのでボツにしましたが ;p


> ただ、ソースを読ませて頂いていて二つほどわからないことがありました。
>
> 1) protected_binding の最後で
>      klass.module_eval{ :TOPLEVEL_BINDING, b }
>    とされているのはどういう理由なんでしょうか?
>    勉強不足のため理解できていません(汗)
>    (簡易版ではわからないままに付けています(^^;)

eval するスクリプトから本物の TOPLEVEL_BINDING を隠すための措置です。
気休めにはなるかな、と思い。

> 2) Wakaba::ProtectedBinding で
>      carrier << '_' while parameters.key? carrier
>    としていますが、これも理解できてません(汗)

parameters の中に 'VARIABLE' が含まれている可能性があるからです。
ProtectedEval#[]= では定数を拒否していますが、例えば lib/wakaba/erb.rb
の Wakaba::ERbViewEval クラスみたいな使い方をすることも想定してます。



 --  ----  -     - - -- -
うえの かつひろ <unnie@blue.sky.or.jp>


In This Thread