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

[mhc:01911] Re: mhc2palm で最後の月曜日をあつかう



  Message-Id: <20040602.135352.71162460.hide@xxxxxxxx>
  Date:       Wed, 02 Jun 2004 13:53:52 +0900 (JST)
  From:       KOIE Hidetaka (鯉江英隆) <hide@xxxxxxxx>
  Subject:    [mhc:01910] Re: mhc2palm で最後の月曜日をあつかう

  |   | 定期的なミーティングで
  |   |    月の最後の月曜日
  |   | というのが追加になったのですが
  |   | mhc2plamが失敗します。
  |   | 
  |   | ファイルはこんなかんじです。
  |   |     X-SC-Subject: 会議
  |   |     X-SC-Location: 
  |   |     X-SC-Day: 
  |   |     X-SC-Time: 10:00-11:00
  |   |     X-SC-Category: 
  |   |     X-SC-Priority: 
  |   |     X-SC-Cond: last Mon
  |   |     X-SC-Duration: 20040531-
  |   |     X-SC-Alarm: 
  |   | 
  |   | とりあえずのパッチをつくりました。
  | 
  | このパッチで
  | CLIE TH55に転送してつかっているのですが
  | どうの予定が正しく表示されません。
  | 
  | ためしにPalmから予定を入力すると
  | 「曜日指定/毎月最後の月曜日」となるのに
  | mhc2palmからのは
  | 「曜日指定/毎月」となっているので
  | あのパッチではLastの変換がうまくいっていないようです。

パッチを出しなおします。
mhcでLastの予定をpalmの形に変換するときに5thにすると
うまくいくようです。

ちなみに実機で4thを指定しようとすると
palmが4thなのかLastなのかきいてきます。
5thの場合は無条件にLastになってしまいました。


Index: mhc2palm.in
===================================================================
RCS file: /cvsroot/mhc/mhc2palm.in,v
retrieving revision 1.6
diff -u -r1.6 mhc2palm.in
--- mhc2palm.in	13 Sep 2001 05:15:17 -0000	1.6
+++ mhc2palm.in	3 Jun 2004 11:15:47 -0000
@@ -21,7 +21,7 @@
 
 def usage
   print '
-usage: mhc2palm [-a | -i] [-n] [-d dev] [-r dir] [YYYYMMDD-yyyymmdd]
+usage: mhc2palm [-a | -i] [-n] [-d dev] [-r dir] [-A mon] [-B mon] [YYYYMMDD-yyyymmdd]
 
   mhc2palm -- Add/Copy mhc articles to a palm.
 
@@ -35,6 +35,8 @@
              default value is /dev/pilot
     -r dir : Set repository directory of the mhc.
              ~/Mail/schedule
+    -A mon : XXX
+    -B mon : XXX
 
     YYYYMMDD-yyyymmdd : set a start and end date of scanning mhc.
                         if omitted, scan from 3 months ago to
@@ -69,6 +71,7 @@
 $flag_verbose = false
 $flag_noharm, $flag_append, $flag_install = false, false, false
 $flag_device, $flag_from, $flag_to = '/dev/pilot', nil, nil
+$flag_before, $flag_after = -3, 3
 $flag_dir = File .expand_path("~/Mail/schedule")
 
 while ARGV .length > 0
@@ -87,6 +90,12 @@
   when '-r'
     ARGV .shift
     $flag_dir = ARGV[0]
+  when '-A'
+    ARGV .shift
+    $flag_after = ARGV[0] . to_i
+  when '-B'
+    ARGV .shift
+    $flag_before = - (ARGV[0] . to_i)
   when /^(\d{8})-(\d{8})$/
     $flag_from, $flag_to = MhcDate .new($1), MhcDate .new($2)
   else
@@ -95,8 +104,9 @@
   ARGV .shift
 end
 
-$flag_from = MhcDate .new .m_succ!(-3) if !$flag_from
-$flag_to   = MhcDate .new .m_succ!(+3) if !$flag_to
+usage() if ($flag_before >= $flag_after)
+$flag_from = MhcDate .new .m_succ!($flag_before) if !$flag_from
+$flag_to   = MhcDate .new .m_succ!($flag_after) if !$flag_to
 
 usage() if !($flag_append || $flag_install) || ($flag_append && $flag_install)
 
Index: ruby-ext/lib/mhc-date.rb
===================================================================
RCS file: /cvsroot/mhc/ruby-ext/lib/mhc-date.rb,v
retrieving revision 1.6
diff -u -r1.6 mhc-date.rb
--- ruby-ext/lib/mhc-date.rb	12 Jan 2004 10:24:38 -0000	1.6
+++ ruby-ext/lib/mhc-date.rb	3 Jun 2004 11:15:47 -0000
@@ -59,7 +59,7 @@
   include Comparable
 
   D_TABLE  = [0, 306, 337, 0, 31, 61, 92, 122, 153, 184, 214, 245, 275]
-  O_LABEL  = %w(1st 2nd 3rd 4th 5th last)
+  O_LABEL  = %w(1st 2nd 3rd 4th 5th Last)
   M_LABEL  = %w(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec)
   W_LABEL  = %w(Sun Mon Tue Wed Thu Fri Sat)
   W_JLABEL = %w(日 月 火 水 木 金 土)
Index: ruby-ext/lib/mhc-palm.rb
===================================================================
RCS file: /cvsroot/mhc/ruby-ext/lib/mhc-palm.rb,v
retrieving revision 1.9
diff -u -r1.9 mhc-palm.rb
--- ruby-ext/lib/mhc-palm.rb	29 Oct 2003 12:48:13 -0000	1.9
+++ ruby-ext/lib/mhc-palm.rb	3 Jun 2004 11:15:47 -0000
@@ -509,15 +509,20 @@
   ## 01       -- by date
   ## duration_b - duration_e まで
   ##
-  ## ord  .. 0 - 4 の整数 1st, 2nd, 3rd, 4th, Last に対応
+  ## ord  .. 0 - 5 の整数 1st, 2nd, 3rd, 4th, 5th, Last に対応
   ## wek  .. 0 - 6 の整数 Sun, ... ,Sat            に対応
   ##
   def set_monthly_by_day(beg, fin, freq, ord, wek)
     set_duration(beg, fin) ## beg, fin の型チェックもする
     set_frequency(freq)    ## freq     の型チェックもする
 
+    # 5thはLastを意味する
+    if (ord == 5)
+      ord = 4
+    end
+
     ## beg の日付が ord, week を満たしているかのチェックが必要
-    msg = "Type/ange error: (0< ord <4, 0< wek <6) required. (#{ord}, #{wek})"
+    msg = "Type/Range error: (0< ord <4, 0< wek <6) required. (#{ord}, #{wek})"
     raise msg if !(ord .is_a?(Integer) && 0 <= ord && ord <= 4)
     raise msg if !(wek .is_a?(Integer) && 0 <= wek && wek <= 6)
     raise msg if !((ord == 4 && beg .o_last?) || (ord < 4  && beg .o == ord))


--
鯉江英隆 <hide@xxxxxxxx>