Mercurial > emacs
changeset 78530:1532be3afc8a
(combine-and-quote-strings): Renamed from strings->string.
(split-string-and-unquote): Renamed from string->strings.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Sun, 12 Aug 2007 17:59:40 +0000 |
parents | 83c69e5ccfd2 |
children | c2b062cb5942 |
files | lisp/subr.el |
diffstat | 1 files changed, 9 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/subr.el Sun Aug 12 17:57:34 2007 +0000 +++ b/lisp/subr.el Sun Aug 12 17:59:40 2007 +0000 @@ -2760,11 +2760,10 @@ list))) (nreverse list))) -;; (string->strings (strings->string X)) == X -(defun strings->string (strings &optional separator) +(defun combine-and-quote-strings (strings &optional separator) "Concatenate the STRINGS, adding the SEPARATOR (default \" \"). This tries to quote the strings to avoid ambiguity such that - (string->strings (strings->string strs)) == strs + (split-string-and-unquote (combine-and-quote-strings strs)) == strs Only some SEPARATORs will work properly." (let ((sep (or separator " "))) (mapconcat @@ -2774,20 +2773,20 @@ str)) strings sep))) -;; (string->strings (strings->string X)) == X -(defun string->strings (string &optional separator) +(defun split-string-and-unquote (string &optional separator) "Split the STRING into a list of strings. -It understands elisp style quoting within STRING such that - (string->strings (strings->string strs)) == strs +It understands Emacs Lisp quoting within STRING, such that + (split-string-and-unquote (combine-and-quote-strings strs)) == strs The SEPARATOR regexp defaults to \"\\s-+\"." (let ((sep (or separator "\\s-+")) (i (string-match "[\"]" string))) - (if (null i) (split-string string sep t) ; no quoting: easy + (if (null i) + (split-string string sep t) ; no quoting: easy (append (unless (eq i 0) (split-string (substring string 0 i) sep t)) (let ((rfs (read-from-string string i))) (cons (car rfs) - (string->strings (substring string (cdr rfs)) - sep))))))) + (split-string-and-unquote (substring string (cdr rfs)) + sep))))))) ;;;; Replacement in strings.