[#23168] File.fnmatch のリファクタリング — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>

山本です。

13 messages 2004/03/08

[#23192] File.fnmatch と Dir.glob の非互換部分 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>

山本です。

19 messages 2004/03/13
[#23194] Re: File.fnmatch と Dir.glob の非互換部分 — matz@... (Yukihiro Matsumoto) 2004/03/13

まつもと ゆきひろです

[#23195] Re: File.fnmatch とDir.glob の非互換部分 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/03/14

山本です。

[#23196] Re: File.fnmatch とDir.glob の非互換部分 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/03/14

山本です。

[#23260] Re: File.fnmatch とDir.glob の非互換部分 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/03/30

山本です。

[#23261] Re: File.fnmatch とDir.glob の非互換部分 — matz@... (Yukihiro Matsumoto) 2004/03/30

まつもと ゆきひろです

[#23265] Re: File.fnmatch とDir.glob の非互換部分 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/03/30

山本です。

[#23238] Re: [ruby-cvs] ruby, ruby/lib, ruby/lib/rss, ruby/sample/openssl: * lib/logger.rb: trim tail space of each line. no user visible change. — Kouhei Sutou <kou@...>

須藤です.

10 messages 2004/03/27

[ruby-dev:23202] Re: [ruby-talk:93584] date/format.rb fix

From: Tadayoshi Funaba <tadf@...5.so-net.ne.jp>
Date: 2004-03-16 12:47:46 UTC
List: ruby-dev #23202
とくに意見がなければ、数日みて、このようにすると思います。


--- date.rb	2004-01-19 04:56:12+09	2.11
+++ date.rb	2004-03-15 19:27:14+09
@@ -469,16 +469,18 @@
 
   def self.new_with_hash(elem, sg)
     elem ||= {}
-    y, m, d, h, min, s, of =
-      elem.values_at(:year, :mon, :mday, :hour, :min, :sec, :offset)
+    y, m, d, h, min, s, fr, of =
+      elem.values_at(:year, :mon, :mday,
+		     :hour, :min, :sec, :sec_fraction, :offset)
     h   ||= 0
     min ||= 0
     s   ||= 0
+    fr  ||= 0
     of  ||= 0
     if [y, m, d].include? nil
       raise ArgumentError, 'invalid date'
     else
-      civil(y, m, d, h, min, s, of.to_r/86400, sg)
+      civil(y, m, d, h, min, s, of.to_r/86400, sg) + (fr/86400)
     end
   end
 
--- date/format.rb	2004-01-19 05:43:28+09	2.12
+++ date/format.rb	2004-03-15 19:25:36+09
@@ -1,6 +1,8 @@
 # format.rb: Written by Tadayoshi Funaba 1999-2004
 # $Id: format.rb,v 2.12 2004-01-19 05:43:28+09 tadf Exp tadf $
 
+require 'rational'
+
 class Date
 
   MONTHS = {
@@ -182,6 +184,12 @@
 	return unless str.sub!(/\A%/o, '')
       when '%+'
 	return unless __strptime(str, '%a %b %e %H:%M:%S %Z %Y', elem)
+=begin
+      when '%.'
+	return unless str.sub!(/\A(\d+)/o, '')
+	val = $1.to_i.to_r / (10**$1.size)
+	elem[:sec_fraction] = val
+=end
       when '%1'
 	return unless str.sub!(/\A(\d+)/o, '')
 	val = $1.to_i
@@ -227,7 +235,7 @@
   def self._parse(str, comp=false)
     str = str.dup
 
-    str.gsub!(/[^-+.\/:0-9a-z]+/ino, ' ')
+    str.gsub!(/[^-+,.\/:0-9a-z]+/ino, ' ')
 
     # day
     if str.sub!(/(#{PARSE_DAYPAT})\S*/ino, ' ')
@@ -236,7 +244,10 @@
 
     # time
     if str.sub!(
-		/(\d+):(\d+)(?::(\d+))?
+		/(\d+):(\d+)
+		 (?:
+		   :(\d+)(?:[,.](\d*))?
+		 )?
 		 (?:
 		   \s*
 		   ([ap])(?:m\b|\.m\.)
@@ -254,15 +265,18 @@
       hour = $1.to_i
       min = $2.to_i
       sec = $3.to_i if $3
-
       if $4
+	sec_fraction = $4.to_i.to_r / (10**$4.size)
+      end
+
+      if $5
 	hour %= 12
-	if $4.downcase == 'p'
+	if $5.downcase == 'p'
 	  hour += 12
 	end
       end
 
-      zone = $5
+      zone = $6
     end
 
     # eu
@@ -368,7 +382,7 @@
 		      \s*
 		      T?
 		      \s*
-		      (\d{2,6})
+		      (\d{2,6})(?:[,.](\d*))?
 		    )?
 		    (?:
 		      \s*
@@ -406,7 +420,10 @@
 	  sec  = $3[ 4, 2].to_i if $3.size >= 6
 	end
       end
-      zone = $4
+      if $4
+	sec_fraction = $4.to_i.to_r / (10**$4.size)
+      end
+      zone = $5
     end
 
     if str.sub!(/\b(bc\b|bce\b|b\.c\.|b\.c\.e\.)/ino, ' ')
@@ -432,6 +449,7 @@
     elem[:hour] = hour if hour
     elem[:min] = min if min
     elem[:sec] = sec if sec
+    elem[:sec_fraction] = sec_fraction if sec_fraction
     elem[:zone] = zone if zone
     offset = zone_to_diff(zone) if zone
     elem[:offset] = offset if offset
@@ -511,6 +529,10 @@
 	o << '%02d' % mm
       when '%%'; o << '%'
       when '%+'; o << strftime('%a %b %e %H:%M:%S %Z %Y')	# TZ
+=begin
+      when '%.'
+	o << '%06d' % (sec_fraction / (1.to_r/86400/(10**6)))
+=end
       when '%1'; o <<   '%d' % jd
       when '%2'; o << strftime('%Y-%j')
       when '%3'; o << strftime('%Y-%m-%d')


In This Thread

Prev Next