[#2355] [Req] Array#reverse — keiju@... (Keiju ISHITSUKA)

けいじゅ@SHLジャパンです.

19 messages 1997/03/13
[#2357] Re: [Req] Array#reverse — matz@... (Yukihiro Matsumoto) 1997/03/13

まつもと ゆきひろです.

[#2359] Re: [Req] Array#reverse 1997/03/13

けいじゅ@SHLジャパンです.

[#2387] Kanji String — gotoken@... (GOTO Kentaro)

はじめまして、 後藤ともうします。

33 messages 1997/03/19
[#2389] Re: Kanji String — matz@... (Yukihiro Matsumoto) 1997/03/19

まつもと ゆきひろです.

[#2391] Re: Kanji String — gotoken@... (GOTO Kentaro) 1997/03/19

後藤です

[#2393] Re: Kanji String — matz@... (Yukihiro Matsumoto) 1997/03/19

まつもと ゆきひろです.

[#2465] curses library — MAEDA Shugo <ender@...> 1997/03/28

前田です。

[#2402] about TCPserver — MAEDA Shugo <ender@...>

前田です。

45 messages 1997/03/21
[#2403] Re: about TCPserver — matz@... (Yukihiro Matsumoto) 1997/03/22

まつもと ゆきひろです

[#2405] Re: about TCPserver — MAEDA Shugo <ender@...> 1997/03/23

前田です。

[#2406] Re: about TCPserver — matz@... (Yukihiro Matsumoto) 1997/03/24

[#2408] Re: about TCPserver — WATANABE Hirofumi <watanabe@...> 1997/03/24

わたなべです.

[#2411] Re: about TCPserver — MAEDA Shugo <ender@...> 1997/03/24

前田です。

[#2417] Re: about TCPserver — matz@... (Yukihiro Matsumoto) 1997/03/25

まつもと ゆきひろです.

[#2425] Re: about TCPserver — MAEDA Shugo <ender@...> 1997/03/25

前田です。

[#2439] url escape — gotoken@... (GOTO Kentaro)

どシロウトの後藤です.

57 messages 1997/03/27
[#2451] Re: url escape — sinara@... 1997/03/27

原です。

[#2455] class design (Re: url escape) — matz@... (Yukihiro Matsumoto) 1997/03/27

まつもと ゆきひろです

[#2471] Re: class design (Re: url escape) — sinara@... 1997/03/28

原です。

[#2487] Re: class design (Re: url escape) — matz@... (Yukihiro Matsumoto) 1997/03/29

まつもと ゆきひろです

[#2510] Re: class design (Re: url escape) 1997/03/30

けいじゅ@SHLジャパンです.

[#2603] Re: class design (Re: url escape) — sinara@... 1997/04/04

原です。

[#2505] Re: WWW library (Re: class design) — Shin-ichiro Hara <sinara@...>

原です。

15 messages 1997/03/30

[ruby-list:2447] Re: url escape

From: WATANABE Hirofumi <watanabe@...>
Date: 1997-03-27 05:09:58 UTC
List: ruby-list #2447
わたなべです.

matz@caelum.co.jp (Yukihiro Matsumoto) writes:

:あえていえばquoteのsafeのあたりとかで正規表現を使ったり,
:sprintfの代わりにpackを使ったりするのがruby風なんでしょうか.

それじゃ perl 風だと思う :-)

pack じゃなくて unpack を使ってみようと思ったら
  p "A".unpack("H2")[0]
  "41\000"
のように余計な "\0" が入ってます.

p じゃなくて print だと気づかないっすね.

def quote(s, *extra)
  pattern = '([^-,.\w' + extra.join + '])'
  s.gsub(pattern) {
    "%" + $1.unpack('H2')[0].upcase
  }
end

うっ, [^\w] が出てきてしまった :-) こっちも大丈夫ですよね?

-- 
わたなべひろふみ

--- pack.c.orig	Fri Mar 14 04:25:51 1997
+++ pack.c	Thu Mar 27 13:34:20 1997
@@ -568,14 +568,13 @@
 		if (p[-1] == '*' || len > (send - s) * 8)
 		    len = (send - s) * 8;
 		bits = 0;
-		ary_push(ary, bitstr = str_new(0, len + 1));
+		ary_push(ary, bitstr = str_new(0, len));
 		t = RSTRING(bitstr)->ptr;
 		for (i=0; i<len; i++) {
 		    if (i & 7) bits >>= 1;
 		    else bits = *s++;
 		    *t++ = (bits & 1) ? '1' : '0';
 		}
-		*t = '\0';
 	    }
 	    break;
 
@@ -588,14 +587,13 @@
 		if (p[-1] == '*' || len > (send - s) * 8)
 		    len = (send - s) * 8;
 		bits = 0;
-		ary_push(ary, bitstr = str_new(0, len + 1));
+		ary_push(ary, bitstr = str_new(0, len));
 		t = RSTRING(bitstr)->ptr;
 		for (i=0; i<len; i++) {
 		    if (i & 7) bits <<= 1;
 		    else bits = *s++;
 		    *t++ = (bits & 128) ? '1' : '0';
 		}
-		*t = '\0';
 	    }
 	    break;
 
@@ -608,7 +606,7 @@
 		if (p[-1] == '*' || len > (send - s) * 2)
 		    len = (send - s) * 2;
 		bits = 0;
-		ary_push(ary, bitstr = str_new(0, len + 1));
+		ary_push(ary, bitstr = str_new(0, len));
 		t = RSTRING(bitstr)->ptr;
 		for (i=0; i<len; i++) {
 		    if (i & 1)
@@ -617,7 +615,6 @@
 			bits = *s++;
 		    *t++ = hexdigits[bits & 15];
 		}
-		*t = '\0';
 	    }
 	    break;
 
@@ -630,7 +627,7 @@
 		if (p[-1] == '*' || len > (send - s) * 2)
 		    len = (send - s) * 2;
 		bits = 0;
-		ary_push(ary, bitstr = str_new(0, len + 1));
+		ary_push(ary, bitstr = str_new(0, len));
 		t = RSTRING(bitstr)->ptr;
 		for (i=0; i<len; i++) {
 		    if (i & 1)
@@ -639,7 +636,6 @@
 			bits = *s++;
 		    *t++ = hexdigits[(bits >> 4) & 15];
 		}
-		*t = '\0';
 	    }
 	    break;
 

In This Thread