mirror of
https://git.savannah.gnu.org/git/emacs/org-mode.git
synced 2024-09-29 20:07:46 +00:00
org-collector: better comments and more robust conversion of string to elisp
* contrib/lisp/org-collector.el (org-read-prop): added a more detailed comment, changed 2 if stements to 1 cond to make the code more comprehensible, added (condition-case nil (read prop) (error prop)) instead of (read prop) so, if any error occurs during the conversion of prop to lisp expression - a string will be returned.
This commit is contained in:
parent
a978d99a6e
commit
b36cf7a437
|
@ -111,18 +111,31 @@ a column, or through the generation of an error.")
|
|||
|
||||
(defun org-read-prop (prop)
|
||||
"Convert the string property PROP to a number if appropriate.
|
||||
Otherwise if prop looks like a list (meaning it starts with a
|
||||
'(') then read it as lisp, otherwise return it unmodified as a
|
||||
string."
|
||||
If prop looks like a list (meaning it starts with a '(') then
|
||||
read it as lisp expression, otherwise return it unmodified as a
|
||||
string.
|
||||
|
||||
Results of calling:
|
||||
\(org-read-prop \"12\") -> 12
|
||||
\(org-read-prop \"(1 2 3)\") -> (1 2 3)
|
||||
\(org-read-prop \"+0\") -> 0
|
||||
\(org-read-prop \"aaa\") -> \"aaa\""
|
||||
(if (and (stringp prop) (not (equal prop "")))
|
||||
(let ((out (string-to-number prop)))
|
||||
(if (equal out 0)
|
||||
(if (or (equal "(" (substring prop 0 1)) (equal "'" (substring prop 0 1)))
|
||||
(cond
|
||||
((or
|
||||
(equal "(" (substring prop 0 1))
|
||||
(equal "'" (substring prop 0 1)))
|
||||
|
||||
(condition-case nil
|
||||
(read prop)
|
||||
(if (string-match "^\\(+0\\|-0\\|0\\)$" prop)
|
||||
0
|
||||
(progn (set-text-properties 0 (length prop) nil prop)
|
||||
prop)))
|
||||
(error prop)))
|
||||
((string-match "^\\(+0\\|-0\\|0\\)$" prop)
|
||||
0)
|
||||
(t
|
||||
(set-text-properties 0 (length prop) nil prop)
|
||||
prop))
|
||||
out))
|
||||
prop))
|
||||
|
||||
|
|
Loading…
Reference in a new issue