[#21736] OBJECTDAY 2000 — 助田 雅紀 <masaki.suketa@...>

助田です.

29 messages 2000/04/03
[#21748] Re: OBJECTDAY 2000 — keiju@... (石塚圭樹) 2000/04/04

けいじゅ@日本ラショナルソフトウェアです.

[#21753] Re: OBJECTDAY 2000 — Hideto ISHIBASHI <hideto-i@...4u.or.jp> 2000/04/05

石橋秀仁です。

[#21755] Re: OBJECTDAY 2000 — keiju@... (石塚圭樹) 2000/04/05

けいじゅ@日本ラショナルソフトウェアです.

[#21837] site_ruby & Linux distribution — OZAWA Sakuro <crouton@...>

小澤さくです。

14 messages 2000/04/10

[#21922] ruby-1.4.4 binary for BeOS 5 (Intel) — tenmei@... (Noriaki Harada)

はらだです。

23 messages 2000/04/15
[#21923] Re: ruby-1.4.4 binary for BeOS 5 (Intel) — NAITOH Jun <naitoh@...> 2000/04/15

はじめまして、内藤と申します。

[#21926] Re: ruby-1.4.4 binary for BeOS 5 (Intel) — tenmei@... (Noriaki Harada) 2000/04/16

>はじめまして、内藤と申します。

[#21930] Re: ruby-1.4.4 binary for BeOS 5 (Intel) — NAITOH Jun <naitoh@...> 2000/04/16

内藤です。

[#21968] Re: ruby-1.4.4 binary for BeOS 5 (Intel) — Katsuyuki Komatsu <komatsu@...> 2000/04/17

小松です。

[#21969] Re: ruby-1.4.4 binary for BeOS 5 (Intel) — NAITOH Jun <naitoh@...> 2000/04/17

再び内藤です。

[#21956] Thread & STDIN — Masato Toyoshima <mt@...>

はじめまして、豊島といいます。

16 messages 2000/04/17

[#21981] rd2man — WATANABE Hirofumi <eban@...>

わたなべです.

29 messages 2000/04/18
[#21982] Re: rd2man — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp> 2000/04/18

Toshです。

[#21985] Re: rd2man — WATANABE Hirofumi <Hirofumi.Watanabe@...> 2000/04/19

わたなべです.

[#22036] Re: rd2man — Wakou Aoyama <wakou@...> 2000/04/20

青山です。

[#22040] Re: rd2man — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp> 2000/04/21

Toshです。

[#22014] shell interactive — WATANABE Daisaku <dwata@...3.rim.or.jp>

31 messages 2000/04/20
[#22016] Re: shell interactive — 時田幸粋 <ktokita@...> 2000/04/20

こんにちは、時田です。

[#22017] Re: shell interactive — nobu.nakada@... 2000/04/20

なかだです。

[#22018] Re: shell interactive — WATANABE Hirofumi <Hirofumi.Watanabe@...> 2000/04/20

わたなべです.

[#22027] Re: shell interactive — 時田幸粋 <ktokita@...> 2000/04/20

こんにちは、時田です。

[#22103] Please put ruby-1.4.4.tar.gz in pub/lang/ruby/1.4/ — "Akinori -Aki- MUSHA" <knu@...>

 お願いがあるのですが、 ruby-1.4.4.tar.gz を FTP ツリーの 1.4/

16 messages 2000/04/25
[#22199] Where to put ruby-i.j.k.tar.gz on? (Re: ) — SUGIHARA Hiroshi <maili31s@...> 2000/04/28

[ruby-list:22103]におきまして、2000/04/25 12:38ほどに、

[#22117] StateGraph: state machine interpreter — Hideto ISHIBASHI <hideto-i@...4u.or.jp>

石橋 "rubyholic" 秀仁です。

16 messages 2000/04/25

[#22159] $LOAD_PATH への追加について — "Sugawara Hajime" <sugawara@...>

 はじめまして、菅原@ホビー・データです。

13 messages 2000/04/27

[#22181] Can't Use optparse — Yamada Kenji <kyamada@...>

28 messages 2000/04/28
[#22186] Re: Can't Use optparse — akira yamada / やまだあきら <akira@...> 2000/04/28

[#22195] Re: Can't Use optparse — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp> 2000/04/28

Toshです。

[#22261] Re: Can't Use optparse — nobu.nakada@... 2000/05/04

なかだです。

[#22264] Re: Can't Use optparse — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp> 2000/05/04

Toshです。

[#22270] Re: Can't Use optparse — nobu.nakada@... 2000/05/04

なかだです。

[#22272] Re: Can't Use optparse — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp> 2000/05/04

Toshです。

[#22300] Re: Can't Use optparse — Koji Arai <JCA02266@...> 2000/05/05

新井です。

[ruby-list:21727] Re: Where is http-access.rb?

From: Tomoyuki Kosimizu <greentea@...2.so-net.ne.jp>
Date: 2000-04-01 21:14:31 UTC
List: ruby-list #21727
越水です。

PerlのURI::Escape.pm (v3.13)では:

# Default unsafe characters. (RFC 2396 ^uric)
$text =~ s/([^;\/?:@&=+\$,A-Za-z0-9\-_.!~*'()])/$escapes{$1}/g;

となっています。コメントにあるuricというのは:

uric          = reserved | unreserved | escaped
reserved      = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" |
                "$" | ","
unreserved    = alphanum | mark
mark          = "-" | "_" | "." | "!" | "~" | "*" | "'" |
                "(" | ")"
escaped       = "%" hex hex

となっています。コードを見たのですが、実際にはescapedをさらにエスケー
プするようです。これはこれで実用上は構わないのでしょう。

ところで、IPv6のURLを定めているRFC 2732では、`['と`]'をreservedに移し
ています。それを考慮して、上のEscape.pmのコードを直すと:

$text =~ s/([^;\/?:@&=+\$,A-Za-z0-9\-_.!~*'()\[\]])/$escapes{$1}/g;

になります。これをRubyにすると:

def escape(string)
  string.gsub(/([^;\/?:@&=+$,A-Za-z0-9\-_.!~*'()\[\]])/n) do
    sprintf("%%%02X", $1.unpack("C")[0])
  end
end

となるでしょうか。正規表現の[^]を展開すると私の理解を越えてしまうので、
そのままにしておきました。

ただ、なひさんのおっしゃることにも一理あって、何をエスケープするかは、
ライブラリの実装者が決めかねるところでもあります。Escape.pmでは、それ
に対応するために:

uri_escape($string, [$unsafe])

として、どの文字をエスケープの対象にするか、ユーザが決められるようになっ
ています。それを真似て:

def escape(string, unsafe=nil)
  ## raise ArgumentError unless unsafe.nil? or unsafe.is_a? String
  if not unsafe
    string.gsub(/[^;\/?:@&=+$,A-Za-z0-9\-_.!~*'()\[\]]/n) do |match|
      sprintf("%%%02X", match.unpack("C")[0])
    end
  else
    string.gsub(/[#{unsafe}]/n) do |match|
      sprintf("%%%02X", match.unpack("C")[0])
    end
  end
end
p escape('http://foo/bar?a=b c=d')
p escape('http://foo/bar?a=b c=d', ' ')

としたほうがいいかも知れません。

` 'を`+'に変換する処理は、もともとURIの範疇ではありませんし、削ること
に異論はありません。ただ、考えてみれば、エスケープする機能は、正しい
URI文字列を作るためには必要ですね。

越水
greentea@fa2.so-net.ne.jp

In This Thread