[gnus git] branch master updated: m0-7-245-g9d32270 =1= gnus-icalendar.el (gnus-icalendar-event--decode-datefield) (gnus-icalendar-event-from-ical): Fix timezone handling in gnus-icalendar export to org.

Adam Sj??gren <[email protected]>
Newsgroups gmane.emacs.gnus.cvs
Message-ID <[email protected]>
       via  9d32270f9a6036a0a694150e8c00201dc20b3519 (commit)
      from  6cbfdfbd76b95a7cf37ab152ed270cd5568c3d58 (commit)


- Log -----------------------------------------------------------------
commit 9d32270f9a6036a0a694150e8c00201dc20b3519
Author: Jan Tatarik <[email protected]>
Date:   Tue Nov 12 22:13:47 2013 +0100

    gnus-icalendar.el (gnus-icalendar-event--decode-datefield)
    (gnus-icalendar-event-from-ical): Fix timezone handling in
    gnus-icalendar export to org.

diff --git a/lisp/gnus-icalendar.el b/lisp/gnus-icalendar.el
index 969c868..f3b6238 100644
--- a/lisp/gnus-icalendar.el
+++ b/lisp/gnus-icalendar.el
@@ -69,14 +69,14 @@
              :accessor gnus-icalendar-event:location
              :initform ""
              :type (or null string))
-   (start :initarg :start
-          :accessor gnus-icalendar-event:start
+   (start-time :initarg :start-time
+          :accessor gnus-icalendar-event:start-time
           :initform ""
-          :type (or null string))
-   (end :initarg :end
-        :accessor gnus-icalendar-event:end
+          :type (or null t))
+   (end-time :initarg :end-time
+        :accessor gnus-icalendar-event:end-time
         :initform ""
-        :type (or null string))
+        :type (or null t))
    (recur :initarg :recur
           :accessor gnus-icalendar-event:recur
           :initform ""
@@ -125,27 +125,15 @@
     (or (match-string 1 rrule)
         default-interval)))
 
-(defmethod gnus-icalendar-event:start-time ((event gnus-icalendar-event))
-  "Return time value of the EVENT start date."
-  (date-to-time (gnus-icalendar-event:start event)))
-
-(defmethod gnus-icalendar-event:end-time ((event gnus-icalendar-event))
-  "Return time value of the EVENT end date."
-  (date-to-time (gnus-icalendar-event:end event)))
-
+(defmethod gnus-icalendar-event:start ((event gnus-icalendar-event))
+  (format-time-string "%Y-%m-%d %H:%M" (gnus-icalendar-event:start-time event)))
 
-(defun gnus-icalendar-event--decode-datefield (ical field zone-map &optional date-style)
-  (let* ((calendar-date-style (or date-style 'european))
-         (date (icalendar--get-event-property ical field))
-         (date-zone (icalendar--find-time-zone
-                     (icalendar--get-event-property-attributes
-                      ical field)
-                     zone-map))
-         (date-decoded (icalendar--decode-isodatetime date nil date-zone)))
+(defun gnus-icalendar-event--decode-datefield (ical field)
+  (let* ((date (icalendar--get-event-property ical field))
+         (date-props (icalendar--get-event-property-attributes ical field))
+         (tz (plist-get date-props 'TZID)))
 
-    (concat (icalendar--datetime-to-iso-date date-decoded "-")
-            " "
-            (icalendar--datetime-to-colontime date-decoded))))
+    (date-to-time (timezone-make-date-arpa-standard date nil tz))))
 
 (defun gnus-icalendar-event--find-attendee (ical name-or-email)
   (let* ((event (car (icalendar--all-events ical)))
@@ -166,7 +154,6 @@
 
 (defun gnus-icalendar-event-from-ical (ical &optional attendee-name-or-email)
   (let* ((event (car (icalendar--all-events ical)))
-         (zone-map (icalendar--convert-all-timezones ical))
          (organizer (replace-regexp-in-string
                      "^.*MAILTO:" ""
                      (or (icalendar--get-event-property event 'ORGANIZER) "")))
@@ -180,8 +167,8 @@
                      (gnus-icalendar-event--find-attendee ical attendee-name-or-email)))
          (args (list :method method
                      :organizer organizer
-                     :start (gnus-icalendar-event--decode-datefield event 'DTSTART zone-map)
-                     :end (gnus-icalendar-event--decode-datefield event 'DTEND zone-map)
+                     :start-time (gnus-icalendar-event--decode-datefield event 'DTSTART)
+                     :end-time (gnus-icalendar-event--decode-datefield event 'DTEND)
                      :rsvp (string= (plist-get (cadr attendee) 'RSVP)
                                     "TRUE")))
          (event-class (cond
@@ -363,10 +350,10 @@ Return nil for non-recurring EVENT."
   "Build `org-mode' timestamp from EVENT start/end dates and recurrence info."
   (let* ((start (gnus-icalendar-event:start-time event))
          (end (gnus-icalendar-event:end-time event))
-         (start-date (format-time-string "%Y-%m-%d %a" start t))
-         (start-time (format-time-string "%H:%M" start t))
-         (end-date (format-time-string "%Y-%m-%d %a" end t))
-         (end-time (format-time-string "%H:%M" end t))
+         (start-date (format-time-string "%Y-%m-%d %a" start))
+         (start-time (format-time-string "%H:%M" start))
+         (end-date (format-time-string "%Y-%m-%d %a" end))
+         (end-time (format-time-string "%H:%M" end))
          (org-repeat (gnus-icalendar-event:org-repeat event))
          (repeat (if org-repeat (concat " " org-repeat) "")))
 

-----------------------------------------------------------------------
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we listed those
revisions in full, above.

Summary of changes:
 lisp/gnus-icalendar.el |   51 ++++++++++++++++++------------------------------
 1 file changed, 19 insertions(+), 32 deletions(-)

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Gnus Project".

The branch, master has been updated


hooks/post-receive
-- 
Gnus Project
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.