[#33561] open-uri problem — rubikitch@...
るびきちです。
[#33567] rational, complex and nuby — Tadayoshi Funaba <tadf@...>
ruby に rational と complex を組みこもうと試していて nuby という派生物
なかだです。
> 若干古い1.8.6がベースでしょうか。
なかだです。
> 2002/01/25版にその後の修正を手で追加した状態? ChangeLogをみたら、
なかだです。
> ちょっと見たところ、Enumerable#stable_sort_byがsortを使っている
原です。
[#33580] Re: cgi.rb再構築案 — "Makoto Kuwata" <kwa@...>
桑田といいます。
まつもと ゆきひろです
なかだです。
[#33611] Solaris で timeout.rb が Segmentation fault する。 — shiiya@...
はじめまして。椎屋と申します。
なかだです。
椎屋です。反応ありがとうございます。
なかだです。
さとうふみやす @ OSS テクノロジです。
In article <87r6foys1z.wl%fumiyas@osstech.jp>,
At Fri, 8 Feb 2008 14:00:35 +0900,
In article <87prv8yovi.wl%fumiyas@osstech.jp>,
とみたです。
In article <20080219182203.2559fc3e.tommy@tmtm.org>,
[#33621] EUC-KR <-> UTF-8 transition table — "Park Ji-In" <tisphie@...>
朴 芝印です。
成瀬です。
At 05:00 08/02/07, NARUSE, Yui wrote:
朴 芝印です。
[#33628] encdet.rb — Tanaka Akira <akr@...>
前から考えていたのですが、ファイル先頭の magic comment や
まつもと ゆきひろです
In article <E1JN0fO-00084M-Dg@x61.netlab.jp>,
須藤です。
In article <20080214.203702.439940124859613817.kou@cozmixng.org>,
須藤です。
In article <20080215.210932.373570872046057306.kou@cozmixng.org>,
須藤です。
In article <20080219.210130.275954098091635027.kou@cozmixng.org>,
[#33646] require/load/autoload の encoding オプション — Hidetoshi NAGAI <nagai@...>
永井@知能.九工大です.
まつもと ゆきひろです
永井@知能.九工大です.
[#33662] rational, complex and mathn — Tadayoshi Funaba <tadf@...>
rational は floor、truncate、ceil、round を定義していません。Numeric
他にも問題、課題はあると思います。すぐに解決できるものと、そうでないも
ひとつ書き忘れました。
まつもと ゆきひろです
> 原さんのrationalは導入予定がありますので、この機会にもう一度
原です。
> 前にふなばさんと個人的なメールのやりとりで、結局また私がrationalをまと
原です。
> > それなりに速くはなるし、単純なところでそれなりに満足していますが、一度、
nurat 0.0.2 を出しました (ついでに nucomp も)。
仕様を確認していきたいと思います。
まつもと ゆきひろです
原です。
> > new!はRubyで実装しているためにだけ必要なので、Cで実装するな
原です。
> Rational::Unify が定義されているときは、Rational.new(1,1) で Integer
> Rational() は、1つか2つの引数をとる。
> 実際的に重要な機能が Rational() という名前で固定されるのはクラスの定義
もうあまり手を入れないでおこうと思ったのです、つい手を入れてしまいまし
原です。
ちょっと実験してみました。原さんの rational は、かけ算割り算が速いので、
で、考えていたんですが、目的は、最速の rational を作ることではなくて、
原です。
成瀬です。
まつもと ゆきひろです
> はい。Complexについても1.9の間に組み込んでよいと思います。
まつもと ゆきひろです
nurat を組みこんでみました。最低限必要な修正だけになっていると思います。
rational と complex を 1.9 に組みこむ作業をしました。
異議がなければ、若干の手直しの後、次週末にでも trunk にコミットしよう
> 異議がなければ、若干の手直しの後、次週末にでも trunk にコミットしよう
まつもと ゆきひろです
[#33674] erb.rb の仕様について — "Makoto Kuwata" <kwa@...>
桑田といいます。
[#33676] Suggestion: Proc#curry — "Yusuke ENDOH" <mame@...>
遠藤と申します。
[#33679] bigdecimal — Tadayoshi Funaba <tadf@...>
bigdecimal/math.rb の BigMath は、利用者が include してつかうことを前
Integer や Float に比べると、BigDicimal() は、1 や 1.1 を受けつけない、
斎藤と申します。
> 仮にBigDecimal(1.1)を、(二進小数として)受け付けると、「BigDecimalでは、
まつもと ゆきひろです
[#33699] trunk: インストールファイルのアクセス権 — pegacorn <subscriber.jp@...>
trunk で、インストールファイルのアクセス権が適切に設定されないものが
[#33712] Array の product の戻り値 — "Hideo Konami" <konami@...>
小波です。
[#33726] Re: [ruby-cvs:22680] Ruby:r15443 (trunk): * bootstraptest/runner.rb, bootstraptest/test_method.rb, enc/depend, — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
成瀬です。
In article <47B26518.60309@airemix.com>,
Tanaka Akira wrote:
こんにちは、なかむら(う)です。
成瀬です。
[#33825] Ruby M17N 会議の議事録 — "NARUSE, Yui" <naruse@...>
成瀬です。
[#33837] spec of Rational — Shin-ichiro HARA <sinara@...>
原です。
[#33838] 文字列処理の高速化 ? — Martin Duerst <duerst@...>
ただの一例ですが、先週の金曜日に松本さんに見せたときに
[#33843] IO.copy_stream — Tanaka Akira <akr@...>
IO.copy_stream をつけるのはどうでしょうか。
[#33889] Re: [ ruby-Bugs-17454 ] irb crash while iterating over all objects — Urabe Shyouhei <shyouhei@...>
卜部です。ちょっとお知恵を拝借したく。
ミスって送信ボタン押しちゃった
こんにちは、なかむら(う)です。
なかだです。
Nobuyoshi Nakada さんは書きました:
豊福です。
まつもと ゆきひろです
豊福です。
まつもと ゆきひろです
豊福です。
まつもと ゆきひろです
豊福です。
[#33894] character encodings differ: US-ASCII and dummy encoding — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
まつもと ゆきひろです
[#33916] UTF_16LE.dummy? returns false — sheepman <sheepman@...>
こんにちは sheepman です。
[#33926] --host=i586-mingw32msvc — Kouhei Sutou <kou@...>
須藤です。
[#33937] patch for ruby_1_8_6/lib/rexml/element.rb@12852 — oshida@...
押田です。
[#33943] warning about space before argument parentheses — Nobuyoshi Nakada <nobu@...>
なかだです。
[ruby-dev:33702] Re: erb.rb の仕様について
桑田です。
2008/2/11 Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>:
> > それでは、Thread を使うかどうかは仕様ではなく、
> > 「safe_level を設定したときにそれがメインプログラムの
> > $SAFE に影響を及ぼさないこと」が仕様だという理解で
> > よろしいでしょうか。
>
> はい。
了解です。
> >
> > なんと、erb.rb の正式な仕様でしたか。了解しました。
> > では :nodoc: は取り除いた方がいいですね。
>
> rdocへのパッチは全て取り込むつもりです。
> ぜひ適切なrdocを送ってください! > みなさん
送ります。
ついでに、ERB#filename の値が ERB#def_module と ERB#def_class に
反映されるように変更しています。
#パッチが壊れたら申し訳ありません。
Index: lib/erb.rb
===================================================================
--- lib/erb.rb (revision 15382)
+++ lib/erb.rb (working copy)
@@ -744,19 +744,49 @@
end
end
- def def_method(mod, methodname, fname='(ERB)') # :nodoc:
+ # Define _methodname_ as instance method of _mod_ from compiled ruby source.
+ #
+ # example:
+ # filename = 'example.rhtml' # 'arg1' and 'arg2' are used in
example.rhtml
+ # erb = ERB.new(File.read(filename))
+ # erb.def_method(MyClass, 'render(arg1, arg2)', filename)
+ # print MyClass.new.render('foo', 123)
+ def def_method(mod, methodname, fname='(ERB)')
mod.module_eval("def #{methodname}\n" + self.src + "\nend\n", fname, 0)
end
- def def_module(methodname='erb') # :nodoc:
+ # Create unnamed module, define _methodname_ as instance method of
it, and return it.
+ #
+ # example:
+ # filename = 'example.rhtml' # 'arg1' and 'arg2' are used in
example.rhtml
+ # erb = ERB.new(File.read(filename))
+ # erb.filename = filename
+ # MyModule = erb.def_module('render(arg1, arg2)')
+ # class MyClass
+ # include MyModule
+ # end
+ def def_module(methodname='erb')
mod = Module.new
- def_method(mod, methodname)
+ def_method(mod, methodname, @filename || '(ERB)')
mod
end
- def def_class(superklass=Object, methodname='result') # :nodoc:
+ # Define unnamed class which has _methodname_ as instance method,
and return it.
+ #
+ # example:
+ # class MyClass_
+ # def initialize(arg1, arg2)
+ # @arg1 = arg1; @arg2 = arg2
+ # end
+ # end
+ # filename = 'example.rhtml' # @arg1 and @arg2 are used in example.rhtml
+ # erb = ERB.new(File.read(filename))
+ # erb.filename = filename
+ # MyClass = erb.def_class(MyClass_, 'render()')
+ # print MyClass.new('foo', 123).render()
+ def def_class(superklass=Object, methodname='result')
cls = Class.new(superklass)
- def_method(cls, methodname)
+ def_method(cls, methodname, @filename || '(ERB)')
cls
end
end
@@ -810,15 +840,46 @@
#--
# ERB::DefMethod
class ERB
- module DefMethod # :nodoc:
+
+ # Utility module to define eRuby script as instance method.
+ #
+ # === Example
+ #
+ # example.rhtml:
+ # <% for item in @items %>
+ # <b><%= item %></b>
+ # <% end %>
+ #
+ # example.rb:
+ # require 'erb'
+ # class MyClass
+ # extend ERB::DefMethod
+ # def_erb_method('render()', 'example.rhtml')
+ # def initialize(items)
+ # @items = items
+ # end
+ # end
+ # print MyClass.new([10,20,30]).render()
+ #
+ # result:
+ #
+ # <b>10</b>
+ #
+ # <b>20</b>
+ #
+ # <b>30</b>
+ #
+ module DefMethod
public
- def def_erb_method(methodname, erb)
+ # define _methodname_ as instance method of current module, using
ERB object or eRuby file
+ def def_erb_method(methodname, erb_or_fname)
if erb.kind_of? String
- fname = erb
- File.open(fname) {|f| erb = ERB.new(f.read) }
- erb.def_method(self, methodname, fname)
+ fname = erb_or_fname
+ erb = ERB.new(File.read(fname))
+ erb.def_method(self, methodname, fname)
else
- erb.def_method(self, methodname)
+ erb = erb_or_fname
+ erb.def_method(self, methodname, erb.filename || '(ERB)')
end
end
module_function :def_erb_method
===================================================================
> > これって、非公開としている Compiler オブジェクトが
> > 引数に必要なんですよね。設計としてはあんまりよろしく
> > ないと思いますが、どうでしょうか。
>
> そういうものなのですか。
> compilerに対するセットアップをCompilerに持たせたくなくて
> ERBに配置したんだけどだめでしょうか。
> privateにしてくれ! なら同意します。
private にしてもいいのなら、ぜひそうすることをお勧めします。
今だと RDoc がついているので、どうみても ERB の公式な仕様と
考えられます。
> #「気分的には非公開」といっても実際には公開ですよね。
技術的にはそうですけど、ドキュメントにまで積極的に記載する
必要はないですよね。
コードやドキュメントで「非公開である」と明記するだけで十分
だと思います。そのための :nodoc: です。
> #Rubyなので好きなように実行時に手が入れられます。
> #なので、どこをいじっても誰かが「ぎゃっ」と言うでしょう。
ドキュメントに記載してない機能をいじって「ぎゃっ」となれば、
それはその人の勝手です。
記載してある機能を使っていて「ぎゃっ」となれば、それは
開発者の責任です。
> ERB互換classが書きにくいって話ですか?
いいえ、ERB の仕様を明確にしたいという話です。
今、ERB 用のテストスクリプトを書いていて、RDoc に載っている
機能を網羅しようとしていたので、質問させていただきました。
> 私はerubisをパクってCompilerを改造しようと思ってます。
Erubis は拡張性を重視してわりと複雑なことをしているので、
Compiler の参考にするなら、Erubis に含まれている tiny.rb を
参考にするのが簡単です。
tiny.rb は 50 行程度で eRuby のクラスを実装しています。
> > #そもそも set_eoutvar() は非公開メソッド?
> > #なら :nodoc: つけてほしいです。
> > #丁寧にも RDoc がついているから、ERB の仕様だと
> > #思ってしまいました。
>
> rdocのパッチを募集します!
確認なんですけど、private にしてもよいということなので、
ERB#set_eoutvar() は仕様には含めなくていいんですよね?
Index: lib/erb.rb
===================================================================
--- lib/erb.rb (revision 15382)
+++ lib/erb.rb (working copy)
@@ -704,7 +704,7 @@
# to just use the constructor though, since calling this method requires the
# setup of an ERB _compiler_ object.
#
- def set_eoutvar(compiler, eoutvar = '_erbout')
+ def set_eoutvar(compiler, eoutvar = '_erbout') # :nodoc:
compiler.put_cmd = "#{eoutvar}.concat"
compiler.insert_cmd = "#{eoutvar}.concat"
===================================================================
> 私はeoutvarもsafe_levelも失敗だったと思ってます。
> もっとうまく使い方を誘導するべきでした。
そうなんですか?個人的にはそんなに問題とは思わないんですが。
失敗だとしたら、ERB#compile がなくて ERB#initialize でしか
コンパイルできないことだと思います。
#これって CGI class (cgi.rb) も同じような設計なんですよね。
#CGI#initializeで全部パースするから困る。
>
> Complierは一時的なコンテキストというか処理オブジェクトなので
> eoutver=では手遅れみたいです。
ならやはり Compiler オブジェクトを指定できるように設計した方が
よかったのかなと思います。
これだと、trim_mode と set_eoutvar の機能を ERB class から
Compiler class へ分離でき、すっきりします。
compiler = Compiler.new(:trim=>'>', :eoutvar=>'_erbout)
erb = ERB.new(eruby_src, safe_level, compiler)
ああそうか、これだと Compiler class を公開しないといけないのか。
難しいですね。
じゃあそもそも、ERB#initialize の eoutvar 引数ではダメで、
わざわざ ERB#set_eoutvar() を用意しなければならないような
要求が具体的にどんなことだったのか、気になります。
> _erboutは変数名しか設定できないから
> メソッドにしてフックできるようにした
とありますが、フックして何をしようとしたのでしょうか。
ERB の仕様という話からそれるのでオフトピですけど、もし
差し支えなければ教えてください。
--
makoto kuwata