;; AllegroCL 8-bit strings don't fail on reading #\no-break_space,
;; but can't represent such a character
;; CMUCL errors when trying to read #\no-break_space
- #+lispworks #\no-break-space
+ #+(and lispworks unicode) #\no-break-space
#+(or (and sbcl sb-unicode) (and allegro ics) (and clisp i18n)
(and openmcl openmcl-unicode-strings))
#\no-break_space
(eval-when (:compile-toplevel :load-toplevel :execute)
(setq cl:*features* (delete :clsql-lowercase-reader cl:*features*)))
+(defun replace-all (string part replacement &key (test #'char=) stream)
+ "Returns a new string in which all the occurences of the part
+is replaced with replacement. [FROM http://cl-cookbook.sourceforge.net/strings.html#manip]"
+ (let ((out (or stream (make-string-output-stream))))
+ (loop with part-length = (length part)
+ for old-pos = 0 then (+ pos part-length)
+ for pos = (search part string
+ :start2 old-pos
+ :test test)
+ do (write-string string out
+ :start old-pos
+ :end (or pos (length string)))
+ when pos do (write-string replacement out)
+ while pos)
+ (unless stream
+ (get-output-stream-string out))))
+