Function: org-timestamp-split-range
org-timestamp-split-range is a byte-compiled function defined in
org.el.gz.
Signature
(org-timestamp-split-range TIMESTAMP &optional END)
Documentation
Extract a TIMESTAMP object from a date or time range.
END, when non-nil, means extract the end of the range. Otherwise, extract its start.
Return a new timestamp object.
Source Code
;; Defined in /usr/src/emacs/lisp/org/org.el.gz
(defun org-timestamp-split-range (timestamp &optional end)
"Extract a TIMESTAMP object from a date or time range.
END, when non-nil, means extract the end of the range.
Otherwise, extract its start.
Return a new timestamp object."
(let ((type (org-element-property :type timestamp)))
(if (memq type '(active inactive diary)) timestamp
(let ((split-ts (org-element-copy timestamp)))
;; Set new type.
(org-element-put-property
split-ts :type (if (eq type 'active-range) 'active 'inactive))
(org-element-put-property split-ts :range-type nil)
;; Copy start properties over end properties if END is
;; non-nil. Otherwise, copy end properties over `start' ones.
(let ((p-alist '((:minute-start . :minute-end)
(:hour-start . :hour-end)
(:day-start . :day-end)
(:month-start . :month-end)
(:year-start . :year-end))))
(dolist (p-cell p-alist)
(org-element-put-property
split-ts
(funcall (if end #'car #'cdr) p-cell)
(org-element-property
(funcall (if end #'cdr #'car) p-cell) split-ts)))
;; Eventually refresh `:raw-value'.
(org-element-put-property split-ts :raw-value nil)
(org-element-put-property
split-ts :raw-value (org-element-interpret-data split-ts)))))))