1 ;;;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; Base: 10 -*-
2 ;;;; *************************************************************************
3 ;;;; FILE IDENTIFICATION
5 ;;;; Name: web-utils.lisp
6 ;;;; Purpose: Basic web utility functions
7 ;;;; Programmer: Kevin M. Rosenberg
8 ;;;; Date Started: Apr 2000
10 ;;;; $Id: web-utils.lisp,v 1.10 2003/06/06 21:59:30 kevin Exp $
12 ;;;; This file, part of KMRCL, is Copyright (c) 2002 by Kevin M. Rosenberg
14 ;;;; KMRCL users are granted the rights to distribute and use this software
15 ;;;; as governed by the terms of the Lisp Lesser GNU Public License
16 ;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL.
17 ;;;; *************************************************************************
22 ;;; HTML/XML constants
24 (defvar *standard-xml-header*
25 #.(format nil "<?xml version=\"1.0\" ?>~%<?xml-stylesheet type=\"text/css\" href=\"http://b9.com/umlsxml.css\" ?>~%~%"))
27 (defvar *standard-html-header* "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML//EN\">")
29 (defvar *standard-xhtml-header*
30 #.(format nil "<?xml version=\"1.0\" standalone=\"yes\"?>~%<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3c.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">"))
33 ;;; User agent functions
35 (defun user-agent-ie-p (agent)
36 "Takes a user-agent string and returns T for Internet Explorer."
37 (when (or (string-equal "Microsoft" (subseq agent 0 (length "Microsoft")))
38 (string-equal "Internet Explore" (subseq agent 0 (length "Internet Explore")))
39 (search "MSIE" agent))
44 (defvar *base-url* "")
45 (defun base-url! (url)
46 (setq *base-url* url))
48 (defun make-url (page-name &key (base-dir *base-url*) (format :html) (vars nil))
49 (let ((amp (case format
57 (let ((first-var (first vars)))
59 "?" (car first-var) "=" (cadr first-var)
62 (when (and (car var) (cadr var))
64 amp (car var) "=" (cadr var))))
68 (defun make-url-new (page-name &key (base-dir *base-url*) (format :html)
70 (let ((amp (ecase format
72 ((:xml :ie-xml) "&"))))
76 (let ((first-var (first vars)))
78 "?" (car first-var) "=" (cadr first-var)
81 (when (and (car var) (cadr var))
83 amp (car var) "=" (cadr var))))