[#20083] non-block IO with TCPSocket — dn <daisuke@...>

初投稿の中村と申します。よろしくお願いします。

19 messages 2000/01/06
[#20084] Re: non-block IO with TCPSocket — Tomoyuki Kosimizu <greentea@...2.so-net.ne.jp> 2000/01/06

越水です。

[#20091] Re: non-block IO with TCPSocket — とみたまさひろ <tommy@...> 2000/01/06

とみたです。

[#20133] おききしたーいでーす — akimaru <akimaru@...>

17 messages 2000/01/09
[#20138] Re: おききしたーいでーす — akimaru <akimaru@...> 2000/01/09

[#20237] Ruby/Tk multi interpreter — nagai@...

永井@知能.九工大です.

21 messages 2000/01/17
[#20242] Re: Ruby/Tk multi interpreter — nagai@... 2000/01/17

永井@知能.九工大です.

[#20248] Re: Ruby/Tk multi interpreter — Hideto ISHIBASHI <s34204@...> 2000/01/17

石橋秀仁です。

[#20254] Re: Ruby/Tk multi interpreter — nagai@... 2000/01/18

永井@知能.九工大です.

[#20271] Re: Ruby/Tk multi interpreter — Hideto ISHIBASHI <s34204@...> 2000/01/18

石橋秀仁です。

[#20249] FTP.open err for Windows95 — "Y Kataoka" <kataoka@...>

初めまして、片岡@KLUGと申します。

18 messages 2000/01/17
[#20252] Re: FTP.open err for Windows95 — "NAKAMURA, Hiroshi" <nakahiro@...> 2000/01/18

なひです.

[#20342] How to build ruby(current) with cygwin — KORIYAMA Naohiro <kory@...2.so-net.ne.jp>

はじめまして、こおりやまです。

19 messages 2000/01/23
[#20362] Re: How to build ruby(current) with cygwin — WATANABE Hirofumi <Hirofumi.Watanabe@...> 2000/01/24

わたなべです.

[#20422] Re: How to build ruby(current) with cygwin — Masaki Suketa<CQN02273@...> 2000/01/29

Win32OLE の作者の助田です.

[#20394] ruby-1.4.3 port to HPUX 11.00 — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

15 messages 2000/01/26

[ruby-list:20031] Re: RD with method index (again)

From: nobu.nakada@...
Date: 2000-01-03 14:03:10 UTC
List: ruby-list #20031
なかだです。

At Mon, 3 Jan 2000 01:09:05 +0900,
Toshiro Kuwabara <toshirok@yb3.so-net.ne.jp> wrote:
> むぅ、なるほど。「わざ」ですね。
> # extendってこう使うのか。

  いや、本来こう使うものかどうかは…(^^;。ちょっとこういう小手先
のはあんまり良くはないかなと思っても、こういった、どこにでもフッ
クを仕込めるみたいなところは非常に楽ですね、カスタマイズに。

> リファレンスは結局どういう形に落ち着くのかわからないですが、可能な場合
> はこのコードの一部を使わせていただいても構わないでしょうか?

  もちろん構いません。というか使ってもらった方がありがたいです。
自分のところでしか同じドキュメント作れないって状況は芳しくないの
で。

# 「使っちゃいや」ってものをわざわざ流したりはしませんし。

  ただあれだと Hoge#hoge() と Hoge#hoge!() みたいのがあるとうまく
マッチしてくれないので、今こうしてます。参考までに。

      def [](k)
	if !v = super
	  ['(?![\w\d!?])', ''].each do |tail|
	    v = keys.grep(Regexp.new('\A' + Regexp.quote(k) + tail))
	    if v.size == 1
	      v = super(k = v[0])
	      break
	    end
	  end
	end
	# k.sub(/[()].*/, '').tr('#', ':').
	# gsub(/(?![\da-z\-_.!~*\'();\/?:@&=+$,]|%[\da-f]{2})./i) {format('%%%02X', $&[0])}
	v
      end

  それとこういうのが欲しいのは私だけかも知れませんが、
<<< file filter
という、フィルタを通した include ってのを追加してみました。いや、
サンプルコードを別ファイルにしたかったもので。
  で、<<< は preprocess で完結するようにしてしまったんですが、こ
れはまずいでしょうか。

  ついでに要望をもう一つ。
  例えば rd2html などで、charset やら stylesheet やらを指定できる
ようになると嬉しいのですが。スクリプトを用意すればできるのかもで
すが、できればコマンドラインからも指定できるともっと嬉しいような。


diff -ru2 rdtool-0.5.5/rd/rdfmt.rb rdtool-0.5.5+/rd/rdfmt.rb
--- rdtool-0.5.5/rd/rdfmt.rb	Mon Jan  3 21:59:39 2000
+++ rdtool-0.5.5+/rd/rdfmt.rb	Mon Jan  3 22:12:24 2000
@@ -506,10 +506,7 @@
     include Enumerable
     
-    TMP_DIR = "/tmp"
-    
     attr(:root, true)
     attr(:include_path, true)
     attr(:filter, true)
-    attr(:tmp_dir, true)
     
     def initialize(src, path = [], do_parse = true)
@@ -517,5 +514,4 @@
       @include_path = path
       @filter = Hash.new()
-      @tmp_dir = TMP_DIR
       if do_parse
 	parse
@@ -539,17 +535,21 @@
     end
     alias each each_element
-    
+
+    def find_file(file)
+      for dir in @include_path
+	return open(dir + "/" + file) rescue next
+      end
+      nil
+    end
+
     private
     def preprocess(src)
-      case src
-      when String
-	src = src.split("\n")
-      end
       rd = []
       other = []
       in_rd = nil
       in_other = nil
-      tmpfile_num = 0
-      while line = src.shift
+      filter = nil
+      part = nil
+      src.each do |line|
 	case line
 	when /^=begin\s*(?:\bRD\b.*)?\s*$/
@@ -564,29 +564,16 @@
 	    part = RD::Part.new(other.join(""), "r")
 	    other.clear
-	    part_out = @filter[in_other].call(part)
-	    if @filter[in_other].mode == :rd
-	      rd.concat(part_out.to_a)
-	    else
-	      basename = "rdtmp.#{$$}.#{tmpfile_num}"
-	      tmpfile_num += 1
-	      tmpfile = open(@tmp_dir + "/" + basename + ".#{in_other}", "w")
-	      tmpfile.print(part_out)
-	      tmpfile.close
-	      rd.push("<<< #{basename}\n")
-	    end
+	    filter = @filter[in_other]
 	    in_other = nil
 #	  else
 #	    raise "[BUG] unknown part.\n"
 	  end
+	when /^<<<\s*(\S+)\s*(\w+)/
+	  if filter = @filter[$2]
+	    part = find_file($1)
+	  end
 	when /^<<<\s*(\S+\.(?:rd|rb))\s/
 	  if in_rd
-	    @include_path.each do |dir|
-	      fileName = dir + "/" + $1
-	      if test(?e, fileName)
-		included = IO.readlines(fileName)
-		rd.concat(preprocess(included))
-		break
-	      end
-	    end
+	    rd.concat(preprocess(find_file($1)))
 	  end
 	else
@@ -596,4 +583,10 @@
 	    other.push(line)
 	  end
+	end
+	if part
+	  part = filter.call(part)
+	  filter.mode == :rd or part = preprocess(part)
+	  rd.concat(part.to_a)
+	  part = nil
 	end
       end
diff -ru2 rdtool-0.5.5/rd2 rdtool-0.5.5+/rd2
--- rdtool-0.5.5/rd2	Mon Jan  3 21:59:39 2000
+++ rdtool-0.5.5+/rd2	Mon Jan  3 21:54:14 2000
@@ -49,5 +49,4 @@
     end
   end
-  include_path.push(RD::RDTree::TMP_DIR)
 end
 
@@ -77,9 +76,4 @@
 out = visitor.visit(tree)
 print out
-
-# for filter
-Dir.glob("#{RD::RDTree::TMP_DIR}/rdtmp.#{$$}.*.*").each do |i|
-  File.delete(i)
-end
 
 def usage

-- 
そうだ 強気に ちょっと インチキに☆彡
    中田 "Bugるくらいがちょうどいいかも;-)" 伸悦

In This Thread