[#13083] [PATCH] ruby 1.7 compile error on mswin32 — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
[#13087] importing forwardable — "Akinori MUSHA" <knu@...>
石塚さんの forwardable.rb を標準添付ライブラリにするべく、
まつもと ゆきひろです
At Thu, 3 May 2001 15:03:48 +0900,
At Thu, 3 May 2001 17:46:21 +0900,
けいじゅ@日本ラショナルソフトウェアです.
At Fri, 4 May 2001 04:07:37 +0900,
けいじゅ@日本ラショナルソフトウェアです.
[#13114] defined? $& — Koji Arai <JCA02266@...>
新井です。
[#13116] instance_eval のバグ — Masato KIYAMA <masato@...>
木山です.
なかだです。
前田です。
前田です。
なかだです。
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
[#13169] SizedQueue#pop causes deadlock — "Okada Jun" <yun@...>
岡田です。
At Sun, 13 May 2001 14:11:18 +0900,
まつもと ゆきひろです
At Mon, 14 May 2001 00:24:45 +0900,
まつもと ゆきひろです
At Mon, 14 May 2001 08:59:23 +0900,
まつもと ゆきひろです
At Tue, 15 May 2001 03:31:54 +0900,
まつもと ゆきひろです
わたなべです。
さきほど、 HEAD への ruby-sha1 のインポートを完了しました。 :)
こんにちは、なかむら(う)です。
[#13195] スレッドで ctrl-c が効かなくなる ? — akira yamada / やまだあきら <akira@...>
まつもと ゆきひろです
新井です。
新井です。
[#13202] Re: [ruby-list:29672] Re: Enumerator — "Akinori MUSHA" <knu@...>
ruby-dev に移ります。
間違えて ruby-list に送ってしまったので、 ruby-dev に出し
まつもと ゆきひろです
At Wed, 16 May 2001 01:01:31 +0900,
Akinori MUSHAさんの<86ae4envtc.wl@archon.local.idaemons.org>から
At Wed, 16 May 2001 13:48:20 +0900,
[#13259] Enumerator -- Round 2 — "Akinori MUSHA" <knu@...>
もう一度、 Enumerable/Enumerator についてみなさんのご意見を
まつもと ゆきひろです
At Mon, 21 May 2001 06:04:32 +0900,
原です。
At Mon, 21 May 2001 15:00:11 +0900,
原です。
At Tue, 22 May 2001 19:02:10 +0900,
原です。
At Tue, 22 May 2001 20:57:02 +0900,
原です。
At Thu, 24 May 2001 15:44:14 +0900,
ごとうゆうぞうです。
[#13266] ruby-1.7 irb — WATANABE Tetsuya <tetsu@...>
渡辺哲也です。
[#13277] ext/dbm in ruby 1.7 — Kazuhiro NISHIYAMA <zn@...>
ruby 1.7のext/dbmですが、
まつもと ゆきひろです
渡辺哲也です。
まつもと ゆきひろです
渡辺哲也です。
まつもと ゆきひろです
[#13292] Integer("X") rescue -1 が parse error — YASUI Kentarow <kenyasui@...>
安井です。
まつもと ゆきひろです
At Wed, 23 May 2001 08:59:50 +0900,
At Thu, 24 May 2001 14:15:04 +0900,
まつもと ゆきひろです
At Thu, 24 May 2001 16:52:24 +0900,
[#13299] Proc#call weirdness ? — "Akinori MUSHA" <knu@...>
Proc#call は引数を配列化して渡しているようですが、これを
まつもと ゆきひろです
At Thu, 24 May 2001 14:25:22 +0900,
原です。
まつもと ゆきひろです
[#13336] lib/README — Kazuhiro NISHIYAMA <zn@...>
ruby_1_6のlib/READMEにcgi.rb,forwardable.rb,irb.rbの説明が
[#13357] glob & fnmatch — "Akinori MUSHA" <knu@...>
以下の機能追加をするのはいかがでしょうか。
[#13366] StringBuffer — Shugo Maeda <shugo@...>
前田です。
[#13370] clearerr(3) — Satoru Takabayashi <satoru@...>
高林と申します
Satoru Takabayashi <satoru@namazu.org> wrote:
[#13391] TCL_PACKAGE_PATH — WATANABE Hirofumi <eban@...>
わたなべです.
[#13415] ruby-gtk-0.24,0.25 が CPU を使い切る — a-shigi@...
ども鴫原です。
<20010531002634.371239@localhost>の記事において
[#13428] mswin32/ming32 system patch (experimental) — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
なかだです。
こんにちは、なかむら(う)です。
こんにちは、なかむら(う)です。
なかだです。
こんにちは、なかむら(う)です。
なかだです。
こんにちは、なかむら(う)です。
なかだです。
こんにちは、なかむら(う)です。
なかだです。
こんにちは、なかむら(う)です。
[ruby-dev:13328] Re: Enumerator -- Round 2
けいじゅ@日本ラショナルソフトウェアです.
In [ruby-dev :13322 ] the message: "[ruby-dev:13322] Re: Enumerator --
Round 2 ", on May/24 21:00(JST) "Akinori MUSHA" writes:
> ところが、 Enumerator が標準で用意されると俄然状況が変わります。
>例えば、 find.rb を見てみます。現在、モジュールにはメソッドとして
>Find::find(*path) { |f| ... } のみが用意されています。
>
> Enumerator 導入後、これを次のようにしてみたらどうでしょうか。
>
> module Find
> def open(*path)
> Enumerator.by_method(Find, :find, *path)
> end
> # Dir[] / Dir::glob からの類推
> alias [] open
>
> def find(*path)
> # 現行の Find::find の内容
> end
> end
>
>すると、
>
> files = Find['.'].select { |f| File.file?(f) }
>
>などということができてとても便利になります。ユーザからは特に
>Enumerator という存在は見えませんが、ライブラリ側からすると、
>この陰の存在によって手軽に Enumerable なオブジェクトを生成して
>返すことが可能になっています。
うーん... ここでFindモジュールの例を出すのは...これは、find moduleの作り
が悪だけだと思います。
明らかにFindモジュールはEnumerablbeなので、最後に添付したものように作り
直すべきでしょう。
もし、Enumeratorが役に立つとしたらば、Enumerableなあるクラスがデフォルト
のeach以外に他のメソッドでもenum出きるときだけだと思います。その他の場合
は積極的にeachを定義してEnumerableをincludeすべきです。
# 私の提案: 今あるモジュール/クラスでもenumっぽいものは積極的に
# Enumerableにしよう!!
ということは、Enumeratorそのものももうちょっと考えなくては行けないってこ
とを意味しているでしょうね。
##-- my find module
# とはいえ最近検証していないので動かないかも(^^;;;
# Usage:
# require "find.rb"
#
# Find.find('/foo','/bar') {|f| ...}
# or
# find = Find.new('/foo', '/bar')
# for f in find
# ...
# end
#
# メソッド:
# Find.new(*path)
# pathを検索すべきディレクトリリストとしてFindオブジェクトを
# 生成.
# Find.find(*path) {|path| ...}
# pathを検索すべきディレクトリリストとし, 検索を行なう. 各ファ
# イルはpathに渡される.
# Find.grep
# 未実装
# Find.members(pattern, *path)
# ディレクトリリストpathを検索ツリーとし, そのツリー上のファ
# イルでpatternにマッチするファイルのリストを返す. イテレー
# タとして呼ばれた時には, マッチしたファイル毎にブロックを呼
# び出す.
# Find.prune
# 現在のディレクトリのディレクトリツリーをこれ以上検索しない.
# Find#if_can_not_open {|f|
# ファイルがオープンできない時の処理をブロックに渡す. ブロッ
# ク引数には, そのパス名が渡る. デフォルトの動作はワーニング
# を出して, pruneする
# Find#each
# 検索ツリーから1ファイルずつブロックに渡す.
# Find#prune
# 現在のディレクトリのディレクトリツリーをこれ以上検索しない.
# Find#break
# 検索の中止
# Find#depth_first(TRUE)
# 深さ優先探索をするかどうか? デフォルトは深さ優先探索.
# Find#directory_first(TRUE)
# ディレクトリツリーの検索で最初にディレクトリを渡すか? デフォ
# ルトはディレクトリを最初に渡す.
# Find#prune_symlink(TRUE)
# シンボリックリンクの先をたどるか? デフォルトはたどらない.
#
#
class Find
include Enumerable
def Find.new(*path)
find = super
return find
end
def Find.find(*path)
find = new(*path)
for file in find
yield file
end
end
def Find.prune
throw :FIND_PRUNE
end
def Find.grep(pattern, *path)
find = new(*path)
if iterator?
find.grep(pattern) do
|file|
yield file
end
else
return find.grep(pattern)
end
end
def Find.members(pattern, *path)
find = new(*path)
if iterator?
for file in find
if file.index(pattern)
yield file
end
end
else
collect = []
for file in find
if file.index(pattern)
collect.push file
end
end
return collect
end
end
def initialize(*path)
@path = path.reverse
if_can_not_open
@depth_first = TRUE
@directory_first = TRUE
@prune_symlink = TRUE
end
attr :depth_first, TRUE
attr :directory_first, TRUE
attr :prune_symlink, TRUE
def if_can_not_open
if iterator?
@if_can_not_open = proc
else
@if_can_not_open = proc {
|f|
printf "%s: Permission denied\n", f
prune
}
end
end
def each
catch :FIND_BREAK do
# while file = @path.pop
while (file = @path.pop
file)
# print file.inspect, @path.inspect, "\n"
catch :FIND_PRUNE do
if @directory_first
yield file
else
if file.kind_of?(Array)
yield file[0]
next
elsif node?(file)
if @depth_first
@path.push [file]
else
@path.unshift [file]
end
else
yield file
next
end
end
if node?(file)
if not File.readable? file
@if_can_not_open.call(file)
end
d = Dir.open(file)
begin
for f in d
next if f == "." or f == ".."
if file == "/"
f = "/" + f
else
f = file + "/" + f
end
if @depth_first
@path.push f
else
@path.unshift f
end
end
ensure
d.close
end
end
end
end
end
end
def prune
throw :FIND_PRUNE
end
def break
throw :FIND_BREAK
end
public :break
def node?(file)
File.directory? file and
not (@prune_symlink and File.symlink? file)
end
private :node?
end
__
..............................石塚 圭樹@日本ラショナルソフトウェア...
----------------------------------->> e-mail: keiju@rational.com <<---