0
0
Fork 1
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:
Ivanov Dmitry 2010-08-10 09:22:24 -06:00 committed by Eric Schulte
parent a978d99a6e
commit b36cf7a437

View file

@ -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))