Fix FORMAT specifier X.
[jscl.git] / src / utils.lisp
index 430b6a7..6ab351d 100644 (file)
 ;; You should have received a copy of the GNU General Public License
 ;; along with JSCL.  If not, see <http://www.gnu.org/licenses/>.
 
-(defvar *newline* "
-")
+(/debug "loading utils.lisp!")
 
 (defmacro concatf (variable &body form)
   `(setq ,variable (concat ,variable (progn ,@form))))
 
 ;;; This couple of helper functions will be defined in both Common
-;;; Lisp and in Ecmalisp.
+;;; Lisp and in JSCL
 (defun ensure-list (x)
   (if (listp x)
       x
 (defun float-to-string (x)
   #+jscl (float-to-string x)
   #-jscl (format nil "~f" x))
+
+(defun satisfies-test-p (x y &key key (test #'eql) testp (test-not #'eql) test-not-p)
+  (when (and testp test-not-p)
+    (error "Both test and test-not are set"))
+  (let ((key-val (if key (funcall key y) y))
+        (fn (if test-not-p (complement test-not) test)))
+    (funcall fn x key-val)))
+
+
+(defun interleave (list element &optional after-last-p)
+  (unless (null list)
+    (with-collect
+      (collect (car list))
+      (dolist (x (cdr list))
+        (collect element)
+        (collect x))
+      (when after-last-p
+        (collect element)))))