Skip to content

Quilt dispatch language

StoneyJackson edited this page Feb 11, 2012 · 9 revisions

(Very rough draft; hack away!)

Reference material

Overview

The dispatcher inspects elements of a request (its URI, its headers, maybe even its body), and identifies the quilt document to handle the request. Additionally, it may be desirable to allow the processor to pass variables to the Quilt document, thus parameterizing the Quilt document. These might include URIs to content.

Elements of a Request

  • uri
    • scheme
    • authority
      • domain_name
      • port
      • ip
    • path
    • fragment
    • query_string
  • header
  • method

Accessing request elements

port
header[_key_]
method

Dispatch rules

If all the above conditions match, load the URI following => with the specified, space-delimited, named parameters. \1 is a back-reference to the first grouping match in the above regular expressions. Named groups are also possible via (?P...), and back-referenced as \g.

domain_name =^github.com$     /* domain name exists and is github.com */
header[_gh_sess] !^$          /* header _gh_sess exists is not empty */
path =^/([^/]*)/.*$           /* path exists and begins with /accounts/ */
=> /\1/pattern.quilt (content_base=/content/\1 css_base=/css/\1)

Operators are based on Apache rewrite rule syntax. Regular expressions grouping and back-referencing are based on Python syntax.

Clone this wiki locally