Commit 06f1d77b authored by hayeah via gmail com's avatar hayeah via gmail com

User extensible html tag.

Allows arbitrary "attributes" to be placed inside the html tag template.

darcs-hash:8dd2ac0f4dfc846b2dd9896aa5a8c329d923cc53
parent 423dbd69
This diff is collapsed.
;;; Copyright (c) 2006 Howard Yeh
;; All rights reserved.
;;
;; Redistribution and use in source and binary forms, with or without
;; modification, are permitted provided that the following conditions are
;; met:
;;
;; - Redistributions of source code must retain the above copyright
;; notice, this list of conditions and the following disclaimer.
;;
;; - Redistributions in binary form must reproduce the above copyright
;; notice, this list of conditions and the following disclaimer in the
;; documentation and/or other materials provided with the distribution.
;;
;; - Neither the name of Howard Yeh, nor the names of its
;; contributors may be used to endorse or promote products derived
;; from this software without specific prior written permission.
;;
;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
;; "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
;; LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
;; A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
;; OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
;; SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
;; LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
;; DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
;; THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
;; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
;; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
;; fmt should have a variant that suppresses printing nil.
;; ;; fmt* this is to facilitate the use of control structure within fmt* directly
......@@ -49,64 +19,84 @@
(eval-when (:compile-toplevel :load-toplevel :execute)
(cl-interpol:enable-interpol-syntax)
;;; rkr lambda-list
(defun parse/rkr/fnlist (args)
(destructuring-bind (required keys other-keys body)
(split-by-separators args `(&key &other-keys
,(fn (arg) (member arg '(&body &rest)))))
(list required
(mapcar #'mklst (cdr keys))
(cdr other-keys)
(cdr body))))
(defun parse/rkr/fnlist (args)
"Parse a specialized lambda list that has required args, key args, then rest args. No optional args.
(<required-arg>* &key <directive>* &rest <arg>) => (values (<required-arg>*) (<directive>*) <arg>)"
(loop for args1 on args
for arg = (car args1)
until (or (eql arg '&key) (eql arg '&rest)) collect arg into required
finally (return (loop for args2 on args1
for arg = (car args2)
until (eql arg '&rest) collect (mklst (car args2)) into directives
finally (return (values required (cdr directives)
(if (> (length args2) 2)
(error "more than 1 args after &rest ~S" args)
(cadr args2))))))))
(defun parse/rkr/args (arg-list required-args valid-keys)
"Parse arg-list of the form (<required-arg>* <key-arg>* <rest-arg>*)."
(defun parse/rkr/args (arg-list required-args valid-keys &key (other-keys? nil))
(flet ((valid-key? (key) (member-if (fn (key2) (equal (symbol-name key2) (symbol-name key)))
valid-keys)))
valid-keys)))
(let* ((args-length (length required-args))
(required (subseq arg-list 0 args-length))
(keys/rest-args (subseq arg-list args-length))) ;; even number of key pairs plus bunch of &rest args
(keys/rest-args (subseq arg-list args-length)))
(if (keywordp (car keys/rest-args)) ;; If there's any keyword argument
(loop for (key arg . args) = keys/rest-args then args
append (if (not (valid-key? key))
(error "Invalid key ~S in rkr lambda-list ~S" key arg-list)
(list key arg)) into keys
while (keywordp (car args)) ;; Last arg is the &rest argument
finally (return (values required keys args)))
(values required nil keys/rest-args)))))
(loop for (key arg . rest) on keys/rest-args by #'cddr
while (keywordp key)
if (valid-key? key) append (list key arg) into keys
else if other-keys? append (list key arg) into other-keys
else do (error "Invalid key ~S in rkr lambda-list ~S" key arg-list) end
while (keywordp (car rest))
finally (return (list required keys other-keys rest)))
(list required nil nil keys/rest-args)))))
;; (parse/rkr/args '(1 2 4 5 6 7)
;; '(arg1 arg2)
;; '(:a :b))
;; ((1 2) nil nil (4 5 6 7))
;; (parse/rkr/args '(1 2 :a 3 :b 4 5 6 7)
;; '(arg1 arg2)
;; '(:a :b))
;; ((1 2) (:a 3 :b 4) nil (5 6 7))
;; (parse/rkr/args '(1 2 :a 3 :b 4 :c 5 6 7)
;; '(arg1 arg2)
;; '(:a :b))
;; ;; error
;; (parse/rkr/args '(1 2 :a 3 :e 6 :b 4 :c 5 6 7)
;; '(arg1 arg2)
;; '(:a :b)
;; :other-keys? t)
;; ((1 2) (:a 3 :b 4) (:e 6 :c 5) (6 7))
;;
;; (parse/rkr/args '(1 :as-nil a c d e f)
;; '(ARG) '(AS-NIL MINCOL COLINC MINPAD PADCHAR PAD-LEFT))
(defun build/rkr/fnlist (required-args key-args rest)
(defun build/rkr/fnlist (required-args key-args other-keys rest)
`(,@required-args
,@(when (or rest key-args) '(&key)) ;; include '&key' only if there are any key-args (possibly with rest-arg)
,@(if rest (cons rest key-args) key-args)))
,@(when (or rest other-keys key-args) '(&key)) ;; passes in rest and other-keys as key args.
,@rest
,@other-keys
,@key-args))
;; Someday support the extended lambda list. (Destructuring args)
(defmacro def/rkr/fn-type (fn-type name fnlist &body body)
(let* ((fn (mvbind (required-args key-args rest) (parse/rkr/fnlist fnlist)
`(fn (&rest arg-list)
(flet ((bind-args ,(build/rkr/fnlist required-args key-args rest) ,@body))
(mvbind (required keys rest) (parse/rkr/args arg-list ',required-args ',(mapcar #'car key-args))
(let ((keys (if rest ;; sneak in the rest-arg as if it is a key arg
(append (list ,(intern (symbol-name rest) :keyword) rest) keys)
keys)))
(apply #'bind-args (append required keys))))))))
(let* ((fn (dbind (required-args key-args other-keys rest) (parse/rkr/fnlist fnlist)
`(fn (&rest arg-list)
(flet ((bind-args ,(build/rkr/fnlist required-args key-args other-keys rest) ,@body))
(dbind (required keys other-keys rest)
(parse/rkr/args arg-list ',required-args ',(mapcar #'car key-args)
:other-keys? ',other-keys)
(let ((keys (append (when rest (list ,(^keyword (car rest)) rest))
(when other-keys (list ,(^keyword (car other-keys)) other-keys))
keys)))
;; sneaks in rest and other-keys as if they are key args
(apply #'bind-args (append required keys))))))))
(fn (if (eql fn-type :defmacro)
;; get rid of macro-name for macro expansion, for now.
;; gets rid of macro-name for macro expansion, for now.
;; ;; TODO deal with &environment and &whole
`(fn (&rest arg-list) (apply ,fn (cdar arg-list)))
fn)))
......@@ -115,6 +105,7 @@
(:defun `(progn (-> (symbol-function ',name) ,fn) ',name))
(:fn `,fn))))
(defmacro def/rkr/macro (name fnlist &body body)
`(def/rkr/fn-type :defmacro ,name ,fnlist ,@body))
......@@ -125,6 +116,15 @@
`(def/rkr/fn-type :fn nil ,fnlist ,@body))
;; (funcall (rkr/fn (a b &key c d &rest rest) (list a b c d rest)) 1 2 :d 3 4 5)
;; (1 2 nil 3 (4 5))
;; (funcall (rkr/fn (a b &key c d &other-keys e &rest rest) (list a b c d e rest)) 1 2 :d 4 7 8)
;; (1 2 nil 4 nil (7 8))
;; (funcall (rkr/fn (a b &key c d &other-keys e &rest rest) (list a b c d e rest)) 1 2 :d 4 :e 5 :f 6 7 8)
;; (1 2 nil 4 (:e 5 :f 6) (7 8))
;;
;; (def/rkr/fun foo (a b &key c d &rest rest) (list a b c d rest))
;; (foo 1 2 :d 3 4 5)
......@@ -374,3 +374,33 @@
;;; Copyright (c) 2006 Howard Yeh
;; All rights reserved.
;;
;; Redistribution and use in source and binary forms, with or without
;; modification, are permitted provided that the following conditions are
;; met:
;;
;; - Redistributions of source code must retain the above copyright
;; notice, this list of conditions and the following disclaimer.
;;
;; - Redistributions in binary form must reproduce the above copyright
;; notice, this list of conditions and the following disclaimer in the
;; documentation and/or other materials provided with the distribution.
;;
;; - Neither the name of Howard Yeh, nor the names of its
;; contributors may be used to endorse or promote products derived
;; from this software without specific prior written permission.
;;
;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
;; "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
;; LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
;; A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
;; OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
;; SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
;; LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
;; DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
;; THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
;; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
;; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
......@@ -80,12 +80,14 @@
(defurlmap bar
("" :map qux))
(defurlmap qux
;; signals an error because qux refering to foo causes a circular definition.
("" :map foo))
(defurlmap foo2
;; signals an error because foo3 refers to undefined map
("" :map foo3))
(test attach-urlmap
(test urlmap-definitional-errors
(signals wisp-circular-nested-urlmap
(attach-urlmap "/" 'foo))
(signals wisp-undefined-nested-urlmap
......@@ -155,12 +157,21 @@
(defurlmap wisp2
("foo/:arg1/:arg2" :handler (fn (a b) (list 'wisp2 a b)))
("" :map wisp3)
)
(defurlmap wisp3
; this should not shadow wisp2
("foo/:arg1/:arg2" :handler (fn (a b) (list 'wisp3 a b)))
("foo2/:arg1/:arg2" :handler (fn (a b) (list 'wisp3 a b)))
)
(attach-urlmap "/wisp" 'wisp)
;; (get-effective-urls 'wisp)
;; (get-effective-urls 'wisp)
(test match-url-dispatch-for-url
(signals wisp-no-dispatch-for-url
......@@ -188,11 +199,22 @@
(is (equal
(^string (match-url-dispatch "wisp2/foo/abc/def" (get-urlmap 'wisp)))
(^string '(wisp2 "abc" "def"))
))
(is (equal
(^string (match-url-dispatch "wisp2/foo/abc/def" (get-urlmap 'wisp)))
(^string '(wisp2 "abc" "def"))
))
(is (equal
(^string (match-url-dispatch "wisp2/foo/abc/def" (get-urlmap 'wisp)))
(^string '(wisp2 "abc" "def"))
))
(is (equal
(^string (match-url-dispatch "wisp2/foo2/abc/def" (get-urlmap 'wisp)))
(^string '(wisp3 "abc" "def"))
))
)
(run! 'urlmap)
;; (defmethod foo (a b)
......
;;; Copyright (c) 2006 Howard Yeh
;; All rights reserved.
;;
;; Redistribution and use in source and binary forms, with or without
;; modification, are permitted provided that the following conditions are
;; met:
;;
;; - Redistributions of source code must retain the above copyright
;; notice, this list of conditions and the following disclaimer.
;;
;; - Redistributions in binary form must reproduce the above copyright
;; notice, this list of conditions and the following disclaimer in the
;; documentation and/or other materials provided with the distribution.
;;
;; - Neither the name of Howard Yeh, nor the names of its
;; contributors may be used to endorse or promote products derived
;; from this software without specific prior written permission.
;;
;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
;; "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
;; LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
;; A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
;; OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
;; SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
;; LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
;; DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
;; THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
;; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
;; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
(defpackage :wisp-util (:use :cl :cl-ppcre :cl-interpol :kmrcl) ; :it.bese.fiveam)
(:export
......@@ -51,6 +22,8 @@
;;anaphoric macros
:self
:awhen
:aif
:afn
:split-if
......@@ -60,13 +33,18 @@
:$b
:$m
:$a
:fmt))
:fmt
;;kmrcl
:string-invert
))
(defpackage :wisp-mvc
(:use :cl :wisp-util
:com.gigamonkeys.foo
:elephant
:ele-bdb
:net.aserve
:kmrcl
:mop
......@@ -92,3 +70,34 @@
(shadow 'show :wisp-mvc)
(shadow 'show-variables :wisp-mvc)
(shadow 'show-functions :wisp-mvc)
;;; Copyright (c) 2006 Howard Yeh
;; All rights reserved.
;;
;; Redistribution and use in source and binary forms, with or without
;; modification, are permitted provided that the following conditions are
;; met:
;;
;; - Redistributions of source code must retain the above copyright
;; notice, this list of conditions and the following disclaimer.
;;
;; - Redistributions in binary form must reproduce the above copyright
;; notice, this list of conditions and the following disclaimer in the
;; documentation and/or other materials provided with the distribution.
;;
;; - Neither the name of Howard Yeh, nor the names of its
;; contributors may be used to endorse or promote products derived
;; from this software without specific prior written permission.
;;
;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
;; "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
;; LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
;; A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
;; OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
;; SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
;; LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
;; DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
;; THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
;; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
;; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
;; TODO watchout for recursive map definition
;; THINK What does it mean for a handler to have a "" path?
(in-package :wisp-mvc)
......@@ -50,7 +50,9 @@
(defmethod initialize-instance :after ((url-spec url-nested-map) &key)
(with-slots (url url-regex) url-spec
(setf url-regex (create-scanner (strcat url "/")))))
(setf url-regex (create-scanner (if (equal url "")
url
(strcat url "/"))))))
(defmethod print-object ((urlmap urlmap) s)
......@@ -255,8 +257,8 @@
(awhen (with-slots (url-regex nested-map-name) map
(match-url-dispatch (=~ url-regex request-url $a) (get-urlmap nested-map-name) :nested? t))
(return it))
;; Final recursive match will not supress error.
;; Unless it's already within a recursive match.
;; Final recursive match (the rightmost branch of the recursion tree) will not supress error.
;; Unless it's already within a recursive match.
finally
(return (with-slots (url-regex nested-map-name) map
(match-url-dispatch (=~ url-regex request-url $a) (get-urlmap nested-map-name) :nested? nested?)))))
......
;;; Copyright (c) 2006 Howard Yeh
;; All rights reserved.
;;
;; Redistribution and use in source and binary forms, with or without
;; modification, are permitted provided that the following conditions are
;; met:
;;
;; - Redistributions of source code must retain the above copyright
;; notice, this list of conditions and the following disclaimer.
;;
;; - Redistributions in binary form must reproduce the above copyright
;; notice, this list of conditions and the following disclaimer in the
;; documentation and/or other materials provided with the distribution.
;;
;; - Neither the name of Howard Yeh, nor the names of its
;; contributors may be used to endorse or promote products derived
;; from this software without specific prior written permission.
;;
;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
;; "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
;; LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
;; A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
;; OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
;; SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
;; LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
;; DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
;; THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
;; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
;; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
(in-package :wisp-mvc)
......@@ -90,7 +60,8 @@
,@qualifiers
,(append required-args other-args)
(html ,@body))))))
)
) ;; eval-when
(defun find-view (name)
(gethash (symbol-name (symcat 'view- name)) *defined-views*))
......@@ -119,9 +90,7 @@
(html (:th slot-name))))
(:tr
(dolist (slot-name slot-names)
(html (:td (if (slot-boundp obj slot-name)
;; gay. Has to use :print, or else value is discarded.
;; ;; Took a long time to squash this bug. Duh.
(html (:td (if (slot-boundp obj slot-name)
(html (:i (:print (slot-value obj slot-name))))
nil)))))))))
......@@ -129,3 +98,38 @@
;;; Copyright (c) 2006 Howard Yeh
;; All rights reserved.
;;
;; Redistribution and use in source and binary forms, with or without
;; modification, are permitted provided that the following conditions are
;; met:
;;
;; - Redistributions of source code must retain the above copyright
;; notice, this list of conditions and the following disclaimer.
;;
;; - Redistributions in binary form must reproduce the above copyright
;; notice, this list of conditions and the following disclaimer in the
;; documentation and/or other materials provided with the distribution.
;;
;; - Neither the name of Howard Yeh, nor the names of its
;; contributors may be used to endorse or promote products derived
;; from this software without specific prior written permission.
;;
;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
;; "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
;; LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
;; A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
;; OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
;; SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
;; LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
;; DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
;; THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
;; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
;; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
;;; Copyright (c) 2006 Howard Yeh
;; All rights reserved.
;;
;; Redistribution and use in source and binary forms, with or without
;; modification, are permitted provided that the following conditions are
;; met:
;;
;; - Redistributions of source code must retain the above copyright
;; notice, this list of conditions and the following disclaimer.
;;
;; - Redistributions in binary form must reproduce the above copyright
;; notice, this list of conditions and the following disclaimer in the
;; documentation and/or other materials provided with the distribution.
;;
;; - Neither the name of Howard Yeh, nor the names of its
;; contributors may be used to endorse or promote products derived
;; from this software without specific prior written permission.
;;
;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
;; "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
;; LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
;; A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
;; OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
;; SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
;; LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
;; DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
;; THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
;; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
;; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
(defpackage wispy-lisp-system
(:use :cl :asdf))
......@@ -41,12 +12,14 @@
(asdf:operate 'asdf:load-op 'cl-interpol)
(asdf:operate 'asdf:load-op 'cl-ppcre)
(cl-interpol::enable-interpol-syntax)
(asdf:operate 'asdf:load-op 'arnesi)
(asdf:operate 'asdf:load-op 'unification)
(asdf:operate 'asdf:load-op 'fiveam)
(asdf:operate 'asdf:load-op 'unification)
(unless *print-right-margin* (setf *print-right-margin* 70)))
)
(defsystem :wispylisp
......@@ -60,5 +33,36 @@
(:file "condition")
(:file "model")
(:file "view")
(:file "control"))
:serial t)
\ No newline at end of file
(:file "control")
(:file "urlmap"))
:serial t)
;;; Copyright (c) 2006 Howard Yeh
;; All rights reserved.
;;
;; Redistribution and use in source and binary forms, with or without
;; modification, are permitted provided that the following conditions are
;; met:
;;
;; - Redistributions of source code must retain the above copyright
;; notice, this list of conditions and the following disclaimer.
;;
;; - Redistributions in binary form must reproduce the above copyright
;; notice, this list of conditions and the following disclaimer in the
;; documentation and/or other materials provided with the distribution.
;;
;; - Neither the name of Howard Yeh, nor the names of its
;; contributors may be used to endorse or promote products derived
;; from this software without specific prior written permission.
;;
;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
;; "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
;; LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
;; A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
;; OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
;; SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
;; LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
;; DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
;; THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
;; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
;; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment