Fixed timezone handling problem in icalendar.el.
This commit is contained in:
parent
83828b06e3
commit
6fe539d246
4 changed files with 101 additions and 21 deletions
|
@ -1,3 +1,11 @@
|
|||
2009-12-18 Ulf Jasper <ulf.jasper@web.de>
|
||||
|
||||
* calendar/icalendar.el (icalendar--convert-tz-offset): Fixed
|
||||
timezone names.
|
||||
(icalendar--convert-tz-offset): Fixed the "last-day-problem".
|
||||
(icalendar--add-diary-entry): Remove the trailing blank that
|
||||
diary-make-entry inserts.
|
||||
|
||||
2009-12-17 Michael Albinus <michael.albinus@gmx.de>
|
||||
|
||||
Make `file-expand-wildcards' work for remote files.
|
||||
|
|
|
@ -454,7 +454,7 @@ The strings are suitable for assembling into a TZ variable."
|
|||
(cons
|
||||
(concat
|
||||
;; Fake a name.
|
||||
(if dst-p "(DST?)" "(STD?)")
|
||||
(if dst-p "DST" "STD")
|
||||
;; For TZ, OFFSET is added to the local time. So,
|
||||
;; invert the values.
|
||||
(if (eq (aref offset 0) ?-) "+" "-")
|
||||
|
@ -466,6 +466,10 @@ The strings are suitable for assembling into a TZ variable."
|
|||
(week (if (eq day -1)
|
||||
byday
|
||||
(substring byday 0 -2))))
|
||||
;; "Translate" the icalendar way to specify the last
|
||||
;; (sun|mon|...)day in month to the tzset way.
|
||||
(if (string= week "-1") ; last day as icalendar calls it
|
||||
(setq week "5")) ; last day as tzset calls it
|
||||
(concat "M" bymonth "." week "." (if (eq day -1) "0"
|
||||
(int-to-string day))
|
||||
;; Start time.
|
||||
|
@ -2241,6 +2245,12 @@ the entry."
|
|||
'diary-make-entry
|
||||
'make-diary-entry)
|
||||
string non-marking diary-file)))
|
||||
;; Würgaround to remove the trailing blank char
|
||||
(save-excursion
|
||||
(set-buffer (find-file diary-file))
|
||||
(goto-char (point-max))
|
||||
(if (= (char-before) ? )
|
||||
(delete-char -1)))
|
||||
;; return diary-file in case it has been changed interactively
|
||||
diary-file)
|
||||
|
||||
|
|
|
@ -1,3 +1,15 @@
|
|||
2009-12-18 Ulf Jasper <ulf.jasper@web.de>
|
||||
|
||||
* icalendar-testsuite.el
|
||||
(icalendar-testsuite--run-function-tests): Added
|
||||
icalendar-testsuite--test-parse-vtimezone.
|
||||
(icalendar-testsuite--test-parse-vtimezone): New.
|
||||
(icalendar-testsuite--do-test-cycle): Doc changes.
|
||||
(icalendar-testsuite--run-real-world-tests): Removed trailing
|
||||
whitespace -- see change of icalendar--add-diary-entry in
|
||||
icalendar.el.
|
||||
(icalendar-testsuite--run-cycle-tests): Re-enabled all tests.
|
||||
|
||||
2009-09-30 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* cedet/semantic-utest-c.el: Relicense under GPLv3+.
|
||||
|
|
|
@ -53,7 +53,8 @@
|
|||
(icalendar-testsuite--test-datetime-to-diary-date)
|
||||
(icalendar-testsuite--test-diarytime-to-isotime)
|
||||
(icalendar-testsuite--test-calendar-style)
|
||||
(icalendar-testsuite--test-create-uid))
|
||||
(icalendar-testsuite--test-create-uid)
|
||||
(icalendar-testsuite--test-parse-vtimezone))
|
||||
|
||||
(defun icalendar-testsuite--test-format-ical-event ()
|
||||
"Test `icalendar--format-ical-event'."
|
||||
|
@ -272,6 +273,48 @@ END:VEVENT
|
|||
(icalendar--create-uid entry-full contents)))
|
||||
))
|
||||
|
||||
(defun icalendar-testsuite--test-parse-vtimezone ()
|
||||
(let (vtimezone result)
|
||||
(setq vtimezone (icalendar-testsuite--get-ical-event "BEGIN:VTIMEZONE
|
||||
TZID:thename
|
||||
BEGIN:STANDARD
|
||||
DTSTART:16010101T040000
|
||||
TZOFFSETFROM:+0300
|
||||
TZOFFSETTO:+0200
|
||||
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=10
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
DTSTART:16010101T030000
|
||||
TZOFFSETFROM:+0200
|
||||
TZOFFSETTO:+0300
|
||||
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=3
|
||||
END:DAYLIGHT
|
||||
END:VTIMEZONE
|
||||
"))
|
||||
(setq result (icalendar--parse-vtimezone vtimezone))
|
||||
(assert (string= "thename" (car result)))
|
||||
(message (cdr result))
|
||||
(assert (string= "STD-02:00DST-03:00,M3.5.0/03:00:00,M10.5.0/04:00:00" (cdr result)))
|
||||
(setq vtimezone (icalendar-testsuite--get-ical-event "BEGIN:VTIMEZONE
|
||||
TZID:anothername
|
||||
BEGIN:STANDARD
|
||||
DTSTART:16010101T040000
|
||||
TZOFFSETFROM:+0300
|
||||
TZOFFSETTO:+0200
|
||||
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=2MO;BYMONTH=10
|
||||
END:STANDARD
|
||||
BEGIN:DAYLIGHT
|
||||
DTSTART:16010101T030000
|
||||
TZOFFSETFROM:+0200
|
||||
TZOFFSETTO:+0300
|
||||
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=2MO;BYMONTH=3
|
||||
END:DAYLIGHT
|
||||
END:VTIMEZONE
|
||||
"))
|
||||
(setq result (icalendar--parse-vtimezone vtimezone))
|
||||
(assert (string= "anothername" (car result)))
|
||||
(message (cdr result))
|
||||
(assert (string= "STD-02:00DST-03:00,M3.2.1/03:00:00,M10.2.1/04:00:00" (cdr result)))))
|
||||
|
||||
;; ======================================================================
|
||||
;; Test methods for exporting from diary to icalendar
|
||||
|
@ -455,10 +498,16 @@ Argument INPUT icalendar event string."
|
|||
(let ((temp-diary (make-temp-file "icalendar-test-diary"))
|
||||
(temp-ics (make-temp-file "icalendar-test-ics"))
|
||||
(org-input (buffer-substring-no-properties (point-min) (point-max))))
|
||||
|
||||
;; step 1: import
|
||||
(icalendar-import-buffer temp-diary t t)
|
||||
|
||||
;; step 2: export what was just imported
|
||||
(save-excursion
|
||||
(find-file temp-diary)
|
||||
(icalendar-export-region (point-min) (point-max) temp-ics))
|
||||
|
||||
;; compare the output of step 2 with the input of step 1
|
||||
(save-excursion
|
||||
(find-file temp-ics)
|
||||
(goto-char (point-min))
|
||||
|
@ -468,6 +517,8 @@ Argument INPUT icalendar event string."
|
|||
(unless (string-equal org-input cycled)
|
||||
(error "Import test failed! Found `%s'\nbut expected `%s'" cycled
|
||||
org-input))))
|
||||
|
||||
;; clean up -- Note this is done only if test is passed
|
||||
(kill-buffer (find-buffer-visiting temp-diary))
|
||||
(save-excursion
|
||||
(set-buffer (find-buffer-visiting temp-ics))
|
||||
|
@ -1410,42 +1461,42 @@ END:VCALENDAR
|
|||
nil
|
||||
"&23/11/2004 14:00-14:30 Jjjjj & Wwwww
|
||||
Status: TENTATIVE
|
||||
Class: PRIVATE
|
||||
Class: PRIVATE
|
||||
&23/11/2004 14:45-15:45 BB Aaaaaaaa Bbbbb
|
||||
Status: TENTATIVE
|
||||
Class: PRIVATE
|
||||
Class: PRIVATE
|
||||
&23/11/2004 11:00-12:00 Hhhhhhhh
|
||||
Status: TENTATIVE
|
||||
Class: PRIVATE
|
||||
Class: PRIVATE
|
||||
&%%(and (diary-cyclic 14 12 11 2004)) 14:00-18:30 MMM Aaaaaaaaa
|
||||
Status: TENTATIVE
|
||||
Class: PRIVATE
|
||||
Class: PRIVATE
|
||||
&%%(and (diary-block 19 11 2004 19 11 2004)) Rrrr/Cccccc ii Aaaaaaaa
|
||||
Desc: Vvvvv Rrrr aaa Cccccc
|
||||
Status: TENTATIVE
|
||||
Class: PRIVATE
|
||||
Class: PRIVATE
|
||||
&%%(and (diary-cyclic 7 1 11 2004)) Wwww aa hhhh
|
||||
Status: TENTATIVE
|
||||
Class: PRIVATE "
|
||||
Class: PRIVATE"
|
||||
"&11/23/2004 14:00-14:30 Jjjjj & Wwwww
|
||||
Status: TENTATIVE
|
||||
Class: PRIVATE
|
||||
Class: PRIVATE
|
||||
&11/23/2004 14:45-15:45 BB Aaaaaaaa Bbbbb
|
||||
Status: TENTATIVE
|
||||
Class: PRIVATE
|
||||
Class: PRIVATE
|
||||
&11/23/2004 11:00-12:00 Hhhhhhhh
|
||||
Status: TENTATIVE
|
||||
Class: PRIVATE
|
||||
Class: PRIVATE
|
||||
&%%(and (diary-cyclic 14 11 12 2004)) 14:00-18:30 MMM Aaaaaaaaa
|
||||
Status: TENTATIVE
|
||||
Class: PRIVATE
|
||||
Class: PRIVATE
|
||||
&%%(and (diary-block 11 19 2004 11 19 2004)) Rrrr/Cccccc ii Aaaaaaaa
|
||||
Desc: Vvvvv Rrrr aaa Cccccc
|
||||
Status: TENTATIVE
|
||||
Class: PRIVATE
|
||||
Class: PRIVATE
|
||||
&%%(and (diary-cyclic 7 11 1 2004)) Wwww aa hhhh
|
||||
Status: TENTATIVE
|
||||
Class: PRIVATE ")
|
||||
Class: PRIVATE")
|
||||
|
||||
;; 2004-09-09 pg
|
||||
(icalendar-testsuite--test-export
|
||||
|
@ -1555,13 +1606,12 @@ LOCATION:nowhere
|
|||
ORGANIZER:ulf
|
||||
")
|
||||
|
||||
;; FIXME: does not work
|
||||
;; (icalendar-testsuite--test-cycle
|
||||
;; "DTSTART;VALUE=DATE:19190909
|
||||
;;DTEND;VALUE=DATE:19190910
|
||||
;;RRULE:FREQ=YEARLY;INTERVAL=1;BYMONTH=09;BYMONTHDAY=09
|
||||
;;SUMMARY:and diary-anniversary
|
||||
;;")
|
||||
(icalendar-testsuite--test-cycle
|
||||
"DTSTART;VALUE=DATE:19190909
|
||||
DTEND;VALUE=DATE:19190910
|
||||
RRULE:FREQ=YEARLY;INTERVAL=1;BYMONTH=09;BYMONTHDAY=09
|
||||
SUMMARY:and diary-anniversary
|
||||
")
|
||||
)
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue