The spinneret Reference Manual

Table of Contents

Next: , Previous: , Up: (dir)   [Contents][Index]

The spinneret Reference Manual

This is the spinneret Reference Manual, version 2.0, generated automatically by Declt version 2.3 "Robert April" on Tue Feb 20 09:22:59 2018 GMT+0.


Next: , Previous: , Up: Top   [Contents][Index]

1 Introduction

Spinneret

In the crowded space of Common Lisp HTML generators, Spinneret occupies the following coordinates:

HTML generation with Spinneret looks like this:

 (in-package #:spinneret)

 (defparameter *shopping-list*
   '("Atmospheric ponds"
     "Electric gumption socks"
     "Mrs. Leland's embyronic television combustion"
     "Savage gymnatic aggressors"
     "Pharmaceutical pianos"
     "Intravenous retribution champions"))

 (defparameter *user-name* "John Q. Lisper")

 (defparameter *last-login* "12th Never")

 (defmacro with-page ((&key title) &body body)
   `(with-html
      (:doctype)
      (:html
        (:head
         (:title ,title))
        (:body ,@body))))

 (defun shopping-list ()
   (with-page (:title "Home page")
     (:header
      (:h1 "Home page"))
     (:section
      ("~A, here is *your* shopping list: " *user-name*)
      (:ol (dolist (item *shopping-list*)
             (:li (1+ (random 10)) item))))
     (:footer ("Last login: ~A" *last-login*))))

Which produces:

 <!DOCTYPE html>
 <html lang=en>
  <head>
   <meta charset=UTF-8>
   <title>Home page</title>
  </head>
  <body>
   <header>
    <h1>Home page</h1>
   </header>
   <section>
    John Q. Lisper, here is <em>your</em> shopping list:
    <ol>
     <li>10 Atmospheric ponds
     <li>6 Electric gumption socks
     <li>4 Mrs. Leland's embyronic television combustion
     <li>9 Savage gymnatic aggressors
     <li>6 Pharmaceutical pianos
     <li>9 Intravenous retribution champions
    </ol>
   </section>
   <footer>
    Last login: 12th Never
   </footer>
  </body>
 </html>

(Pretty-printing is pretty fast, but Spinneret obeys *print-pretty* should you want to turn it off.)

Printing style

Spinneret tries hard to produce human-writable output – output that looks like a human being wrote it. Sometimes, however, you may have markup to render that there is no human-writable way to render, because no human being would ever write it.

In these cases you can set or bind the *html-style* variable to control Spinneret’s print style. The default is :human, which means to attempt to produce human-writable output. It can also be set to :tree, which simply prints every element as if it were a block element, and every run of text on a new line.

(let ((*html-style* :human))
  (with-html
    (:div
      (:p "Text " (:a "link text") " more text"))))
=> <div>
    <p>Text <a>link text</a> more text
   </div>"

(let ((*html-style* :tree))
  (with-html-string
    (:div
      (:p "Text " (:a "link text") " more text"))))
=> <div>
    <p>
     Text
     <a>
      link text
     </a>
      more text
    </p>
   </div>

With *html-style* bounds to :tree, and *print-pretty* bounds to nil, output is verbose but predictable:

(let ((*html-style* :tree)
      (*print-pretty* nil))
  (with-html-string
    (:div
      (:p "Text " (:a "link text") " more text"))))
=> "<div><p>Text <a>link text</a>  more text</p></div>"

Line wrapping

When pretty-printing, Spinneret makes the best decisions about line wrapping that it can, given the information it has about how to get the print length of various types. But, in the case of user-defined types, it has no way to tell in advance how long they will be when printed. If you find Spinneret is making bad line-breaking decisions with your types, you can help it out by specializing html-length. For example, if you use PURI, you could help Spinneret pretty-print PURI URIs by teaching it how to get their length:

(defmethod html-length ((uri puri:uri))
  ;; Doesn't cons.
  (length (puri:render-uri uri nil)))

Syntax

The rules for WITH-HTML are these:

WITH-HTML-STRING is like WITH-HTML, but intercepts the generated HTML at run time and returns a string.

Dynamic output

For flexibility, even at the cost of efficiency, the pseudo-attribute :ATTRS introduces a form to evaluate at run time for a plist of extra attributes and values.

(:p :attrs (list :id "dynamic!"))
=> <p id="dynamic!">

Similarly, the pseudo-tag :TAG allows you to select a tag at run time.

(:tag :name "div"
 (:tag :name "p"
  (:tag :name "span"
    "Hello.")))
≡ (:div (:p (:span "Hello")))

Note that :TAG only allows you to select a tag, not create one. The tag must still be one that is known to Spinneret to be valid.

For maximum dynamicity, you can combine :TAG and :ATTRS:

(:tag :name "div" :attrs (list :id "dynamic!"))
=> <div id=dynamic!></div>

Markdown

If the additional system spinneret/cl-markdown is loaded, then a string in function position is first compiled as Markdown (using CL-MARKDOWN), then passed to format as a control string and applied to its arguments.

This is useful for inline formatting, like links, where sexps would be clumsy:

(with-html
 ("Here is some copy, with [a link](~a)" link))

(with-html
  (:span "Here is some copy, with "
    (:a :href link "a link.")))

get-html-path

Sometimes it is useful for a piece of HTML-generating code to know where in the document it appears. You might, for example, want to define a tabulate function that prints list-of-lists as rows of cells, but only prints the surrounding <table></table> if it is not already within a table. The function get-html-path returns a list of open tags, from latest to earliest. Usually it will look something like

  (get-html-path) ;-> '(:table :section :body :html)

Thus `tabulate' could be written

 (defun tabulate (&rest rows)
   (with-html
     (flet ((tabulate ()
              (loop for row in rows do
                (:tr (loop for cell in row do
                  (:td cell))))))
       (if (find :table (get-html-path))
           (tabulate)
           (:table (:tbody (tabulate)))))))

Note that get-html-path returns a freshly-consed list each time it is called.

deftag

The stumbling block for all sexp-based HTML generators is order of evaluation. It's tempting to write something like this:

 ;; Doesn't work
 (defun field (control)
   (with-html (:p control)))

 (defun input (default &key name label (type "text"))
   (with-html
     (:label :for name label)
     (:input :name name :id name :type type :value default)))

But it won't work: in (field (input "Default" :name "why" :label "Reason")), (input) gets evaluated before (field), and the HTML is printed inside-out.

Macros do work:

 (defmacro field (control)
   `(with-html (:p ,control)))

 (defmacro input (name label &key (type "text"))
   `(with-html
      (:label :for ,name ,label)
      (:input :name ,name :id ,name :type ,type)))

But we can do better than this. Spinneret provides a macro-writing macro, deftag, which lets you refactor HTML without hiding it.

 (deftag field (control attrs)
  `(:p ,@attrs ,@control))

 (deftag input (default attrs &key name label (type "text"))
   (once-only (name)
     `(progn
        (:label :for ,name ,label)
        (:input :name ,name :id ,name :type ,type
          ,@attrs
          :value (progn ,@default)))))

