Mercurial > core / lisp/lib/dat/html/const.lisp
changeset 698: |
96958d3eb5b0 |
parent: |
a3b65a8138ac
|
author: |
Richard Westhaver <ellis@rwest.io> |
date: |
Fri, 04 Oct 2024 22:04:59 -0400 |
permissions: |
-rw-r--r-- |
description: |
fixes |
4 (defglobal +namespaces+ 5 '(("html" . "http://www.w3.org/1999/xhtml") 6 ("mathml" ."http://www.w3.org/1998/Math/MathML") 7 ("svg" . "http://www.w3.org/2000/svg") 8 ("xlink" . "http://www.w3.org/1999/xlink") 9 ("xml" . "http://www.w3.org/XML/1998/namespace") 10 ("xmlns" . "http://www.w3.org/2000/xmlns/"))) 13 (defun find-namespace (prefix) 14 (cdr (assoc prefix +namespaces+ :test #'string=)))) 16 (defun find-prefix (namespace) 17 (car (find namespace +namespaces+ :test #'string= :key #'cdr))) 19 (defglobal +scoping-elements+ 20 `((,(find-namespace "html") . "applet") 21 (,(find-namespace "html") . "caption") 22 (,(find-namespace "html") . "html") 23 (,(find-namespace "html") . "marquee") 24 (,(find-namespace "html") . "object") 25 (,(find-namespace "html") . "table") 26 (,(find-namespace "html") . "td") 27 (,(find-namespace "html") . "th") 28 (,(find-namespace "mathml") . "mi") 29 (,(find-namespace "mathml") . "mo") 30 (,(find-namespace "mathml") . "mn") 31 (,(find-namespace "mathml") . "ms") 32 (,(find-namespace "mathml") . "mtext") 33 (,(find-namespace "mathml") . "annotation-xml") 34 (,(find-namespace "svg") . "foreignObject") 35 (,(find-namespace "svg") . "desc") 36 (,(find-namespace "svg") . "title"))) 39 (defglobal +formatting-elements+ 40 `((,(find-namespace "html") . "a") 41 (,(find-namespace "html") . "b") 42 (,(find-namespace "html") . "big") 43 (,(find-namespace "html") . "code") 44 (,(find-namespace "html") . "em") 45 (,(find-namespace "html") . "font") 46 (,(find-namespace "html") . "i") 47 (,(find-namespace "html") . "nobr") 48 (,(find-namespace "html") . "s") 49 (,(find-namespace "html") . "small") 50 (,(find-namespace "html") . "strike") 51 (,(find-namespace "html") . "strong") 52 (,(find-namespace "html") . "tt") 53 (,(find-namespace "html") . "u"))) 55 (defglobal +special-elements+ 56 `((,(find-namespace "html") . "address") 57 (,(find-namespace "html") . "applet") 58 (,(find-namespace "html") . "area") 59 (,(find-namespace "html") . "article") 60 (,(find-namespace "html") . "aside") 61 (,(find-namespace "html") . "base") 62 (,(find-namespace "html") . "basefont") 63 (,(find-namespace "html") . "bgsound") 64 (,(find-namespace "html") . "blockquote") 65 (,(find-namespace "html") . "body") 66 (,(find-namespace "html") . "br") 67 (,(find-namespace "html") . "button") 68 (,(find-namespace "html") . "caption") 69 (,(find-namespace "html") . "center") 70 (,(find-namespace "html") . "col") 71 (,(find-namespace "html") . "colgroup") 72 (,(find-namespace "html") . "command") 73 (,(find-namespace "html") . "dd") 74 (,(find-namespace "html") . "details") 75 (,(find-namespace "html") . "dir") 76 (,(find-namespace "html") . "div") 77 (,(find-namespace "html") . "dl") 78 (,(find-namespace "html") . "dt") 79 (,(find-namespace "html") . "embed") 80 (,(find-namespace "html") . "fieldset") 81 (,(find-namespace "html") . "figure") 82 (,(find-namespace "html") . "footer") 83 (,(find-namespace "html") . "form") 84 (,(find-namespace "html") . "frame") 85 (,(find-namespace "html") . "frameset") 86 (,(find-namespace "html") . "h1") 87 (,(find-namespace "html") . "h2") 88 (,(find-namespace "html") . "h3") 89 (,(find-namespace "html") . "h4") 90 (,(find-namespace "html") . "h5") 91 (,(find-namespace "html") . "h6") 92 (,(find-namespace "html") . "head") 93 (,(find-namespace "html") . "header") 94 (,(find-namespace "html") . "hr") 95 (,(find-namespace "html") . "html") 96 (,(find-namespace "html") . "iframe") 97 ;; Note that image is commented out in the spec as "this isn't an 98 ;; element that can end up on the stack, so it doesn't matter," 99 (,(find-namespace "html") . "image") 100 (,(find-namespace "html") . "img") 101 (,(find-namespace "html") . "input") 102 (,(find-namespace "html") . "isindex") 103 (,(find-namespace "html") . "li") 104 (,(find-namespace "html") . "link") 105 (,(find-namespace "html") . "listing") 106 (,(find-namespace "html") . "marquee") 107 (,(find-namespace "html") . "menu") 108 (,(find-namespace "html") . "meta") 109 (,(find-namespace "html") . "nav") 110 (,(find-namespace "html") . "noembed") 111 (,(find-namespace "html") . "noframes") 112 (,(find-namespace "html") . "noscript") 113 (,(find-namespace "html") . "object") 114 (,(find-namespace "html") . "ol") 115 (,(find-namespace "html") . "p") 116 (,(find-namespace "html") . "param") 117 (,(find-namespace "html") . "plaintext") 118 (,(find-namespace "html") . "pre") 119 (,(find-namespace "html") . "script") 120 (,(find-namespace "html") . "section") 121 (,(find-namespace "html") . "select") 122 (,(find-namespace "html") . "style") 123 (,(find-namespace "html") . "table") 124 (,(find-namespace "html") . "tbody") 125 (,(find-namespace "html") . "td") 126 (,(find-namespace "html") . "textarea") 127 (,(find-namespace "html") . "tfoot") 128 (,(find-namespace "html") . "th") 129 (,(find-namespace "html") . "thead") 130 (,(find-namespace "html") . "title") 131 (,(find-namespace "html") . "tr") 132 (,(find-namespace "html") . "ul") 133 (,(find-namespace "html") . "wbr") 134 (,(find-namespace "html") . "xmp") 135 (,(find-namespace "svg") . "foreignObject"))) 137 (defglobal +html-integration-point-elements+ 138 `((,(find-namespace "mathml") . "annotation-xml") 139 (,(find-namespace "svg") . "foreignObject") 140 (,(find-namespace "svg") . "desc") 141 (,(find-namespace "svg") . "title"))) 143 (defglobal +mathml-text-integration-point-elements+ 144 `((,(find-namespace "mathml") . "mi") 145 (,(find-namespace "mathml") . "mo") 146 (,(find-namespace "mathml") . "mn") 147 (,(find-namespace "mathml") . "ms") 148 (,(find-namespace "mathml") . "mtext"))) 150 (defconstant +eof+ '+eof+) 152 (defglobal +token-types+ 162 (defglobal +tag-token-types+ 163 '(:start-tag :end-tag :empty-tag)) 165 (defglobal +space-characters+ 172 (defglobal +table-insert-mode-elements+ 179 (defglobal +ascii-lowercase+ "abcdefghijklmnopqrstuvwxyz") 180 (defglobal +ascii-uppercase+ "ABCDEFGHIJKLMNOPQRSTUVWXYZ") 181 (defglobal +ascii-letters+ "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ") 182 (defglobal +digits+ "0123456789") 183 (defglobal +hex-digits+ "0123456789abcdefABCDEF") 185 (defun ascii-letter-p (c) 187 (let ((code (char-code c))) 188 (or (<= #.(char-code #\a) code #.(char-code #\z)) 189 (<= #.(char-code #\A) code #.(char-code #\Z)))))) 191 (defun ascii-upper-2-lower (string) 192 (let ((out (copy-seq string))) 193 (dotimes (i (length string)) 194 (let ((p (position (char out i) +ascii-uppercase+))) 196 (setf (char out i) (char +ascii-lowercase+ p))))) 200 (defglobal +replacement-characters+ 238 (defglobal +cdata-elements+ 242 (defglobal +rcdata-elements+ 251 (defglobal +html-integration-point-elements+ 252 `((,(find-namespace "mathml") . "annotation-xml") 253 (,(find-namespace "svg") . "foreignObject") 254 (,(find-namespace "svg") . "desc") 255 (,(find-namespace "svg") . "title"))) 257 (defglobal +mathml-text-integration-point-elements+ 258 `((,(find-namespace "mathml") . "mi") 259 (,(find-namespace "mathml") . "mo") 260 (,(find-namespace "mathml") . "mn") 261 (,(find-namespace "mathml") . "ms") 262 (,(find-namespace "mathml") . "mtext"))) 264 (defun make-hash-lookup (replacements) 265 (let ((rhash (make-hash-table :test #'equalp))) 266 (loop for (from to) in replacements 267 do (setf (gethash from rhash) to)))) 270 (defglobal +quirks-mode-doctypes-regexp+ 271 (cl-ppcre:create-scanner 272 '(:sequence :start-anchor 274 "+//silmaril//dtd html pro v0r11 19970101//" 275 "-//advasoft ltd//dtd html 3.0 aswedit + extensions//" 276 "-//as//dtd html 3.0 aswedit + extensions//" 277 "-//ietf//dtd html 2.0 level 1//" 278 "-//ietf//dtd html 2.0 level 2//" 279 "-//ietf//dtd html 2.0 strict level 1//" 280 "-//ietf//dtd html 2.0 strict level 2//" 281 "-//ietf//dtd html 2.0 strict//" 282 "-//ietf//dtd html 2.0//" 283 "-//ietf//dtd html 2.1e//" 284 "-//ietf//dtd html 3.0//" 285 "-//ietf//dtd html 3.2 final//" 286 "-//ietf//dtd html 3.2//" 287 "-//ietf//dtd html 3//" 288 "-//ietf//dtd html level 0//" 289 "-//ietf//dtd html level 1//" 290 "-//ietf//dtd html level 2//" 291 "-//ietf//dtd html level 3//" 292 "-//ietf//dtd html strict level 0//" 293 "-//ietf//dtd html strict level 1//" 294 "-//ietf//dtd html strict level 2//" 295 "-//ietf//dtd html strict level 3//" 296 "-//ietf//dtd html strict//" 297 "-//ietf//dtd html//" 298 "-//metrius//dtd metrius presentational//" 299 "-//microsoft//dtd internet explorer 2.0 html strict//" 300 "-//microsoft//dtd internet explorer 2.0 html//" 301 "-//microsoft//dtd internet explorer 2.0 tables//" 302 "-//microsoft//dtd internet explorer 3.0 html strict//" 303 "-//microsoft//dtd internet explorer 3.0 html//" 304 "-//microsoft//dtd internet explorer 3.0 tables//" 305 "-//netscape comm. corp.//dtd html//" 306 "-//netscape comm. corp.//dtd strict html//" 307 "-//o'reilly and associates//dtd html 2.0//" 308 "-//o'reilly and associates//dtd html extended 1.0//" 309 "-//o'reilly and associates//dtd html extended relaxed 1.0//" 310 "-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//" 311 "-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//" 312 "-//spyglass//dtd html 2.0 extended//" 313 "-//sq//dtd html 2.0 hotmetal + extensions//" 314 "-//sun microsystems corp.//dtd hotjava html//" 315 "-//sun microsystems corp.//dtd hotjava strict html//" 316 "-//w3c//dtd html 3 1995-03-24//" 317 "-//w3c//dtd html 3.2 draft//" 318 "-//w3c//dtd html 3.2 final//" 319 "-//w3c//dtd html 3.2//" 320 "-//w3c//dtd html 3.2s draft//" 321 "-//w3c//dtd html 4.0 frameset//" 322 "-//w3c//dtd html 4.0 transitional//" 323 "-//w3c//dtd html experimental 19960712//" 324 "-//w3c//dtd html experimental 970421//" 325 "-//w3c//dtd w3 html//" 326 "-//w3o//dtd w3 html 3.0//" 327 "-//webtechs//dtd mozilla html 2.0//" 328 "-//webtechs//dtd mozilla html//")))) 330 (defglobal +heading-elements+