-
Notifications
You must be signed in to change notification settings - Fork 0
Quilt dispatch language
(Very rough draft; hack away!)
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.
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)