fix conflicts
authorKevin Rosenberg <kevin@rosenberg.net>
Thu, 31 Jan 2008 01:54:16 +0000 (18:54 -0700)
committerKevin Rosenberg <kevin@rosenberg.net>
Thu, 31 Jan 2008 01:54:16 +0000 (18:54 -0700)
ChangeLog
datetime.lisp
package.lisp
strings.lisp
tests.lisp

index 054ba371e2c338708aafc7aee1837e290e5d807e..e07a5f97f7e873e44de11e78a2d020f3bbc55019 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+28 Jan 2008  Kevin Rosenberg <kevin@rosenberg.net>
+       * Version 1.98
+       * {datetime,strings,tests}.lisp: Add remove-char-string
+
 18 Sep 2007  Kevin Rosenberg <kevin@rosenberg.net>
        * Version 1.97
        * datetime.lisp: Improve output format for date-string
index dd813c46f75cb7fc0bef7166d0fcc51ba5a1e6bb..30c815c9d01d5bf482e084c5c6ee6ed8b9c0dd7d 100644 (file)
@@ -40,7 +40,7 @@
   (multiple-value-bind (sec min hr dy mn yr) (decode-universal-time tm)
     (pretty-date yr mn dy hr min sec)))
 
-(defun date-string (ut)
+(defun date-string (&optional (ut (get-universal-time)))
   (if (typep ut 'integer)
       (multiple-value-bind (sec min hr day mon year dow daylight-p zone)
           (decode-universal-time ut)
index 8ab57abbce2de7992e6a64c3bd423ed38fc1eef3..14ca9d66dc7fcc8e7f20677a32c7c29dad9a27b5 100644 (file)
@@ -76,6 +76,7 @@
    #:string->list
    #:trim-non-alphanumeric
    #:binary-sequence-to-hex-string
+   #:remove-char-string
 
    ;; io.lisp
    #:indent-spaces
    #:set-signal-handler
    #:remove-signal-handler
    ))
-
-
-
index 1178b5d5426e24c727f804de200625d6d3e4ed02..9a9f42d8a354985df274ac5829ad0118b21e1eea 100644 (file)
@@ -44,7 +44,6 @@
             (setq in-word t))
         (setq in-word nil)))))
 
-;; From Larry Hunter with modifications
 (defun position-char (char string start max)
   (declare (optimize (speed 3) (safety 0) (space 0))
            (fixnum start max) (simple-string string))
@@ -567,6 +566,23 @@ for characters in a string"
       str)))
 
 
+(defun remove-char-string (char str)
+  (declare (character char)
+           (string str))
+  (do* ((len (length str))
+        (out (make-string len))
+        (pos 0 (1+ pos))
+        (opos 0))
+       ((= pos len) (subseq out 0 opos))
+    (declare (fixnum pos opos len)
+             (simple-string out))
+    (let ((c (char str pos)))
+      (declare (character c))
+      (when (char/= c char)
+        (setf (schar out opos) c)
+        (incf opos)))))
+
+
 (defun string-strip-ending (str endings)
   (if (stringp endings)
       (setq endings (list endings)))
index 4cbc915f430f61d6e8f4079c79672b1e769b748e..0b0daa2d4a709c92720a79a9234a1b3d2b8f6019 100644 (file)
 (deftest :sse.4 (string-strip-ending "abc" '("ab")) "abc")
 (deftest :sse.5 (string-strip-ending "abcd" '("a" "cd")) "ab")
 
+(deftest :rcs.1 (remove-char-string #\space "") "")
+(deftest :rcs.2 (remove-char-string #\space "a") "a")
+(deftest :rcs.3 (remove-char-string #\space "ab") "ab")
+(deftest :rcs.4 (remove-char-string #\space "a b") "ab")
+(deftest :rcs.5 (remove-char-string #\space " a b") "ab")
+(deftest :rcs.6 (remove-char-string #\space "a b ") "ab")
+(deftest :rcs.7 (remove-char-string #\space "a  b   c  ") "abc")
+(deftest :rcs.8 (remove-char-string #\space "a  b   c  d") "abcd")
+
 
 (defun test-color-conversion ()
   (dotimes (ih 11)