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.

Brain dump (change at will)

This is heavily based on Apache URL rewrite module. Many consider this a very complicated language. So it may not be suitable.

The dispatcher matches elements of a request against a sequence of rules. The first rule that matches is used identify the Quilt document that will handle the request.

Elements of a Request

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

Accessing request elements

port
header[_key_]
method

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)

Clone this wiki locally