[#33169] a cool Ruby script. — Yuji Asakawa <namu@...>
From: Yuji Asakawa <namu@venus.dti.ne.jp>
From: Yuji Asakawa <namu@venus.dti.ne.jp>
[#33172] [ANN] Ruby/zlib 0.5.0-pre1 — UENO Katsuhiro <unnie@...>
うえのです。
[#33183] [ANN] TMail 0.10 — Minero Aoki <aamine@...>
あおきです。
[#33185] rd-mode: rd-intelligent-newline — "Shirai,Kaoru" <shirai@...1jp.com>
白井といいます。
[#33208] Method passing block — sinara@...
原(信)です。
[#33229] ruby のインストールがうまくいかない — satoshi SAKAI <gau_sato@...9.dion.ne.jp>
はじめまして。
At Tue, 8 Jan 2002 19:58:55 +0900,
サカイです。
なかだです。
サカイです。
From: satoshi SAKAI <gau_sato@d9.dion.ne.jp>
In the message <20020109102738.TQIO11600.femail11.im.home.ne.jp@witch>,
さくです。
いわおかです。
さくです。
In message <20020110020553.61dd3936.crouton@weatherlight.org>
[#33234] DB のカラム名をもった各行のオブジェクトへ向けて — encore ann <i@...>
もりかわです。
[#33235] " 差分ベースモジュール " in Ruby — Taku Nakajima <tnakajima@...>
中島@ブレーンです。
ただただしです。
Toshです。
In article <A5EF3ECC-04BE-11D6-B67B-003065DC8B1C@yb3.so-net.ne.jp>,
In article <hvoell014rl.fsf@coulee.a02.aist.go.jp>,
まつもと ゆきひろです
In article <1010559765.279084.16212.nullmailer@ev.netlab.jp>,
まつもと ゆきひろです
In article <1010566232.053696.16272.nullmailer@ev.netlab.jp>,
まつもと ゆきひろです
In article <1010568827.806757.16317.nullmailer@ev.netlab.jp>,
なかだです。
nobu.nakada@nifty.ne.jpさんの
[#33263] RDtool インストールでの疑問 — satoshi SAKAI <gau_sato@...9.dion.ne.jp>
サカイです。
[#33288] HTML から BODY を抜き出す — m_seki@...
坂野 正明です。
MoonWolfです。
[#33300] 日付順のソートについて — "Tatsuaki Nagai" <Tatsuaki_Nagai@...>
永井@KCです。
[#33326] [ 質問 ] クラスメソッドのモジュールによる実現方法 — Hiroyuki Komatsu <komatsu@...>
小松と申します. はじめまして.
[#33346] IPSocket.getaddress — "Sadayuki Sakamoto" <sakacom@...>
酒本です。
酒本です。
In article <009501c19c02$aaa39740$65bc80da@pc0>,
In article <hvo66668ztc.fsf@coulee.a02.aist.go.jp>,
まつもと ゆきひろです
[#33356] about pty and expect on 1.7.x — YANAGAWA Kazuhisa <kjana@...4lab.to>
ruby-talk の話見ててちょっと思いだしたんですが....
[#33367] [ANN] rb2exe-preview1 — Yuya Kato <yuya@4th.to>
[#33381] [ANN] WString 0.0.8 — takuma ozawa <metal@...>
小澤といいます。
[#33392] Re: [ANN] rb2exe-preview1 — Nagai T <idonagai@...>
なかだです。
ひだかです。
ふたたびひだかです。
またひだかですが(^_^;
[#33398] ruby-mode のインデント不具合 (} + の次の行) — MALTA Koji <malta@...>
丸田と申します。
[#33416] No such file to load -- dbm — satoshi SAKAI <gau_sato@...9.dion.ne.jp>
サカイと言います。(以前もお世話になりました。)
まつもと ゆきひろです
ただただしです。まいどどうも(?)。
サカイです。
[#33427] CGI でキャッシュ — Fujikawa Norihide <ruby@...>
てんしゅう@ねむぅ。
[#33443] libpgsql-ruby-0.6.5 で Linux+PostgreSQL+Ruby について — "井上 浩一" <kyoui32@...>
井上です。
[#33462] Re: Mysql/Ruby のコンパイル — "井上 浩一" <kyoui32@...>
井上です。
ひだかです。
なかだです。
ひだかです。
なかだです。
ひだかです。
なかだです。
ひだかです。
なかだです。
ひだかです。
たむらです。
なかだです。
たむらです。
西山和広です。
たむらです。
高橋征義です。
たむらです。
[#33477] about nest class — sheepman <sheepman@...>
こんにちは
まつもと ゆきひろです
あおきです。
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
[#33517] [BUG] Can't compile ruby on Solaris2.6 — IWAMURO Motonori <iwa@...>
岩室です。
まつもと ゆきひろです
岩室です。
わたなべです。
[#33520] IP に関するライブラリ cygwin & linux — "井上 浩一" <kyoui32@...>
井上です。
さくです。
In article <20020125163631.076601cb.crouton@weatherlight.org>,
さくです。
[#33535] broken symbolic link and File::mtime — Go Nakagawa <nakagawa@...>
中川といいます。
まつもと ゆきひろです
In message <1012002148.661980.9788.nullmailer@ev.netlab.jp>
西山和広です。
In message <20020127213735.2369.ZN@mbf.nifty.com>
西山和広です。
まつもと ゆきひろです
In article <1012194192.456224.19148.nullmailer@ev.netlab.jp>,
まつもと ゆきひろです
In article <1012208486.646506.19793.nullmailer@ev.netlab.jp>,
まつもと ゆきひろです
In article <1012212090.162851.19949.nullmailer@ev.netlab.jp>,
まつもと ゆきひろです
In article <1012227444.855288.20722.nullmailer@ev.netlab.jp>,
In message <hvoy9ii4eon.fsf@coulee.a02.aist.go.jp>
In article <200201281639.g0SGdRH29664@edge.sky.yamashina.kyoto.jp>,
さくです。
うぅむ。もうすこし早く Subject: を変えるべきであった...
まつもと ゆきひろです
In article <1012282185.518684.23103.nullmailer@ev.netlab.jp>,
In article <1012208486.646506.19793.nullmailer@ev.netlab.jp>,
[#33547] racc fails on alpha-freebsd — Minero Aoki <aamine@...>
あおきです。
In message <20020126123640V.aamine@mx.edit.ne.jp>
あおきです。
[#33556] Cgi::session in eRuby — kyosuke kiyooka <k@7ruby.com>
きよおかです。
きよおかです。
[#33570] NHK スペシャル「変革の世紀」 — rubiben <ozaki@...>
[#33613] Re: ある文字列以外の部分にマッチさせる方法 — "Tatsuaki Nagai" <Tatsuaki_Nagai@...>
永井です。
[#33664] rd2 コマンド( RDtool )が動かない。 — Seiji Yoneda <yoneda@...>
米田と申します。はじめて投稿します。
有馬です。
サイトウさん、有馬さん、ありがとうございます。
たむらです。
ひだかです。
[#33689] Windows をリブートするスクリプトはありますか?。 — Take_tk <ggb03124@...>
どちら様か、Windows をリブートするスクリプトを既に作っておられないでしょ
[ruby-list:33321] Re: " 差分ベースモジュール " in Ruby
In article <hvog05dxxe0.fsf@coulee.a02.aist.go.jp>,
Tanaka Akira <akr@m17n.org> writes:
> いえ、あるファイル f からあるファイル g を require したときには g で定
> 義された名前を f から使えるようにすることを想定しています。
>
> つまり namespace はファイルをノードとする DAG になります。
なんとなく、簡単なのを作ってみました。
% cat main.rb
require 'left.rb'
require 'right.rb'
c = C.new
c.l
c.r
% cat left.rb
class C
def l; m end
def m; p :left_m end
end
% cat right.rb
class C
def r; m end
def m; p :right_m end
end
というように 3つのファイルがあったとします。これを普通に実行すると
% ruby main.rb
:right_m
:right_m
となります。
が、ここで(私の解釈による) selector namespace が導入して、require して
いないファイルのメソッドは見えないと考えると、left.rb と right.rb は
require 関係において子孫 - 祖先関係にはないので、m という名前のメソッ
ドは干渉しないと想像できます。つまり、l が呼び出す m は left.rb の m
になり、r が呼び出す m はright.rb の m になるだろう、というわけです。
つまり
% ruby -rnamespace.rb bottom.rb
:left_m
:right_m
というようなかんじです。
と、いうようなことを効率無視で実現した namespace.rb は次のようなもので
す。
% cat namespace.rb
Dependences = []
NameSpace = {}
def normalize_feature(feature)
# xxx: this method should return absolute pathname including suffix.
File.basename(feature, '.rb')
end
alias namespace_original_require require
def require(feature)
depender = normalize_feature(caller.first.sub(/:.*/, ''))
dependee = normalize_feature(feature)
#p [:require, depender, dependee]
Dependences << [depender, dependee]
namespace_original_require feature
end
def search_method(file, klass, name)
#p [:search_method, file, klass, name]
#p Dependences
#p NameSpace
klass.ancestors.each {|mod|
files = [file]
# xxx: Dependences may have cycle.
Dependences.each {|depender, dependee|
next unless files.include? depender
files << dependee
}
files.uniq!
#p files
qualified_names = []
files.each {|f|
if NameSpace.include? [f, mod, name]
qualified_names << NameSpace[[f, mod, name]]
end
}
qualified_names.uniq!
case qualified_names.length
when 0
raise StandardError.new "internal error: no method found: #{file} #{klass} #{name}"
when 1
#p qualified_names.first
return qualified_names.first
else
raise StandardError.new "method conflict: #{name}: #{qualified_names.join(' ')}"
end
}
end
class Module
@@enable_namespace = false
def disable_namespace
@@enable_namespace = false
begin
yield
ensure
@@enable_namespace = true
end
end
def method_added(name)
return unless @@enable_namespace
file = normalize_feature(caller.first.sub(/:.*/, ''))
mod = self
qualified_name = "_#{file}_#{mod}_#{name}"
#p [:method_added, file, mod, name]
NameSpace[[file, mod, name]] = qualified_name
disable_namespace {
code = <<-"END"
alias_method #{qualified_name.dump}, :#{name}
def #{name}(*args, &block)
file = normalize_feature(caller.first.sub(/:.*/, ''))
#p [:call, file, :#{name}, args]
send(search_method(file, self.class, :#{name}), *args, &block)
end
END
#print code
mod.class_eval code
}
end
@@enable_namespace = true
end
ちなみに、この namespace.rb では left.rb と right の両方を require し
ている場所から m を呼ぶと、曖昧なのでエラーになります。
(override を扱っていないのでエラーにしすぎですが。)
% ruby -rnamespace.rb -e 'require "left"; require "right"; C.new.m'
./namespace.rb:45:in `search_method': method conflict: m: _left_C_m _right_C_m (StandardError)
from ./namespace.rb:22:in `each'
from ./namespace.rb:22:in `search_method'
from (eval):5:in `m'
from -e:1
--
[田中 哲][たなか あきら][Tanaka Akira]
「ふえろ! わかめちゃん作戦です$(C⊇」(Little Worker, 桂遊生丸)