[#44578] Ruby初心者が作りました — Kabu and Ruby管理人 <kabu_and_ruby@...>

http://www.geocities.jp/kabuandruby/index.html

26 messages 2008/02/06

[#44691] ”Rubyアプリケーションプログラミング”の伝言サーバの使い方 — "Yangkook Kim" <yangkookkim@...>

キムと申します。オーム社から出版されている書籍、"Rubyアプリケーションプログラミング"のP267~275に掲載されている伝言サーバー&クライアントの利用の仕方がわかりません。質問を要約すると次の2点です。1、サーバーが正常に起動されているかどうかわからない。2、書き込みクライアントで入力をサーバーに送信する方法がわからない。

8 messages 2008/02/24

[ruby-list:44614] Re: Pathname で拡張子を変更する

From: Tanaka Akira <akr@...>
Date: 2008-02-12 07:13:22 UTC
List: ruby-list #44614
In article <47AFF439.1080708@moji.gr.jp>,
  "5.5" <5.5@moji.gr.jp> writes:

> 正規表現リテラルのところで一瞬考えちゃいますが,メソッド
> 一つで書けて簡潔ですね。早速使わせていただこうと思います。
> るびきちさん,ありがとうござました。
>
> ※やっぱり専用メソッドはほしいですが。

こんなところですかねぇ。

Index: lib/pathname.rb
===================================================================
--- lib/pathname.rb	(revision 15443)
+++ lib/pathname.rb	(working copy)
@@ -255,11 +255,19 @@ class Pathname
   end
 
   if File::ALT_SEPARATOR
-    SEPARATOR_PAT = /[#{Regexp.quote File::ALT_SEPARATOR}#{Regexp.quote File::SEPARATOR}]/
+    SEPARATOR_LIST = "#{Regexp.quote File::ALT_SEPARATOR}#{Regexp.quote File::SEPARATOR}"
+    SEPARATOR_PAT = /[#{SEPARATOR_LIST}]/
   else
+    SEPARATOR_LIST = "#{Regexp.quote File::SEPARATOR}"
     SEPARATOR_PAT = /#{Regexp.quote File::SEPARATOR}/
   end
 
+  # Return a pathname which the extention of the basename is substituted by
+  # <i>repl</i>.
+  def sub_ext(repl)
+    self.class.new(@path.sub(%r{\.[^#{SEPARATOR_LIST}.]*\z}o) { repl })
+  end
+
   # chop_basename(path) -> [pre-basename, basename] or nil
   def chop_basename(path)
     base = File.basename(path)
-- 
[田中 哲][たなか あきら][Tanaka Akira]

In This Thread