A macro defined using deftag takes its arguments just like an HTML element. Instead of

(input "Default" :name "why" :label "Reason") ; defmacro

You write

(input :name "why" :label "Reason" "Default") ; deftag

The macro re-arranges the arguments so they can be bound to an ordinary lambda list, like the one above: the body of the tag is bound to the first argument, and matching attributes are bound to keywords. Multiple :class arguments, :dataset, and other shorthands are handled exactly as in the usual HTML syntax.

But the great advantage of deftag is how it handles attributes which are not bound to keywords. In the definition of input using deftag, you see that the attrs catch-all argument is spliced into the call to :input. This means that any unhandled attributes pass through to the actual input element.

(input :name "why" :label "Reason" :required t :class "special" "Default")
=> <label for=why>Reason</label>
   <input class=special name=why id=why type=text required value=Default>

In effect, input extends the :input tag, almost like a subclass. This is a very idiomatic and expressive way of building abstractions over HTML.

(Spinneret used to provide a more elaborate way of building HTML abstractions, deftemplate, but deftag is simpler and more useful.)

Parenscript

The semantics of Spinneret in Parenscript are almost the same. There is no with-html-string, and with-html returns a DocumentFragment.

If Markdown support is enabled, strings in function position are still parsed as Markdown, but supplying arguments triggers an error (since Parenscript does not have format).

get-html-path is not implemented for Parenscript.

Neither :ATTRS nor :TAG is available in Parenscript.

Validation

Spinneret does not do document validation, but it does warn, at compile time, about invalid tags and attributes.

Although HTML5 does include a mechanism for application-specific attributes (the data- prefix), some client-side frameworks choose to employ their own prefixes instead. You can disable validation for a given prefix by adding it to *unvalidated-attribute-prefixes*.

