web-routes-0.22.0: Library for maintaining correctness and composability of URLs within an application.




data Site url a Source

A site groups together the three functions necesary to make an application:

  • A function to convert from the URL type to path segments.
  • A function to convert from path segments to the URL, if possible.
  • A function to return the application for a given URL.

There are two type parameters for Site: the first is the URL datatype, the second is the application datatype. The application datatype will depend upon your server backend.




handleSite :: (url -> String) -> url -> a

Return the appropriate application for a given URL.

The first argument is a function which will give an appropriate URL (as a String) for a URL datatype. This is usually constructed by a combination of formatPathSegments and the prepending of an absolute application root.

Well behaving applications should use this function to generating all internal URLs.

formatPathSegments :: url -> [String]

This function must be the inverse of parsePathSegments.

parsePathSegments :: [String] -> Either String url

This function must be the inverse of formatPathSegments.


Functor (Site url) 

setDefault :: url -> Site url a -> Site url aSource

Override the "default" URL, ie the result of parsePathSegments [].



:: String

application root, with trailing slash

-> Site url a 
-> String

path info, leading slash stripped

-> Either String a 

Retrieve the application to handle a given request.