[#32695] md5.so (LoadError) — FUKUI Osamu <o-fukui@...>
はじめまして 福井と申します。
In message "[ruby-list:32695] md5.so (LoadError)"
福井です。
In message "[ruby-list:32698] Re: md5.so (LoadError)"
[#32721] コマンドラインオプション -K と -e — "Tatsuaki Nagai" <Tatsuaki_Nagai@...>
永井@KCです。
[#32727] require "./xxx" の「カレントディレクトリ」の意味 — Take_tk <ggb03124@...>
あるディレクトリαにあるスクリプトAに「require "./xxx"」と書いてあると、
まつもと ゆきひろです
たけ(tk)です。
In article <1007384829.854960.10474.nullmailer@ev.netlab.jp>,
たけ(tk)です。
まつもと ゆきひろです
[#32772] newdate — tadf@...
ふなばです。
In article <20011204234521G.tadf@kt.rim.or.jp>,
ふなばです。
まつもと ゆきひろです
ふなばです。
In article <20011210180612F.tadf@funaba.org>,
ふなばです。
なひです。
ふなばです。
なひです。
ふなばです。
まつもと ゆきひろです
ふなばです。
In article <20011210162702A.tadf@funaba.org>,
ふなばです。
In article <20011212093832C.tadf@funaba.org>,
ふなばです。
In article <20011212135605G.tadf@funaba.org>,
まつもと ゆきひろです
すいません。件名が変だったので、再送します。コメントをくださる方は、
須賀です。昨日の議論を反映して、仕様案(*)を改版しました。
[#32797] dir_config (mkmf.rb) のオプション指定の優先順位 — tamra@...
なかだです。
In <200112060205.fB625u928906@sharui.nakada.kanuma.tochigi.jp>
なかだです。
In <200112060838.fB68bx924929@sharui.nakada.kanuma.tochigi.jp>
なかだです。
[#32807] irb 0.8 release — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
From: keiju@rational.com (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
From: keiju@rational.com (石塚圭樹)
けいじゅ@日本ラショナルソフトウェアです.
From: keiju@rational.com (石塚圭樹)
From: rubikitch <rubikitch@ruby-lang.org>
けいじゅ@日本ラショナルソフトウェアです.
From: keiju@rational.com (石塚圭樹)
[#32814] 添削お願い — Take_tk <ggb03124@...>
見てのとおり、ユーザが指定した拡張子のリストの文字列を正規表現の配列に変
[#32836] configure.in for netbsd — hiramatu@...
平松と申します。
[#32858] [ANN] html-template 0.15 — IKEBE Tomohiro <ikebe@...>
[#32869] RAA update — rubikitch <rubikitch@...>
るびきちです。
[#32904] Segmentation fault — em6t-kbt@...
久保田です。
[#32923] Ruby/GSL — yoshiki@...
常定と申します。
[#32930] irbsh の rehash が遅い — rubikitch <rubikitch@...>
るびきちです。
新井です。
[#32935] Ruby256 倍本 " 界道編 " — shukaku@...
原です。
なかだです。
新井です。
[#32945] class-in-state — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
[#32948] [uri.rb] strip or not — rubikitch <rubikitch@...>
るびきちです。
[#32974] ruby で組んだ CGI の挙動がおかしい — Toru MITANI <toru_m@...2.dion.ne.jp>
[#32987] [Media Watch] 「横着プログラミング」 — Shin-ichiro HARA <sinara@...>
原です。
[#32989] write to $> causes error on mswin32/mingw32 — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
あおきです。
こんにちは、なかむら(う)です。
[#33014] "Walrus" on LinuxJapan — Taku Nakajima <tnakajima@...>
中島@ブレーンです。
[#33026] Ruby 1.6.6 リファレンスマニュアル日本語版 (RD) — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
[#33047] regex bug? — Yamamoto Atsushi <yamamoto@...>
山本@東大駒場です.
[#33050] cgi.rb で cookie の encoding について — Beyond <beyond@...>
こんにちは、なかむら(う)です。
なかだです。
なかだです。
On Fri, 28 Dec 2001 15:46:50 +0900
青山です。
In message <20011228054515.726.qmail@localhost>
青山です。
青山です。
In article <20011229013722.1869.qmail@localhost>,
青山です。
青山です。
宮川といいます。
(根深いところでこじれているようですが…そこはひとまずおいといて、)
[#33114] 新年会 — "Shin'ya Adzumi" <adzumi@...>
あづみです。
[ruby-list:32846] Re: dir_config (mkmf.rb) のオプション指定の優先順位
なかだです。
At Sun, 9 Dec 2001 12:18:22 +0900,
TAKAHASHI Masayoshi <maki@open-news.com> wrote:
> defaultが3通りの意味で使われているのはさすがに「わかりにくい」
> と思うです。
>
> というわけで、*1をdefault_args または args、*3をdirにする、
> なんてのがidir/idefault、ldir/ldefaultとの対称性からもわかり
> よいんではないかと思いました。どうでしょ。
うーむ。御意。
> それはさておき、引数の数やクラスによって意味が変わるメソッド
> を、Rubyでわかりやすく記述するのってむずかしいですよね。
> いつも悩みます。
最近もruby-talkでそんな話がありましたが、そのときに作ったのをつ
けておきます。(3)はサブクラスで失敗しますが。
> 「彼の言葉には必ず3通りの意味がある」ってアシモフ『銀河帝国
> の興亡』でしたっけ?<9通りだったかも<どうでもいいって(汗;
うむむ、覚えてない。何巻? っつても昔図書館で読んだから手元にな
いんだよなぁ。
Index: mkmf.rb
===================================================================
RCS file: /cvs/ruby/src/ruby/lib/mkmf.rb,v
retrieving revision 1.64
diff -u -2 -p -r1.64 mkmf.rb
--- mkmf.rb 2001/12/06 09:54:19 1.64
+++ mkmf.rb 2001/12/09 13:09:27
@@ -336,20 +336,21 @@ def create_header()
end
-def dir_config(target, idefault=nil, ldefault=nil)
- if idefault && ldefault == nil
- default = idefault
- idefault = default + "/include"
- ldefault = default + "/lib"
+def dir_config(target, *args)
+ case args.size
+ when 0, 1
+ default, = args
+ when 2
+ idefault, ldefault = args
+ else
+ raise ArgumentError, "too many default directories"
end
-
dir = with_config(target + "-dir", default)
+ if dir
+ idefault = dir + "/include"
+ ldefault = dir + "/lib"
+ end
- idir, ldir = if dir then [
- dir + "/include",
- dir + "/lib"
- ] else [
- with_config(target + "-include", idefault),
- with_config(target + "-lib", ldefault)
- ] end
+ idir = with_config(target + "-include", idefault)
+ ldir = with_config(target + "-lib", ldefault)
if idir
module Overload
class Signature < Array
def invalid
TypeError.new("Invalid Signature: #{collect {|a| a.type}.join(', ')}")
end
def ===(args)
if last
(l = length) == args.length or return false
else
(l = length-1) <= args.length or return false
end
l.times {|i| self[i] === args[i] or return false}
true
end
def dispatch(*types, &block)
throw :dispatched, yield(*self) if Signature[*types] === self
end
end
def overload(args)
args = Signature[*args]
catch(:dispatched) do
yield args
raise args.invalid
end
end
def self.dispatch(recv, func, args, block)
klass = tbl = sig = meth = nil
recv.type.ancestors.find do |klass|
tbl = klass.instance_eval {@overload} or next
tbl = tbl[func] or next
sig, meth = tbl.find {|sig, meth| sig === args}
meth
end or raise Signature[*args].invalid
meth.bind(recv).call(*args, &block)
end
end
class Module
def overload(func, *types)
tbl = meth = nil
func = func.intern if func.respond_to? :intern
sig = Overload::Signature[*types]
instance_eval do
tbl = @overload ||= {}
meth = instance_method(func)
end
if meth.arity < 0 or sig.length < meth.arity
sig << nil if sig.last
elsif sig.length > meth.arity
raise ArgumentError, "too many arguments for #{func}(#{sig.length} for #{meth.arity})"
end
(tbl[func] ||= []) << [sig, meth]
module_eval "def #{func}(*args, &block) ::Overload.dispatch(self, :#{func}, args, block) end"
end
end
if $0 == __FILE__
require 'runit/testcase'
require 'runit/cui/testrunner'
END {
RUNIT::CUI::TestRunner.run(RUNIT::TestCase.all_suite)
}
class TestOverload < RUNIT::TestCase
include Overload
# (1) dispatch in overload block
def do_dispatch(*args)
overload(args) do |args|
args.dispatch(Fixnum, String, Float) do |i, s, f|
[i, s, f]
end
args.dispatch(String, Fixnum) do |s, i|
return [s, i]
end
args.dispatch(String, Fixnum, ()) do |s, i, *a|
return [s, i, *a]
end
end
end
# (2) signature case
def do_signature(*args)
case args = Signature[*args]
when Signature[Fixnum, String, Float]
i, s, f = args
[i, s, f]
when Signature[String, Fixnum]
s, i = args
return s, i
when Signature[String, Fixnum, ()]
s, i, *a = args
return s, i, *a
else
raise args.invalid
end
end
# (3) separated methods
def do_overload(i, s, f)
assert_kind_of(TestOverload, self)
[i, s, f]
end
overload(:do_overload, Fixnum, String, Float)
def do_overload(s, i)
assert_kind_of(TestOverload, self)
return [s, i]
end
overload(:do_overload, String, Fixnum)
def do_overload(s, i, *a)
assert_kind_of(TestOverload, self)
[s, i, *a]
end
overload(:do_overload, String, Fixnum)
# test suit
def test_cvar
assert_kind_of(Hash, o = type.instance_eval {@overload})
assert_kind_of(Array, o = o[:do_overload])
case self
when TestSuper
assert_equal(1, o.length)
when TestOverload
assert_equal(3, o.length)
end
assert_kind_of(Overload::Signature, o[0][0])
assert_kind_of(UnboundMethod, o[0][1])
end
def do_test_result(f)
assert_equal([123, "hello", 123.456], __send__(f, 123, "hello", 123.456))
end
def do_test_return(f)
assert_equal(["hello", 123], __send__(f, "hello", 123))
end
def do_test_rest(f)
assert_equal(["hello", 123, "abc", "def"], __send__(f, "hello", 123, "abc", "def"))
end
def do_test_nomatch(f)
e = assert_exception(TypeError) {__send__(f, "abc", "def")}
assert_match(e.message, /\sString,\s*String\z/)
end
%w[dispatch overload signature].each do |t|
%w[result return rest nomatch].each do |f|
eval "def test_#{t}_#{f}; do_test_#{f}(:do_#{t}); end"
end
end
end
class TestSuper < TestOverload
def do_dispatch(*args)
overload(args) do |args|
args.dispatch(String, String) do |f, s|
[f, s]
end
return super
end
end
def do_signature(*args)
case args = Signature[*args]
when Signature[String, String]
f, s = args
[f, s]
else
super
end
end
def do_overload(f, s)
assert_kind_of(TestSuper, self)
[f, s]
end
overload(:do_overload, String, String)
def do_test_super(f)
assert_equal(["abc", "def"], __send__(f, "abc", "def"))
end
%w[dispatch overload signature].each do |t|
undef_method "test_#{t}_nomatch"
%w[super].each do |f|
eval "def test_#{t}_#{f}; do_test_#{f}(:do_#{t}); end"
end
end
end
end
--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