(pushnew "ng-" *unvalidated-attribute-prefixes* :test #’equal)

Next: , Previous: , Up: Top   [Contents][Index]

2 Systems

The main system appears first, followed by any subsystem dependency.


Previous: , Up: Systems   [Contents][Index]

2.1 spinneret

Author

Paul M. Rodriguez <pmr@ruricolist.com>

License

MIT

Description

Common Lisp HTML5 generator.

Version

2.0

Dependencies
Source

spinneret.asd (file)

Components

Next: , Previous: , Up: Top   [Contents][Index]

3 Files

Files are sorted by type and then listed depth-first from the systems components trees.


Previous: , Up: Files   [Contents][Index]

3.1 Lisp


Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.1 spinneret.asd

Location

spinneret.asd

Systems

spinneret (system)


Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.2 spinneret/package.lisp

Parent

spinneret (system)

Location

package.lisp

Packages

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.3 spinneret/special.lisp

Dependency

package.lisp (file)

Parent

spinneret (system)

Location

special.lisp

Exported Definitions
Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.4 spinneret/stream.lisp

Dependency

special.lisp (file)

Parent

spinneret (system)

Location

stream.lisp

Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.5 spinneret/syntax.lisp

Dependency

stream.lisp (file)

Parent

spinneret (system)

Location

syntax.lisp

Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.6 spinneret/tags.lisp

Dependency

syntax.lisp (file)

Parent

spinneret (system)

Location

tags.lisp

Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.7 spinneret/spinneret.lisp

Dependency

tags.lisp (file)

Parent

spinneret (system)

Location

spinneret.lisp

Exported Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.8 spinneret/run.lisp

Dependency

spinneret.lisp (file)

Parent

spinneret (system)

Location

run.lisp

Exported Definitions
Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.9 spinneret/functions.lisp

Dependency

run.lisp (file)

Parent

spinneret (system)

Location

functions.lisp

Packages

spinneret.tag

Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.10 spinneret/compile.lisp

Dependency

functions.lisp (file)

Parent

spinneret (system)

Location

compile.lisp

Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.11 spinneret/deftag.lisp

Dependency

compile.lisp (file)

Parent

spinneret (system)

Location

deftag.lisp

Exported Definitions

deftag (macro)

Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

3.1.12 spinneret/dynamic.lisp

Dependency

deftag.lisp (file)

Parent

spinneret (system)

Location

dynamic.lisp

Exported Definitions

dynamic-tag (macro)

Internal Definitions

Previous: , Up: Lisp files   [Contents][Index]

3.1.13 spinneret/ps.lisp

Dependency

dynamic.lisp (file)

Parent

spinneret (system)

Location

ps.lisp

Internal Definitions

Next: , Previous: , Up: Top   [Contents][Index]

4 Packages

Packages are listed by definition order.


Next: , Previous: , Up: Packages   [Contents][Index]

4.1 spinneret-user

Source

package.lisp (file)

Use List

Next: , Previous: , Up: Packages   [Contents][Index]

4.2 spinneret

Source

package.lisp (file)

Use List
Used By List

spinneret-user

Exported Definitions
Internal Definitions

Previous: , Up: Packages   [Contents][Index]

4.3 spinneret.tag

Source

functions.lisp (file)

Internal Definitions

Next: , Previous: , Up: Top   [Contents][Index]

5 Definitions

Definitions are sorted by export status, category, package, and then by lexicographic order.


Next: , Previous: , Up: Definitions   [Contents][Index]

5.1 Exported definitions


Next: , Previous: , Up: Exported definitions   [Contents][Index]

5.1.1 Special variables

Special Variable: *fill-column*

Column at which to wrap text.
This is always measured from the start of the tag.

Package

spinneret

Source

special.lisp (file)

Special Variable: *html*

Output stream for HTML generation.

Package

spinneret

Source

special.lisp (file)

Special Variable: *html-charset*
Package

spinneret

Source

special.lisp (file)

Special Variable: *html-lang*
Package

spinneret

Source

special.lisp (file)

Special Variable: *html-style*

How should we pretty-print HTML?

Package

spinneret

Source

special.lisp (file)


Next: , Previous: , Up: Exported definitions   [Contents][Index]

5.1.2 Macros

Macro: deftag NAME (BODY ATTRS-VAR &rest LL) &body TAG
Package

spinneret

Source

deftag.lisp (file)

Macro: dynamic-tag &body TMP-BODY0
Package

spinneret

Source

dynamic.lisp (file)

Macro: with-html &body BODY

Interpret BODY as HTML. Consult README.txt for the syntax.

Package

spinneret

Source

spinneret.lisp (file)

Macro: with-html-string &body BODY

Like WITH-HTML, but capture the output as a string.

Package

spinneret

Source

spinneret.lisp (file)


Next: , Previous: , Up: Exported definitions   [Contents][Index]

5.1.3 Functions

Function: get-html-path ()

Return a copy of *HTML-PATH*.
This is necessary because *HTML-PATH* itself is stack-allocated.

Package

spinneret

Source

spinneret.lisp (file)


Previous: , Up: Exported definitions   [Contents][Index]

5.1.4 Generic functions

Generic Function: html OBJECT

Return an unescaped, unfilled string representing OBJECT.

Package

spinneret

Source

run.lisp (file)

Methods
Method: html (SYM symbol)
Method: html (N number)
Method: html (CHAR character)
Method: html (STRING string)
Method: html OBJECT around
Method: html OBJECT
Method: html (NADA null)
Method: html (NADA null) around
Generic Function: html-length X

The length of X when printed as an HTML string.

This is provided so you can give Spinneret the information it needs to make reasonable decisions about line wrapping.

Package

spinneret

Source

run.lisp (file)

Methods
Method: html-length X

Previous: , Up: Definitions   [Contents][Index]

5.2 Internal definitions


Next: , Previous: , Up: Internal definitions   [Contents][Index]

5.2.1 Constants

Constant: +storage-for-deflex-var-cdata-end+
Package

spinneret

Source

syntax.lisp (file)

Constant: +storage-for-deflex-var-cdata-start+
Package

spinneret

Source

syntax.lisp (file)

Constant: +storage-for-deflex-var-no-break-space+
Package

spinneret

Source

syntax.lisp (file)


Next: , Previous: , Up: Internal definitions   [Contents][Index]

5.2.2 Special variables

Special Variable: *depth*

Depth of the tag being output.

Package

spinneret

Source

special.lisp (file)

Special Variable: *html-path*

List (in ascending order) of parent nodes.

Package

spinneret

Source

special.lisp (file)

Special Variable: *ie-attr-props*
Package

spinneret

Source

ps.lisp (file)

Special Variable: *indent*
Package

spinneret

Source

special.lisp (file)

Special Variable: *pending-space*
Package

spinneret

Source

special.lisp (file)

Special Variable: *pre*
Package

spinneret

Source

special.lisp (file)

Special Variable: *props*
Package

spinneret

Source

ps.lisp (file)

Special Variable: *tags-pkg*
Package

spinneret

Source

functions.lisp (file)


Next: , Previous: , Up: Internal definitions   [Contents][Index]

5.2.3 Symbol macros

Symbol Macro: cdata-end
Package

spinneret

Source

syntax.lisp (file)

Expansion

spinneret::+storage-for-deflex-var-cdata-end+

Symbol Macro: cdata-start
Package

spinneret

Source

syntax.lisp (file)

Expansion

spinneret::+storage-for-deflex-var-cdata-start+

Symbol Macro: no-break-space
Package

spinneret

Source

syntax.lisp (file)

Expansion

spinneret::+storage-for-deflex-var-no-break-space+


Next: , Previous: , Up: Internal definitions   [Contents][Index]

5.2.4 Macros

Macro: catch-output ARG
Package

spinneret

Source

run.lisp (file)

Macro: define-all-tags ()
Package

spinneret

Source

functions.lisp (file)

Macro: define-tag TAG
Package

spinneret

Source

functions.lisp (file)

Macro: do-words (VAR AT-END? STRING &optional RETURN) &body BODY
Package

spinneret

Source

run.lisp (file)

Macro: h* &body TMP-BODY0
Package

spinneret

Source

dynamic.lisp (file)

Macro: with-space &body BODY
Package

spinneret

Source

run.lisp (file)

Macro: with-tag (NAME &rest ATTRIBUTES) &body BODY
Package

spinneret

Source

compile.lisp (file)

Macro: without-trailing-space &body BODY
Package

spinneret

Source

run.lisp (file)


Next: , Previous: , Up: Internal definitions   [Contents][Index]

5.2.5 Compiler macros

Compiler Macro: fast-format STREAM CONTROL-STRING &rest ARGS
Package

spinneret

Source

run.lisp (file)

Compiler Macro: join-tokens &rest TOKENS
Package

spinneret

Source

compile.lisp (file)


Next: , Previous: , Up: Internal definitions   [Contents][Index]

5.2.6 Functions

Function: a ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: abbr ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: address ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: allow-other-keys LAMBDA-LIST
Package

spinneret

Source

deftag.lisp (file)

Function: area ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: aria-attribute? NAME
Package

spinneret

Source

tags.lisp (file)

Function: article ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: aside ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: audio ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: b ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: base ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: bdi ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: bdo ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: blockquote ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: body ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: boolean? ATTR
Package

spinneret

Source

tags.lisp (file)

Function: br ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: buffer-space ()
Package

spinneret

Source

run.lisp (file)

Function: button ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: call/words THUNK STRING
Package

spinneret

Source

run.lisp (file)

Function: canvas ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: caption ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: cdata TEXT SAFE? &aux HTML
Package

spinneret

Source

run.lisp (file)

Function: cite ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: code ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: col ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: colgroup ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: command ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: comment TEXT SAFE?
Package

spinneret

Source

run.lisp (file)

Function: data ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: data-attr-prop ATTR
Package

spinneret

Source

ps.lisp (file)

Function: data-attr? ATTR
Package

spinneret

Source

ps.lisp (file)

Function: datalist ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: dd ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: del ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: details ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: dfn ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: dissect-tag TAG

Dissect a tag like ‘:div.class#id’ into the tag itself and a plist of attributes.

Package

spinneret

Source

compile.lisp (file)

Function: div ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: dl ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: doctype &rest ARGS
Package

spinneret

Source

run.lisp (file)

Function: dotted-list? LIST
Package

spinneret

Source

compile.lisp (file)

Function: dt ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: dynamic-tag* ()

Dynamically select a tag at runtime. Note that TAG must be a known tag.

Package

spinneret

Source

functions.lisp (file)

Function: em ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: embed ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: embedded? ELEMENT
Package

spinneret

Source

tags.lisp (file)

Function: escape-attribute-value STRING
Package

spinneret

Source

syntax.lisp (file)

Function: escape-attrs TAG ATTRS
Package

spinneret

Source

compile.lisp (file)

Function: escape-cdata TEXT
Package

spinneret

Source

syntax.lisp (file)

Function: escape-comment TEXT
Package

spinneret

Source

syntax.lisp (file)

Function: escape-string STRING
Package

spinneret

Source

syntax.lisp (file)

Function: escape-string-char ()
Package

spinneret

Source

syntax.lisp (file)

Function: escape-to-stream STRING TABLE STREAM
Package

spinneret

Source

syntax.lisp (file)

Function: escape-to-string OBJECT
Package

spinneret

Source

syntax.lisp (file)

Function: escape-value VALUE
Package

spinneret

Source

run.lisp (file)

Function: escape-with-table STRING TABLE
Package

spinneret

Source

syntax.lisp (file)

Function: event? ATTR
Package

spinneret

Source

ps.lisp (file)

Function: expand-dynamic-tag &rest ARGS
Package

spinneret

Source

dynamic.lisp (file)

Function: expand-h* &rest ARGS
Package

spinneret

Source

dynamic.lisp (file)

Function: extract-lambda-list-keywords LAMBDA-LIST

Get the actual keywords from the lambda list.

Package

spinneret

Source

deftag.lisp (file)

Function: fast-format STREAM CONTROL-STRING &rest ARGS

Like ‘format’, but bind ‘*print-pretty*’ to nil.

Package

spinneret

Source

run.lisp (file)

Function: fieldset ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: figcaption ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: figure ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: fill-text STRING &optional SAFE? &aux HTML PRETTY? PRE?
Package

spinneret

Source

run.lisp (file)

Function: flush-space ()
Package

spinneret

Source

run.lisp (file)

Function: footer ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: form ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: format-attribute-value VALUE
Package

spinneret

Source

run.lisp (file)

Function: format-attributes-plain ATTRS &optional STREAM
Package

spinneret

Source

run.lisp (file)

Function: format-attributes-pretty/block ATTRS &optional STREAM
Package

spinneret

Source

run.lisp (file)

Function: format-attributes-pretty/inline ATTRS &optional STREAM
Package

spinneret

Source

run.lisp (file)

Function: format-attributes-with ATTRS PRINT-BOOLEAN PRINT-VALUE

Format ATTRS, uses the unary function PRINT-BOOLEAN to print Boolean attributes, and the binary function PRINT-VALUE to print ordinary attributes.

Package

spinneret

Source

run.lisp (file)

Function: format-text CONTROL-STRING &rest ARGS
Package

spinneret

Source

run.lisp (file)

Function: get-indent ()
Package

spinneret

Source

special.lisp (file)

Function: global-attribute? NAME
Package

spinneret

Source

tags.lisp (file)

Function: h1 ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: h2 ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: h3 ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: h4 ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: h5 ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: h6 ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: head ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: header ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: heading-depth ()

Return the current dynamic heading depth.
This follows the convention for the XHTML <h/> element, where the top level is level 1, inside the first section is level 2, and so forth.

Package

spinneret

Source

run.lisp (file)

Function: heading-depth-heading ()
Package

spinneret

Source

run.lisp (file)

Function: hgroup ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: hr ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: html ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: html-length* X
Package

spinneret

Source

run.lisp (file)

Function: i ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: iframe ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: img ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: inline? ELEMENT
Package

spinneret

Source

tags.lisp (file)

Function: input ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: ins ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: intersperse NEW-ELT LIST
Package

spinneret

Source

ps.lisp (file)

Function: invalid? ELEMENT
Package

spinneret

Source

tags.lisp (file)

Function: join-tokens &rest TOKENS
Package

spinneret

Source

compile.lisp (file)

Function: kbd ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: keygen ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: label ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: lambda-list-vars LAMBDA-LIST
Package

spinneret

Source

deftag.lisp (file)

Function: legend ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: li ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: link ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: literal? ELEMENT
Package

spinneret

Source

tags.lisp (file)

Function: main ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: make-attr-setter ATTR VAL
Package

spinneret

Source

ps.lisp (file)

Function: make-cdata TEXT
Package

spinneret

Source

run.lisp (file)

Function: make-comment TEXT
Package

spinneret

Source

run.lisp (file)

Function: make-doctype &rest ARGS
Package

spinneret

Source

run.lisp (file)

Function: make-head &rest ARGS
Package

spinneret

Source

run.lisp (file)

Function: make-html &rest ARGS
Package

spinneret

Source

run.lisp (file)

Function: make-html-stream BASE-STREAM
Package

spinneret

Source

stream.lisp (file)

Function: map ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: mark ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: maybe-wrap &optional OFFSET STREAM
Package

spinneret

Source

run.lisp (file)

Function: menu ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: meta ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: meter ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: mklist X
Package

spinneret

Source

run.lisp (file)

Function: must-quote? CHAR
Package

spinneret

Source

syntax.lisp (file)

Function: nav ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: needs-close? ELEMENT
Package

spinneret

Source

tags.lisp (file)

Function: needs-quotes? STRING
Package

spinneret

Source

syntax.lisp (file)

Function: newline &optional S
Package

spinneret

Source

stream.lisp (file)

Function: noscript ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: object ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: ol ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: optgroup ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: option ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: output ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: p ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: paragraph? ELEMENT
Package

spinneret

Source

tags.lisp (file)

Function: param ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: parse-as-markdown STRING

Placeholder, load spinneret/cl-markdown system if you want to expand markdown.

Package

spinneret

Source

compile.lisp (file)

Function: parse-deftag-body BODY
Package

spinneret

Source

deftag.lisp (file)

Function: parse-html FORM ENV
Package

spinneret

Source

compile.lisp (file)

Function: permitted-attributes TAG
Package

spinneret

Source

tags.lisp (file)

Function: picture ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: pre ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: preformatted? ELEMENT
Package

spinneret

Source

tags.lisp (file)

Function: progress ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: pseudotag-expand ELEMENT ARGS
Package

spinneret

Source

tags.lisp (file)

Function: pseudotag-expander ELEMENT
Package

spinneret

Source

tags.lisp (file)

Function: q ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: remove-substring STRING SUBSTRING
Package

spinneret

Source

syntax.lisp (file)

Function: rp ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: rt ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: ruby ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: s ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: samp ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: script ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: section ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: select ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: simplify-tokenized-attributes ATTRS

Return an alist of the tokenized attributes (like :class) and a plist of the regular attributes.

Package

spinneret

Source

compile.lisp (file)

Function: small ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: source ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: span ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: splice-allow-other-keys LAMBDA-LIST
Package

spinneret

Source

deftag.lisp (file)

Function: strong ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: style ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: sub ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: summary ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: sup ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: table ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: tag-body-parts FORM

Pull the attributes off the front of BODY and return the attributes and the body.

Package

spinneret

Source

compile.lisp (file)

Function: tag-close TAG
Package

spinneret

Source

functions.lisp (file)

Function: tag-fn TAG &key INTERN
Package

spinneret

Source

functions.lisp (file)

Function: tag-open TAG
Package

spinneret

Source

functions.lisp (file)

Function: tag-parts FORM

Divide a form into an element, attributes, and a body. Provided the form qualifies as a tag, the element is the car, the attributes are all the following key-value pairs, and the body is what remains.

Package

spinneret

Source

compile.lisp (file)

Function: tbody ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: td ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: textarea ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: tfoot ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: th ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: thead ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: time ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: title ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: tokenized-attribute? ATTR
Package

spinneret

Source

tags.lisp (file)

Function: tokenized-attributes-plist ALIST

When possible, join tokenized attributes at compile time.

Package

spinneret

Source

compile.lisp (file)

Function: tr ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: track ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: trim-ends PREFIX STRING SUFFIX
Package

spinneret

Source

compile.lisp (file)

Function: u ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: ul ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: unmatched? ELEMENT
Package

spinneret

Source

tags.lisp (file)

Function: unvalidated-attribute? ATTRIBUTE
Package

spinneret

Source

tags.lisp (file)

Function: valid-attribute? TAG NAME
Package

spinneret

Source

tags.lisp (file)

Function: valid? ELEMENT
Package

spinneret

Source

tags.lisp (file)

Function: var ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: video ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: void? ELEMENT
Package

spinneret

Source

tags.lisp (file)

Function: wbr ()
Package

spinneret.tag

Source

functions.lisp (file)

Function: whitespace CHAR
Package

spinneret

Source

syntax.lisp (file)

Function: write-raw &rest ARGS
Package

spinneret

Source

run.lisp (file)

Function: xss-escape ARG

Possibly escape ARG for use with FORMAT.

We don’t want to leave ourselves open to XSS, but we also want to be able to use directives like ~c, ~d, ~{~} &c.

Package

spinneret

Source

run.lisp (file)


Next: , Previous: , Up: Internal definitions   [Contents][Index]

5.2.7 Generic functions

Generic Function: elastic-newline STREAM
Package

spinneret

Source

stream.lisp (file)

Methods
Method: elastic-newline (S html-stream)
Method: elastic-newline X
Generic Function: ensure-html-stream X
Package

spinneret

Source

stream.lisp (file)

Methods
Method: ensure-html-stream (S html-stream)
Method: ensure-html-stream (X stream)
Generic Function: fire-elastic-newline S CHAR
Package

spinneret

Methods
Method: fire-elastic-newline (S html-stream) (CHAR character)
Source

stream.lisp (file)

Method: fire-elastic-newline (S html-stream) (CHAR (eql ↩))
Source

stream.lisp (file)

Generic Function: html-stream-column STREAM
Package

spinneret

Source

stream.lisp (file)

Methods
Method: html-stream-column (X stream)
Method: html-stream-column (HTML-STREAM html-stream)

automatically generated reader method

Generic Function: html-stream.base-stream STREAM
Package

spinneret

Source

stream.lisp (file)

Methods
Method: html-stream.base-stream (HTML-STREAM html-stream)

automatically generated reader method

Method: html-stream.base-stream (STREAM stream)
Generic Function: html-stream? X
Package

spinneret

Source

stream.lisp (file)

Methods
Method: html-stream? (S html-stream)
Method: html-stream? X

Next: , Previous: , Up: Internal definitions   [Contents][Index]

5.2.8 Classes

Class: html-stream ()
Package

spinneret

Source

stream.lisp (file)

Direct superclasses

fundamental-character-output-stream (class)

Direct methods
Direct slots
Slot: col
Type

(integer 0 *)

Initform

0

Readers
Slot: line
Type

(integer 0 *)

Initform

0

Slot: last-char
Type

character

Initform

#\newline

Slot: elastic-newline
Type

boolean

Slot: base-stream
Type

stream

Initargs

:base-stream

Readers

html-stream.base-stream (generic function)


Previous: , Up: Internal definitions   [Contents][Index]

5.2.9 Types

Type: index ()
Package

spinneret

Source

syntax.lisp (file)


Previous: , Up: Top   [Contents][Index]

Appendix A Indexes


Next: , Previous: , Up: Indexes   [Contents][Index]

A.1 Concepts

Jump to:   F   L   S  
Index Entry  Section

F
File, Lisp, spinneret.asd: The spinneret<dot>asd file
File, Lisp, spinneret/compile.lisp: The spinneret/compile<dot>lisp file
File, Lisp, spinneret/deftag.lisp: The spinneret/deftag<dot>lisp file
File, Lisp, spinneret/dynamic.lisp: The spinneret/dynamic<dot>lisp file
File, Lisp, spinneret/functions.lisp: The spinneret/functions<dot>lisp file
File, Lisp, spinneret/package.lisp: The spinneret/package<dot>lisp file
File, Lisp, spinneret/ps.lisp: The spinneret/ps<dot>lisp file
File, Lisp, spinneret/run.lisp: The spinneret/run<dot>lisp file
File, Lisp, spinneret/special.lisp: The spinneret/special<dot>lisp file
File, Lisp, spinneret/spinneret.lisp: The spinneret/spinneret<dot>lisp file
File, Lisp, spinneret/stream.lisp: The spinneret/stream<dot>lisp file
File, Lisp, spinneret/syntax.lisp: The spinneret/syntax<dot>lisp file
File, Lisp, spinneret/tags.lisp: The spinneret/tags<dot>lisp file

L
Lisp File, spinneret.asd: The spinneret<dot>asd file
Lisp File, spinneret/compile.lisp: The spinneret/compile<dot>lisp file
Lisp File, spinneret/deftag.lisp: The spinneret/deftag<dot>lisp file
Lisp File, spinneret/dynamic.lisp: The spinneret/dynamic<dot>lisp file
Lisp File, spinneret/functions.lisp: The spinneret/functions<dot>lisp file
Lisp File, spinneret/package.lisp: The spinneret/package<dot>lisp file
Lisp File, spinneret/ps.lisp: The spinneret/ps<dot>lisp file
Lisp File, spinneret/run.lisp: The spinneret/run<dot>lisp file
Lisp File, spinneret/special.lisp: The spinneret/special<dot>lisp file
Lisp File, spinneret/spinneret.lisp: The spinneret/spinneret<dot>lisp file
Lisp File, spinneret/stream.lisp: The spinneret/stream<dot>lisp file
Lisp File, spinneret/syntax.lisp: The spinneret/syntax<dot>lisp file
Lisp File, spinneret/tags.lisp: The spinneret/tags<dot>lisp file

S
spinneret.asd: The spinneret<dot>asd file
spinneret/compile.lisp: The spinneret/compile<dot>lisp file
spinneret/deftag.lisp: The spinneret/deftag<dot>lisp file
spinneret/dynamic.lisp: The spinneret/dynamic<dot>lisp file
spinneret/functions.lisp: The spinneret/functions<dot>lisp file
spinneret/package.lisp: The spinneret/package<dot>lisp file
spinneret/ps.lisp: The spinneret/ps<dot>lisp file
spinneret/run.lisp: The spinneret/run<dot>lisp file
spinneret/special.lisp: The spinneret/special<dot>lisp file
spinneret/spinneret.lisp: The spinneret/spinneret<dot>lisp file
spinneret/stream.lisp: The spinneret/stream<dot>lisp file
spinneret/syntax.lisp: The spinneret/syntax<dot>lisp file
spinneret/tags.lisp: The spinneret/tags<dot>lisp file

Jump to:   F   L   S  

Next: , Previous: , Up: Indexes   [Contents][Index]

A.2 Functions

Jump to:   A   B   C   D   E   F   G   H   I   J   K   L   M   N   O   P   Q   R   S   T   U   V   W   X  
Index Entry  Section

A
a: Internal functions
abbr: Internal functions
address: Internal functions
allow-other-keys: Internal functions
area: Internal functions
aria-attribute?: Internal functions
article: Internal functions
aside: Internal functions
audio: Internal functions

B
b: Internal functions
base: Internal functions
bdi: Internal functions
bdo: Internal functions
blockquote: Internal functions
body: Internal functions
boolean?: Internal functions
br: Internal functions
buffer-space: Internal functions
button: Internal functions

C
call/words: Internal functions
canvas: Internal functions
caption: Internal functions
catch-output: Internal macros
cdata: Internal functions
cite: Internal functions
code: Internal functions
col: Internal functions
colgroup: Internal functions
command: Internal functions
comment: Internal functions
Compiler Macro, fast-format: Internal compiler macros
Compiler Macro, join-tokens: Internal compiler macros

D
data: Internal functions
data-attr-prop: Internal functions
data-attr?: Internal functions
datalist: Internal functions
dd: Internal functions
define-all-tags: Internal macros
define-tag: Internal macros
deftag: Exported macros
del: Internal functions
details: Internal functions
dfn: Internal functions
dissect-tag: Internal functions
div: Internal functions
dl: Internal functions
do-words: Internal macros
doctype: Internal functions
dotted-list?: Internal functions
dt: Internal functions
dynamic-tag: Exported macros
dynamic-tag*: Internal functions

E
elastic-newline: Internal generic functions
elastic-newline: Internal generic functions
elastic-newline: Internal generic functions
em: Internal functions
embed: Internal functions
embedded?: Internal functions
ensure-html-stream: Internal generic functions
ensure-html-stream: Internal generic functions
ensure-html-stream: Internal generic functions
escape-attribute-value: Internal functions
escape-attrs: Internal functions
escape-cdata: Internal functions
escape-comment: Internal functions
escape-string: Internal functions
escape-string-char: Internal functions
escape-to-stream: Internal functions
escape-to-string: Internal functions
escape-value: Internal functions
escape-with-table: Internal functions
event?: Internal functions
expand-dynamic-tag: Internal functions
expand-h*: Internal functions
extract-lambda-list-keywords: Internal functions

F
fast-format: Internal compiler macros
fast-format: Internal functions
fieldset: Internal functions
figcaption: Internal functions
figure: Internal functions
fill-text: Internal functions
fire-elastic-newline: Internal generic functions
fire-elastic-newline: Internal generic functions
fire-elastic-newline: Internal generic functions
flush-space: Internal functions
footer: Internal functions
form: Internal functions
format-attribute-value: Internal functions
format-attributes-plain: Internal functions
format-attributes-pretty/block: Internal functions
format-attributes-pretty/inline: Internal functions
format-attributes-with: Internal functions
format-text: Internal functions
Function, a: Internal functions
Function, abbr: Internal functions
Function, address: Internal functions
Function, allow-other-keys: Internal functions
Function, area: Internal functions
Function, aria-attribute?: Internal functions
Function, article: Internal functions
Function, aside: Internal functions
Function, audio: Internal functions
Function, b: Internal functions
Function, base: Internal functions
Function, bdi: Internal functions
Function, bdo: Internal functions
Function, blockquote: Internal functions
Function, body: Internal functions
Function, boolean?: Internal functions
Function, br: Internal functions
Function, buffer-space: Internal functions
Function, button: Internal functions
Function, call/words: Internal functions
Function, canvas: Internal functions
Function, caption: Internal functions
Function, cdata: Internal functions
Function, cite: Internal functions
Function, code: Internal functions
Function, col: Internal functions
Function, colgroup: Internal functions
Function, command: Internal functions
Function, comment: Internal functions
Function, data: Internal functions
Function, data-attr-prop: Internal functions
Function, data-attr?: Internal functions
Function, datalist: Internal functions
Function, dd: Internal functions
Function, del: Internal functions
Function, details: Internal functions
Function, dfn: Internal functions
Function, dissect-tag: Internal functions
Function, div: Internal functions
Function, dl: Internal functions
Function, doctype: Internal functions
Function, dotted-list?: Internal functions
Function, dt: Internal functions
Function, dynamic-tag*: Internal functions
Function, em: Internal functions
Function, embed: Internal functions
Function, embedded?: Internal functions
Function, escape-attribute-value: Internal functions
Function, escape-attrs: Internal functions
Function, escape-cdata: Internal functions
Function, escape-comment: Internal functions
Function, escape-string: Internal functions
Function, escape-string-char: Internal functions
Function, escape-to-stream: Internal functions
Function, escape-to-string: Internal functions
Function, escape-value: Internal functions
Function, escape-with-table: Internal functions
Function, event?: Internal functions
Function, expand-dynamic-tag: Internal functions
Function, expand-h*: Internal functions
Function, extract-lambda-list-keywords: Internal functions
Function, fast-format: Internal functions
Function, fieldset: Internal functions
Function, figcaption: Internal functions
Function, figure: Internal functions
Function, fill-text: Internal functions
Function, flush-space: Internal functions
Function, footer: Internal functions
Function, form: Internal functions
Function, format-attribute-value: Internal functions
Function, format-attributes-plain: Internal functions
Function, format-attributes-pretty/block: Internal functions
Function, format-attributes-pretty/inline: Internal functions
Function, format-attributes-with: Internal functions
Function, format-text: Internal functions
Function, get-html-path: Exported functions
Function, get-indent: Internal functions
Function, global-attribute?: Internal functions
Function, h1: Internal functions
Function, h2: Internal functions
Function, h3: Internal functions
Function, h4: Internal functions
Function, h5: Internal functions
Function, h6: Internal functions
Function, head: Internal functions
Function, header: Internal functions
Function, heading-depth: Internal functions
Function, heading-depth-heading: Internal functions
Function, hgroup: Internal functions
Function, hr: Internal functions
Function, html: Internal functions
Function, html-length*: Internal functions
Function, i: Internal functions
Function, iframe: Internal functions
Function, img: Internal functions
Function, inline?: Internal functions
Function, input: Internal functions
Function, ins: Internal functions
Function, intersperse: Internal functions
Function, invalid?: Internal functions
Function, join-tokens: Internal functions
Function, kbd: Internal functions
Function, keygen: Internal functions
Function, label: Internal functions
Function, lambda-list-vars: Internal functions
Function, legend: Internal functions
Function, li: Internal functions
Function, link: Internal functions
Function, literal?: Internal functions
Function, main: Internal functions
Function, make-attr-setter: Internal functions
Function, make-cdata: Internal functions
Function, make-comment: Internal functions
Function, make-doctype: Internal functions
Function, make-head: Internal functions
Function, make-html: Internal functions
Function, make-html-stream: Internal functions
Function, map: Internal functions
Function, mark: Internal functions
Function, maybe-wrap: Internal functions
Function, menu: Internal functions
Function, meta: Internal functions
Function, meter: Internal functions
Function, mklist: Internal functions
Function, must-quote?: Internal functions
Function, nav: Internal functions
Function, needs-close?: Internal functions
Function, needs-quotes?: Internal functions
Function, newline: Internal functions
Function, noscript: Internal functions
Function, object: Internal functions
Function, ol: Internal functions
Function, optgroup: Internal functions
Function, option: Internal functions
Function, output: Internal functions
Function, p: Internal functions
Function, paragraph?: Internal functions
Function, param: Internal functions
Function, parse-as-markdown: Internal functions
Function, parse-deftag-body: Internal functions
Function, parse-html: Internal functions
Function, permitted-attributes: Internal functions
Function, picture: Internal functions
Function, pre: Internal functions
Function, preformatted?: Internal functions
Function, progress: Internal functions
Function, pseudotag-expand: Internal functions
Function, pseudotag-expander: Internal functions
Function, q: Internal functions
Function, remove-substring: Internal functions
Function, rp: Internal functions
Function, rt: Internal functions
Function, ruby: Internal functions
Function, s: Internal functions
Function, samp: Internal functions
Function, script: Internal functions
Function, section: Internal functions
Function, select: Internal functions
Function, simplify-tokenized-attributes: Internal functions
Function, small: Internal functions
Function, source: Internal functions
Function, span: Internal functions
Function, splice-allow-other-keys: Internal functions
Function, strong: Internal functions
Function, style: Internal functions
Function, sub: Internal functions
Function, summary: Internal functions
Function, sup: Internal functions
Function, table: Internal functions
Function, tag-body-parts: Internal functions
Function, tag-close: Internal functions
Function, tag-fn: Internal functions
Function, tag-open: Internal functions
Function, tag-parts: Internal functions
Function, tbody: Internal functions
Function, td: Internal functions
Function, textarea: Internal functions
Function, tfoot: Internal functions
Function, th: Internal functions
Function, thead: Internal functions
Function, time: Internal functions
Function, title: Internal functions
Function, tokenized-attribute?: Internal functions
Function, tokenized-attributes-plist: Internal functions
Function, tr: Internal functions
Function, track: Internal functions
Function, trim-ends: Internal functions
Function, u: Internal functions
Function, ul: Internal functions
Function, unmatched?: Internal functions
Function, unvalidated-attribute?: Internal functions
Function, valid-attribute?: Internal functions
Function, valid?: Internal functions
Function, var: Internal functions
Function, video: Internal functions
Function, void?: Internal functions
Function, wbr: Internal functions
Function, whitespace: Internal functions
Function, write-raw: Internal functions
Function, xss-escape: Internal functions

G
Generic Function, elastic-newline: Internal generic functions
Generic Function, ensure-html-stream: Internal generic functions
Generic Function, fire-elastic-newline: Internal generic functions
Generic Function, html: Exported generic functions
Generic Function, html-length: Exported generic functions
Generic Function, html-stream-column: Internal generic functions
Generic Function, html-stream.base-stream: Internal generic functions
Generic Function, html-stream?: Internal generic functions
get-html-path: Exported functions
get-indent: Internal functions
global-attribute?: Internal functions

H
h*: Internal macros
h1: Internal functions
h2: Internal functions
h3: Internal functions
h4: Internal functions
h5: Internal functions
h6: Internal functions
head: Internal functions
header: Internal functions
heading-depth: Internal functions
heading-depth-heading: Internal functions
hgroup: Internal functions
hr: Internal functions
html: Exported generic functions
html: Exported generic functions
html: Exported generic functions
html: Exported generic functions
html: Exported generic functions
html: Exported generic functions
html: Exported generic functions
html: Exported generic functions
html: Exported generic functions
html: Internal functions
html-length: Exported generic functions
html-length: Exported generic functions
html-length*: Internal functions
html-stream-column: Internal generic functions
html-stream-column: Internal generic functions
html-stream-column: Internal generic functions
html-stream.base-stream: Internal generic functions
html-stream.base-stream: Internal generic functions
html-stream.base-stream: Internal generic functions
html-stream?: Internal generic functions
html-stream?: Internal generic functions
html-stream?: Internal generic functions

I
i: Internal functions
iframe: Internal functions
img: Internal functions
inline?: Internal functions
input: Internal functions
ins: Internal functions
intersperse: Internal functions
invalid?: Internal functions

J
join-tokens: Internal compiler macros
join-tokens: Internal functions

K
kbd: Internal functions
keygen: Internal functions

L
label: Internal functions
lambda-list-vars: Internal functions
legend: Internal functions
li: Internal functions
link: Internal functions
literal?: Internal functions

M
Macro, catch-output: Internal macros
Macro, define-all-tags: Internal macros
Macro, define-tag: Internal macros
Macro, deftag: Exported macros
Macro, do-words: Internal macros
Macro, dynamic-tag: Exported macros
Macro, h*: Internal macros
Macro, with-html: Exported macros
Macro, with-html-string: Exported macros
Macro, with-space: Internal macros
Macro, with-tag: Internal macros
Macro, without-trailing-space: Internal macros
main: Internal functions
make-attr-setter: Internal functions
make-cdata: Internal functions
make-comment: Internal functions
make-doctype: Internal functions
make-head: Internal functions
make-html: Internal functions
make-html-stream: Internal functions
map: Internal functions
mark: Internal functions
maybe-wrap: Internal functions
menu: Internal functions
meta: Internal functions
meter: Internal functions
Method, elastic-newline: Internal generic functions
Method, elastic-newline: Internal generic functions
Method, ensure-html-stream: Internal generic functions
Method, ensure-html-stream: Internal generic functions
Method, fire-elastic-newline: Internal generic functions
Method, fire-elastic-newline: Internal generic functions
Method, html: Exported generic functions
Method, html: Exported generic functions
Method, html: Exported generic functions
Method, html: Exported generic functions
Method, html: Exported generic functions
Method, html: Exported generic functions
Method, html: Exported generic functions
Method, html: Exported generic functions
Method, html-length: Exported generic functions
Method, html-stream-column: Internal generic functions
Method, html-stream-column: Internal generic functions
Method, html-stream.base-stream: Internal generic functions
Method, html-stream.base-stream: Internal generic functions
Method, html-stream?: Internal generic functions
Method, html-stream?: Internal generic functions
mklist: Internal functions
must-quote?: Internal functions

N
nav: Internal functions
needs-close?: Internal functions
needs-quotes?: Internal functions
newline: Internal functions
noscript: Internal functions

O
object: Internal functions
ol: Internal functions
optgroup: Internal functions
option: Internal functions
output: Internal functions

P
p: Internal functions
paragraph?: Internal functions
param: Internal functions
parse-as-markdown: Internal functions
parse-deftag-body: Internal functions
parse-html: Internal functions
permitted-attributes: Internal functions
picture: Internal functions
pre: Internal functions
preformatted?: Internal functions
progress: Internal functions
pseudotag-expand: Internal functions
pseudotag-expander: Internal functions

Q
q: Internal functions

R
remove-substring: Internal functions
rp: Internal functions
rt: Internal functions
ruby: Internal functions

S
s: Internal functions
samp: Internal functions
script: Internal functions
section: Internal functions
select: Internal functions
simplify-tokenized-attributes: Internal functions
small: Internal functions
source: Internal functions
span: Internal functions
splice-allow-other-keys: Internal functions
strong: Internal functions
style: Internal functions
sub: Internal functions
summary: Internal functions
sup: Internal functions

T
table: Internal functions
tag-body-parts: Internal functions
tag-close: Internal functions
tag-fn: Internal functions
tag-open: Internal functions
tag-parts: Internal functions
tbody: Internal functions
td: Internal functions
textarea: Internal functions
tfoot: Internal functions
th: Internal functions
thead: Internal functions
time: Internal functions
title: Internal functions
tokenized-attribute?: Internal functions
tokenized-attributes-plist: Internal functions
tr: Internal functions
track: Internal functions
trim-ends: Internal functions

U
u: Internal functions
ul: Internal functions
unmatched?: Internal functions
unvalidated-attribute?: Internal functions

V
valid-attribute?: Internal functions
valid?: Internal functions
var: Internal functions
video: Internal functions
void?: Internal functions

W
wbr: Internal functions
whitespace: Internal functions
with-html: Exported macros
with-html-string: Exported macros
with-space: Internal macros
with-tag: Internal macros
without-trailing-space: Internal macros
write-raw: Internal functions

X
xss-escape: Internal functions

Jump to:   A   B   C   D   E   F   G   H   I   J   K   L   M   N   O   P   Q   R   S   T   U   V   W   X  

Next: , Previous: , Up: Indexes   [Contents][Index]

A.3 Variables

Jump to:   *   +  
B   C   E   L   N   S  
Index Entry  Section

*
*depth*: Internal special variables
*fill-column*: Exported special variables
*html*: Exported special variables
*html-charset*: Exported special variables
*html-lang*: Exported special variables
*html-path*: Internal special variables
*html-style*: Exported special variables
*ie-attr-props*: Internal special variables
*indent*: Internal special variables
*pending-space*: Internal special variables
*pre*: Internal special variables
*props*: Internal special variables
*tags-pkg*: Internal special variables

+
+storage-for-deflex-var-cdata-end+: Internal constants
+storage-for-deflex-var-cdata-start+: Internal constants
+storage-for-deflex-var-no-break-space+: Internal constants

B
base-stream: Internal classes

C
cdata-end: Internal symbol macros
cdata-start: Internal symbol macros
col: Internal classes
Constant, +storage-for-deflex-var-cdata-end+: Internal constants
Constant, +storage-for-deflex-var-cdata-start+: Internal constants
Constant, +storage-for-deflex-var-no-break-space+: Internal constants

E
elastic-newline: Internal classes

L
last-char: Internal classes
line: Internal classes

N
no-break-space: Internal symbol macros

S
Slot, base-stream: Internal classes
Slot, col: Internal classes
Slot, elastic-newline: Internal classes
Slot, last-char: Internal classes
Slot, line: Internal classes
Special Variable, *depth*: Internal special variables
Special Variable, *fill-column*: Exported special variables
Special Variable, *html*: Exported special variables
Special Variable, *html-charset*: Exported special variables
Special Variable, *html-lang*: Exported special variables
Special Variable, *html-path*: Internal special variables
Special Variable, *html-style*: Exported special variables
Special Variable, *ie-attr-props*: Internal special variables
Special Variable, *indent*: Internal special variables
Special Variable, *pending-space*: Internal special variables
Special Variable, *pre*: Internal special variables
Special Variable, *props*: Internal special variables
Special Variable, *tags-pkg*: Internal special variables
Symbol Macro, cdata-end: Internal symbol macros
Symbol Macro, cdata-start: Internal symbol macros
Symbol Macro, no-break-space: Internal symbol macros

Jump to:   *   +  
B   C   E   L   N   S  

Previous: , Up: Indexes   [Contents][Index]

A.4 Data types

Jump to:   C   H   I   P   S   T  
Index Entry  Section

C
Class, html-stream: Internal classes

H
html-stream: Internal classes

I
index: Internal types

P
Package, spinneret: The spinneret package
Package, spinneret-user: The spinneret-user package
Package, spinneret.tag: The spinneret<dot>tag package

S
spinneret: The spinneret system
spinneret: The spinneret package
spinneret-user: The spinneret-user package
spinneret.tag: The spinneret<dot>tag package
System, spinneret: The spinneret system

T
Type, index: Internal types

Jump to:   C   H   I   P   S   T