X-Git-Url: http://git.kpe.io/?p=kmrcl.git;a=blobdiff_plain;f=web-utils.lisp;h=0f41c1275fec17e8b58ffcf9fc1ceff9afeaffd5;hp=4fe21b9ab7e99a5c7800e2e7b872c5ff15e0a0df;hb=14d0c045792f76bbc92f4d3304a608603d0b7524;hpb=30c2e8bd2c7043d845024395e19b3030d039eae2 diff --git a/web-utils.lisp b/web-utils.lisp index 4fe21b9..0f41c12 100644 --- a/web-utils.lisp +++ b/web-utils.lisp @@ -7,7 +7,7 @@ ;;;; Programmer: Kevin M. Rosenberg ;;;; Date Started: Apr 2000 ;;;; -;;;; $Id: web-utils.lisp,v 1.7 2002/10/16 23:34:33 kevin Exp $ +;;;; $Id: web-utils.lisp,v 1.9 2002/10/18 05:14:49 kevin Exp $ ;;;; ;;;; This file, part of KMRCL, is Copyright (c) 2002 by Kevin M. Rosenberg ;;;; @@ -30,22 +30,38 @@ (defvar *standard-xhtml-header* #.(format nil "~%")) - + +;;; User agent functions + +(defun user-agent-ie-p (agent) + "Takes a user-agent string and returns T for Internet Explorer." + (when (or (string-equal "Microsoft" (subseq agent 0 (length "Microsoft"))) + (string-equal "Internet Explore" (subseq agent 0 (length "Internet Explore"))) + (search "MSIE" agent)) + t)) + ;;; URL Functions (defvar *base-url* "") (defun base-url! (url) (setq *base-url* url)) -(defun make-url (page-name &key (base-dir *base-url*) (vars nil)) - (concatenate 'string base-dir page-name - (if vars - (string-trim-last-character - (concatenate 'string "?" - (mapcar-append-string - #'(lambda (var) - (when (and (car var) (cadr var)) - (concatenate 'string - (car var) "=" (cadr var) "&"))) - vars))) - ""))) +(defun make-url (page-name &key (base-dir *base-url*) (format :html) (vars nil)) + (let ((amp (case format + (:html + "&") + ((:xml :ie-xml) + "&")))) + (concatenate 'string + base-dir page-name + (if vars + (let ((first-var (first vars))) + (concatenate 'string + "?" (car first-var) "=" (cadr first-var) + (mapcar-append-string + #'(lambda (var) + (when (and (car var) (cadr var)) + (concatenate 'string + amp (car var) "=" (cadr var)))) + (rest vars)))) + ""))))