Skip to content
DavisDevelopment edited this page Dec 30, 2014 · 3 revisions

Route Descriptions

Route Descriptions are a format for describing a URL or path-location on which you would like a particular bit of code to run. They are used by the Application class's route method.


Route Format

The route format allows many different types of description operations, they are as follows.

Literal Path Definition

The simplest of route-descriptions would be /, which would unify with either '$host/' or '$host/index.html'. Or, for example, the index.html in the home directory: home/index.html. In other words, these types of routes unify with urls that literally match the route.

Wildcard Definitions

Tannus routes allow the use of asterisk (*) wildcards for directory names, filenames, and file-extension-names. For example:

  • * - matches literally any URL

  • */ - matches any URL with one directory name and either no base-name or a base-name of "index.html"

  • *.[extension] - matches any URL with no directory name, which has a base-name at all, and has an extension-name of [extension]. For example, the route *.html would match any top-level URL with an extension-name of .html.

  • [basename].* - matches any URL with no directory name, which has an extension-name at all, and has a basename of [basename]. (e.g. index.* unifies with "index.html" or "index.md" or "index.json")


Parametric Definitions

Tannus routes allow " parameters " to be requested in the route-description, which are then defined by the URL and passed to the Page. They are defined as follows:

  • :filename - matches any URL with no directory-name. Will also define the parameter "filename" and make it available to the Page. For instance, said route would match "index.html", or "fewp-dewp.css". It doesn't care what the value is at all, it's simply there to collect it. Once "matched", one could access the filename parameter with this.parameters.get( "filename" ).

  • :dir/index.html - matches any URL with any directory-name, and base-name of "index.html", while also defining 'dir' as a page-parameter.

Page-Parameters can, however, be referenced more than once, and this is where a bit of validation can take place. Observe:

  • :name/:name - matches any URL in which the directory-name and base-name are the same.

Regular-Expression Routes

With routes, you can even describe a URL with a plain ol' regular expression. Simply pop a regular expression, wrapped in parentheses, anywhere you'd put any other type of route-segment, and it validates the corresponding URL-segment against that regular-expression. For example: (index|home\.html) will match either "index.html" or "home.html"