[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[mhc:01977] 月と曜日の表記



  X-SC-Subject: emacs-w3m birthday
  X-SC-Cond: June 25

というような指定をしているスケジュールファイルを,Emacs 上で閲覧すると
「6月25日だけ」に表示されるのに,WebMHC 経由では「毎月25日」に表示され
るので気が付いたのですが,現行の ruby 側の parser は,月と曜日の非省略
名を受け付けてくれないようですね?

非省略名でも受け付けてくれるように末尾のようなパッチを作成してみました.
何か操作を行うと省略名に戻ってしまうという問題はあるのですが,commit 
しても良いでしょうか?

-- 
土屋 雅稔 ( TSUCHIYA Masatoshi )
--- mhc-date.rb	22 Jun 2004 10:07:40 -0000	1.7
+++ mhc-date.rb	24 Oct 2004 12:49:26 -0000
@@ -64,6 +64,9 @@
   W_LABEL  = %w(Sun Mon Tue Wed Thu Fri Sat)
   W_JLABEL = %w(日 月 火 水 木 金 土)
 
+  M_LONG_LABEL = %w(January February March April May June July August September October November December)
+  W_LONG_LABEL = %w(Sunday Monday Tuesday Wednesday Thursday Friday Saturday)
+
   def initialize(y = -1, m = 1, d = 1)
     if y .kind_of?(String) && y =~ /^(\d{4})(\d\d)(\d\d)$/
       @y, @m, @d = $1 .to_i, $2 .to_i, $3 .to_i
--- mhc-schedule.rb	24 Oct 2004 12:07:27 -0000	1.20
+++ mhc-schedule.rb	24 Oct 2004 12:49:26 -0000
@@ -175,6 +175,9 @@
   WEK_REGEX = MhcDate::W_LABEL .join('|')
   ORD_REGEX = MhcDate::O_LABEL .join('|')
 
+  MON_LONG_REGEX = MhcDate::M_LONG_LABEL .join('|')
+  WEK_LONG_REGEX = MhcDate::W_LONG_LABEL .join('|')
+
   HDR_REGEX = '(Subject|Location|Day|Time|Category|Cond|Duration|Alarm|Record-Id)'
 
   ALM_UNITS = {'Minute' => 60, 'Hour' => 60 * 60, 'Day' => 60 * 60 * 24}
@@ -377,10 +380,16 @@
     case cond
     when /^(#{MON_REGEX})$/oi
       (@cond_mon << cond) .uniq!
+    when /^(#{MON_LONG_REGEX})$/oi
+      cond = MhcDate::M_LABEL[ MhcDate::M_LONG_LABEL .index(cond) ]
+      (@cond_mon << cond) .uniq!
     when /^(#{ORD_REGEX})$/oi
       (@cond_ord << cond) .uniq!
     when /^(#{WEK_REGEX})$/oi
       (@cond_wek << cond) .uniq!
+    when /^(#{WEK_LONG_REGEX})$/oi
+      cond = MhcDate::W_LABEL[ MhcDate::W_LONG_LABEL .index(cond) ]
+      (@cond_wek << cond) .uniq!
     when /^\d+$/
       (@cond_num << format("%02d", cond .to_i)) .uniq!
     end
@@ -988,10 +997,16 @@
 	  case d
 	  when /^(#{MON_REGEX})$/oi
 	    @cond_mon << d .capitalize
+	  when /^(#{MON_LONG_REGEX})$/oi
+	    d = MhcDate::M_LABEL[ MhcDate::M_LONG_LABEL .index(d) ]
+	    @cond_mon << d .capitalize
 	  when /^(#{ORD_REGEX})$/oi
 	    @cond_ord << d .capitalize
 	  when /^(#{WEK_REGEX})$/oi
 	    @cond_wek << d .capitalize
+	  when /^(#{WEK_LONG_REGEX})$/oi
+	    d = MhcDate::W_LABEL[ MhcDate::W_LONG_LABEL .index(d) ]
+	    @cond_wek << d .capitalize
 	  when /^\d+$/
 	    @cond_num << format("%02d", d .to_i)
 	  end