(defvar *app* (make-instance 'ningle:app)) (defparameter *page-hash* (make-hash-table :test #'equal)) (clack:clackup *app*) ;; (setf (ningle:route *app* "/hello/:name") ;; #'(lambda (params) ;; (format nil "Hello, ~A" (cdr (assoc :name params))) ;; (format nil "~A" params))) (defun add-page (name func) (setf (gethash name *page-hash*) (funcall func))) (defun get-page (name) (gethash name *page-hash*)) (defun file-to-string (file) (let ((fi "")) (with-open-file (s file :if-does-not-exist :error) (loop :for line := (read-line s nil) :while line :do (setf fi (concatenate 'string fi (format nil "~A~%" line))))) fi)) (defun reload-page (key func) (add-page key func)) (defun reload-main-html () (reload-page :main-page (lambda () (file-to-string "./html/main.html")))) (defun reload-main-css () (reload-page :main-css (lambda () (file-to-string "./css/main.css")))) (defun reload-main () (reload-main-html) (reload-main-css)) (setf (ningle:route *app* "/ere" :method :GET) (lambda (params) (declare (ignore params)) (asdf:system-relative-pathname :whereshouldwemove #P"/html/main.html"))) (setf (ningle:route *app* "/" :method :GET) (lambda (params) (declare (ignore params)) (reload-main) (get-page :main-page))) (setf (ningle:route *app* "/css/main.css" :method :GET) (lambda (params) (declare (ignore params)) (reload-main-css) (get-page :main-page-css)))