[#30426] CGI でグラフを描くときにお勧めのライブラリは? — 堀川 久 <vzw00011@...>
こんにちは。
宮内といいます。
高橋征義です。
[#30453] syntax check without execution? — Tanaka Akira <akr@...17n.org>
最近、eRuby のまねごとをしていて、そのなかで Ruby のコードを生成してい
まつもと ゆきひろです
In article <994217165.945078.13509.nullmailer@ev.netlab.jp>,
まつもと ゆきひろです
Yukihiro Matsumotoさんの<994219298.882129.13585.nullmailer@ev.netlab.jp>から
[#30479] Object#dup — "Shin'ya Adzumi" <adzumi@...>
あづみです。
まつもと ゆきひろです
あづみです。
わたなべです。
[#30507] Ruby/Tk TkPhotoImage#data — Noritsugu Nakamura <nnakamur@...>
[#30512] open errno EALREADY triggerd — "Inoue" <inoue@...>
井上です。
井上です。
なかだです。
[#30514] Ruby module frame work? — Takahiro Kambe <taca@...>
こんにちは。
まつもと ゆきひろです
In message <994643239.367096.2557.nullmailer@ev.netlab.jp>
[#30522] Walrus (WEB Application Server) — NAKAJIMA Taku <tnaka@...>
中島@ブレーンです。
[#30523] RTtool & RDindex new package — rubikitch <rubikitch@...>
るびきちです。
こんにちは,とみながです.
From: Kazuto Tominaga <tominaga@snake.m.ns.it.teu.ac.jp>
[#30529] InterBase を使用したい — "YOUJI KUROKAWA" <CQE10242@...>
環境
黒川です たいへんおせわになっております。
[#30530] Question about script on the book "Ruby nyuumon" — NAWATE Masahiko <agul@...>
縄手@松江と言います。
From: NAWATE Masahiko <agul@mag.shimane-u.ac.jp>
縄手@松江です。
From: NAWATE Masahiko <agul@mag.shimane-u.ac.jp>
At Tue, 10 Jul 2001 00:26:41 +0900,
From: "Akinori MUSHA" <knu@iDaemons.org>
[#30551] RTtool 0.1.4 (was Re: RTtool & RDindex new package) — Takahiro Kambe <taca@...>
こんにちは。
From: Takahiro Kambe <taca@sky.yamashina.kyoto.jp>
In message <20010710035601.TZZG14050.mail.rdc1.kt.home.ne.jp@witch>
[#30552] 名前の異なるコンストラクタを複数持つには? — keiichi matsunaga <ma2@...>
はじめまして。松永と言うものです。
[#30586] case 文で文字列を判断したい — Takuo Tabata <taku@...>
[#30601] ruby-1.6.4 build on gcc-3.0/glibc-2.2.3/kernel-2.4.7pre5 — KUSUNOKI Masanori <masanori@...>
楠です
[#30614] ライブラリから別のライブラリを呼び出すときのパスについて — keiichi matsunaga <ma2@...>
松永です。
[#30622] RDtool requires amstd? — Kazuhiro NISHIYAMA <zn@...>
RDtool 0.6.10のインストールが
[#30649] \ mark in path of a script — "Y.ITO" <gfh05223@...>
はじめまして。Ruby/eRuby を最近使い始めたばかりです。
[#30655] XMLParser & DTD — skoba@... (KOBAYASHI Satoshi)
はじめまして、小林@豊橋技術科学大学です。
[#30680] overwride method — "Inoue" <inoue@...>
井上です。
[#30692] Ruby 開発環境のご紹介 — 斉藤和樹 <QZS01353@...>
はじめまして、斉藤と申します。
なひです。
[#30705] 下位バイト 0x5c の文字が化けてしまいます — "ANAKI Kyosuke" <anaki@...>
初めまして。穴木と申します。まったくのRuby初心者です。どうぞよろしくお願い
At Mon, 23 Jul 2001 20:18:45 +0900,
[#30725] mswin32 版の改行コード — "Y.ITO" <gfh05223@...>
先日はeRuby mswin32最新版の件でお世話になりました。
[#30731] irb で Thread.critical = true — Kazuhiro NISHIYAMA <zn@...>
irbでThread.critical = trueにすると別スレッドが動き続けるのですが。
[#30734] UML クラス図と Ruby の記述についての対応 — Ken-ichi HASHIMOTO <ken@...>
橋本@福井県在住です。
[#30738] cgi について — 岩本次郎 <jiro3@...>
岩本次郎です。
[#30755] ruby-orbit support server side — Dai <MAP2303@...>
[#30764] int/int => float? — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
あづみです。
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
たけ(tk)です。
まつもと ゆきひろです
KONISHI Hiromasaです。
いけがみです。
けいじゅ@日本ラショナルソフトウェアです.
あべです。
[ruby-list:30441] Re: [tcltk-ext] option をメソッド風に記述できる?
永井@知能.九工大です.
From: Noritsugu Nakamura <nnakamur@mxq.mesh.ne.jp>
Subject: [ruby-list:30436] [tcltk-ext] option をメソッド風に記述できる?
Date: Mon, 2 Jul 2001 19:34:17 +0900
Message-ID: <20010702193529Z.nnakamur@mxq.mesh.ne.jp>
nnakamur> で、Ruby/Tk では、Tcl/Tk での option を
nnakamur> メソッド風に記述できますが、tcltk-ext では
nnakamur> できるのでしょうか?
できませんでした.(^_^;
というのも,Tcl/Tk のコマンドを自動で調べて定義する時に,
cget と configure まで再定義してしまっていたためです.
ウィジェットコマンドとしてのこれらは再定義してはまずいので,
調査時に見つけたウィジェットコマンドリストから削除して
クラス/モジュール定義ファイルを生成するようにしました.
多分,これでできるようになったと思います.
mk_tkextlib.rb の差分を添えておきますので,
お急ぎの場合はこのパッチを当てて試してみてください.
# 一部,バグフィックスも行ってます.
生成された定義ファイルを TkPackage モジュール経由で
使うための情報も加えた tcltk-ext v0.5 の全体は
RAA で入手できるはずです.
--- ../tcltk-ext.0.4/mk_tkextlib.rb Thu Sep 28 14:39:18 2000
+++ ./mk_tkextlib.rb Tue Jul 3 16:56:37 2001
@@ -1,9 +1,9 @@
-#!/usr/local/bin/ruby
+#!/usr/bin/env ruby
#
# mk_tkextlib.rb
#
-Mk_TkExtLib_Version = 0.4
-# 2000/09/28 Hidetosh NAGAI (nagai@ai.kyutech.ac.jp)
+Mk_TkExtLib_Version = 0.5
+# 2001/07/03 Hidetosh NAGAI (nagai@ai.kyutech.ac.jp)
#
require 'getopts'
require 'tcltkextlib'
@@ -110,7 +110,7 @@
return cmd, 'not-proc', nil
else
# エラーなし → 戻り値を保存
- ret_val.push
+ ret_val.push(@ip.eval("set err_msg"))
end
}
}
@@ -501,6 +501,10 @@
op_opt = $1.strip.chomp('.').strip.squeeze(" \t")\
.split(/\s*(?:,(?!\s*or\s)|,\s*or\s|\sor\s)\s*/) \
.collect{|opt| (opt =~ /^('|"|\?)(.*)\1$/)? $2: opt}
+
+ # 'cget' と 'configure' とは省く (継承させるため)
+ op_opt.delete('cget')
+ op_opt.delete('configure')
end
end
@@ -761,11 +765,12 @@
next
end
if w.length < diff12[0].length
- pat = w.split('').filter{|c|c=~/[$?*^+-.\\]/? '\\'+c: c}.join('.*')
+ pat = w.split('').collect!{|c|c=~/[$?*^+-.\\]/? '\\'+c: c} \
+ .join('.*')
break if diff12[0] =~ /^#{pat}.*$/i
else
pat = diff12[0].split('') \
- .filter{|c| c=~/[$?*^+-.\\]/? '\\'+c: c}.join('.*')
+ .collect!{|c| c=~/[$?*^+-.\\]/? '\\'+c: c}.join('.*')
break if w =~ /^#{pat}.*$/i
end
diff12.shift
@@ -783,11 +788,12 @@
next
end
if w.length < diff21[0].length
- pat = w.split('').filter{|c|c=~/[$?*^+-.\\]/? '\\'+c: c}.join('.*')
+ pat = w.split('').collect!{|c|c=~/[$?*^+-.\\]/? '\\'+c: c} \
+ .join('.*')
break if diff21[0] =~ /^#{pat}.*$/i
else
pat = diff21[0].split('') \
- .filter{|c| c=~/[$?*^+-.\\]/? '\\'+c: c}.join('.*')
+ .collect!{|c| c=~/[$?*^+-.\\]/? '\\'+c: c}.join('.*')
break if w =~ /^#{pat}.*$/i
end
diff21.shift
@@ -800,8 +806,8 @@
# 一方は他方 (大文字,小文字はそのまま) に文字列を追加したものか
lvl += 1
- pat1 = cmd1.split('').filter{|c| c=~/[$?*^+-.\\]/? '\\'+c: c}.join('.*')
- pat2 = cmd2.split('').filter{|c| c=~/[$?*^+-.\\]/? '\\'+c: c}.join('.*')
+ pat1 = cmd1.split('').collect!{|c| c=~/[$?*^+-.\\]/? '\\'+c: c}.join('.*')
+ pat2 = cmd2.split('').collect!{|c| c=~/[$?*^+-.\\]/? '\\'+c: c}.join('.*')
return -lvl if cmd1 =~ /^.*#{pat2}.*$/ # cmd1 は cmd2 + α
return lvl if cmd2 =~ /^.*#{pat1}.*$/ # cmd2 は cmd1 + α
@@ -913,7 +919,7 @@
end
}
}
- dels.each{|cmd| rel_tbl[cmd] = nil}
+ dels.each{|cmd| rel_tbl.delete(cmd)}
end
# スーパークラス候補を持たないものをリストアップ
@@ -947,7 +953,7 @@
subs.delete_if{|cmd, sub| dels.include?(cmd)}
# 同一コマンドの付与
- subs.filter{|cmd, sub|
+ subs.collect!{|cmd, sub|
if same[cmd] != []
[[cmd] + same[cmd], sub]
else
@@ -957,7 +963,7 @@
end
def _estimate_rel_step1(rel)
- rel.filter{|cmd, sup_rel|
+ rel.collect!{|cmd, sup_rel|
if cmd.kind_of?(Array)
cmd = _estimate_rel_step1_sub(cmd)
end
@@ -1195,7 +1201,7 @@
def _estimate_rel_step3(rel)
return [] until rel && rel != []
- rel.filter{|s|
+ rel.collect!{|s|
if s.size == 1
_estimate_rel_step3(s[0])
else
@@ -1314,7 +1320,7 @@
print "\n# namespace 内のコマンドの獲得 ( for Tcl8.0 over )\n" if verbose
@base_namespace.each{|namsp|
cmds = @ip.eval("namespace eval #{namsp} {info commands}").split(/\s+/)
- cmds.filter{|cmd|
+ cmds.collect!{|cmd|
#@ip.eval("namespace eval #{namsp} {namespace origin #{cmd}}")
@ip.eval("namespace eval #{namsp} {namespace origin #{cmd}}")\
.sub(/^::/,'')
@@ -1371,7 +1377,7 @@
end
@namespace.each{|namsp|
cmds = @ip.eval("namespace eval #{namsp} {info commands}").split(/\s+/)
- cmds.filter{|cmd|
+ cmds.collect!{|cmd|
#@ip.eval("namespace eval #{namsp} {namespace origin #{cmd}}")
@ip.eval("namespace eval #{namsp} {namespace origin #{cmd}}")\
.sub(/^::/,'')
@@ -1717,11 +1723,11 @@
arg_names << arg[1..-1]
else
# 引数先頭は小文字にする
- arg[0] = arg[0,1].tr("A-Z","a-z")
+ arg[0] = (arg[0,1] || '').tr("A-Z","a-z")
arg_names << arg
end
}
- arg_names.filter{|a| (RESERVED_NAME.include?(a))? 'arg_'+a: a }
+ arg_names.collect!{|a| (RESERVED_NAME.include?(a))? 'arg_'+a: a }
size = arg_names.size
0.upto(size-1) {|i|
cnt = 1
@@ -1827,7 +1833,8 @@
cmd.split('::').reverse_each {|sp|
next if cmd_base != "" && cmd_base =~ /^#{sp}/i
# cmd_base = sp.capitalize + cmd_base
- cmd_base = sp[0,1].tr("a-z","A-Z") + sp[1..-1] + cmd_base
+ cmd_base = (sp[0,1] || '').tr("a-z","A-Z") \
+ + (sp[1..-1] || '') + cmd_base
}
@@ -1844,7 +1851,7 @@
# コマンド名先頭文字は小文字にする
# cmd_name = cmd_base.sub(/^./){|c| c.tr("A-Z","a-z")}
cmd_name = cmd_base.dup
- cmd_name[0] = cmd_base[0,1].tr("A-Z","a-z")
+ cmd_name[0] = (cmd_base[0,1] || '').tr("A-Z","a-z")
cmd_name
end
@@ -1869,7 +1876,8 @@
# コマンド名が空列なら,元のコマンド名の先頭を小文字にして,そのまま用いる
if cmd_name == ''
- cmd_name = cmd_info[0][0,1].tr("A-Z","a-z") + cmd_info[0][1..-1]
+ cmd_name = (cmd_info[0][0,1] || '').tr("A-Z","a-z") \
+ + (cmd_info[0][1..-1] || '')
end
# コマンド名の一部に '-' を含むなら,'_' に変更する
@@ -1894,7 +1902,8 @@
# コマンド名が空列なら,元のコマンド名の先頭を小文字にして,そのまま用いる
if cmd_name == ''
- cmd_name = cmd_info[0][0,1].tr("A-Z","a-z") + cmd_info[0][1..-1]
+ cmd_name = (cmd_info[0][0,1] || '').tr("A-Z","a-z") \
+ + (cmd_info[0][1..-1] || '')
end
# コマンド名の一部に '-' を含むなら,'_' に変更する
@@ -2138,7 +2147,8 @@
# その先頭文字を大文字にした後,先頭にモジュール名を追加する
cmdmod_name = _decide_general_cmd_name(cmd_info[0])
# cmdmod_name = @modname + cmdmod_name.capitalize
- cmdmod_name = cmdmod_name[0,1].tr("a-z","A-Z") + (cmdmod_name[1..-1] || '')
+ cmdmod_name = (cmdmod_name[0,1] || '').tr("a-z","A-Z") \
+ + (cmdmod_name[1..-1] || '')
cmdmod_name = @modname + cmdmod_name
# options
@@ -2413,7 +2423,8 @@
# その先頭文字を大文字にした後,先頭にモジュール名を追加する
cmdmod_name = _decide_widget_control_cmd_name(cmd_info[0])
# cmdmod_name = @modname + cmdmod_name.capitalize
- cmdmod_name = cmdmod_name[0,1].tr("a-z","A-Z") + (cmdmod_name[1..-1] || '')
+ cmdmod_name = (cmdmod_name[0,1] || '').tr("a-z","A-Z") \
+ + (cmdmod_name[1..-1] || '')
cmdmod_name = @modname + cmdmod_name
# cmdmod_name と @modname が同じになってしまっているか?
@@ -2461,7 +2472,8 @@
# コマンド名が空列なら,元のコマンド名の先頭を小文字にして,そのまま用いる
if cmd_name == ''
- cmd_name = cmd_info[0][0,1].tr("A-Z","a-z") + cmd_info[0][1..-1]
+ cmd_name = (cmd_info[0][0,1] || '').tr("A-Z","a-z") \
+ + (cmd_info[0][1..-1] || '')
end
# コマンド名の一部に '-' を含むなら,'_' に変更する
@@ -2535,13 +2547,14 @@
else
parent_name = _decide_widget_class_cmd_name(parent_info[0])
# parent_name = @modname + parent_name.capitalize
- parent_name = parent_name[0,1].tr("a-z","A-Z") \
+ parent_name = (parent_name[0,1] || '').tr("a-z","A-Z") \
+ (parent_name[1..-1] || '')
parent_name = @modname + parent_name
end
child_name = _decide_widget_class_cmd_name(child_info[0])
# child_name = @modname + child_name.capitalize
- child_name = child_name[0,1].tr("a-z","A-Z") + (child_name[1..-1] || '')
+ child_name = (child_name[0,1] || '').tr("a-z","A-Z") \
+ + (child_name[1..-1] || '')
child_name = @modname + child_name
# @modname と同じになってしまっているか?
@@ -2600,11 +2613,13 @@
# その先頭文字を大文字にした後,先頭にモジュール名を追加する
cmd_name = _decide_widget_class_cmd_name(cmd)
# cmd_name = @modname + cmd_name.capitalize
- cmd_name = cmd_name[0,1].tr("a-z","A-Z") + (cmd_name[1..-1] || '')
+ cmd_name = (cmd_name[0,1] || '').tr("a-z","A-Z") \
+ + (cmd_name[1..-1] || '')
cmd_name = @modname + cmd_name
alias_name = _decide_widget_class_cmd_name(alias_cmd)
# alias_name = @modname + alias_name.capitalize
- alias_name = alias_name[0,1].tr("a-z","A-Z") + (alias_name[1..-1] || '')
+ alias_name = (alias_name[0,1] || '').tr("a-z","A-Z") \
+ + (alias_name[1..-1] || '')
alias_name = @modname + alias_name
# @modname と同じになってしまっているか?
@@ -2628,7 +2643,7 @@
# その先頭文字を大文字にした後,先頭にモジュール名を追加する
cmdclass_name = _decide_widget_class_cmd_name(cmd_info[0])
# cmdclass_name = @modname + cmdclass_name.capitalize
- cmdclass_name = cmdclass_name[0,1].tr("a-z","A-Z") \
+ cmdclass_name = (cmdclass_name[0,1] || '').tr("a-z","A-Z") \
+ (cmdclass_name[1..-1] || '')
cmdclass_name = @modname + cmdclass_name
@@ -2698,7 +2713,8 @@
def initialize (module_name, extlib_info, all_cmd_info, widget_class_tree)
# モジュール名の先頭が大文字になっていなければ大文字にする
# @modname = module_name.capitalize
- @modname = module_name[0,1].tr("a-z","A-Z") + module_name[1..-1]
+ @modname = (module_name[0,1] || '').tr("a-z","A-Z") \
+ + (module_name[1..-1] || '')
@fid = open("#{module_name}.rb", "w")
@@ -2852,6 +2868,7 @@
#verbose = 'DEBUG'
#verbose = true
verbose = false
+cmd_args = $*.dup
$pre_load_lib = [ nil ] ;# デフォルトでは検査前に要求するライブラリはなし
@@ -2874,6 +2891,9 @@
##########################################################
# verbose オプションの定義
verbose = true if $OPT_v
+
+##########################################################
+print "# 実行時コマンドライン\n",$0,' ',cmd_args.join(' '),"\n\n" if verbose
##########################################################
# 拡張パッケージ定義の load
--
永井 秀利 (九工大 知能情報)
nagai@ai.kyutech.ac.jp