MyNixOS website logo
Description

Utility to generate routes for use with yesod-routes.

Most of the defacto Haskell web routing libraries are either linear in complexity, or require lots of extra extensions, like Template Haskell.

Luckily, yesod-routes has Yesod.Routes.Dispatch, which is a very clean, efficient, and extension-free router. Writing routes out in code can, however, be quite verbose. This utility is a code generator to produce routes compatible with Yesod.Routes.Dispatch from a nice input format.

Example:

GET /       => home
GET /post/: => showPost
PUT /*      => updateSomething
./routeGenerator -r -m SomeModule routes.txt

Will generate routes that map the correct HTTP verb (which you should pass as a prepended "path segment" to your Dispatch) and path to functions imported from the module specified in the second parameter.

A colon matches any path segment, and passes the matched segment through to the specified function, passing each match segment in order. The expected type of the segment is inferred from the type of the function. If the segment cannot be parsed as that type, the path does not match. Parsing is done with Web.PathPieces.fromPathPiece.

An asterisk at the end of the path causes rhHasMulti to be set to True, meaning that any path segments after what has been specified will be allowed.

Metadata

Version

0.6.1

License

Unknown

Platforms (75)

    Darwin
    FreeBSD
    Genode
    GHCJS
    Linux
    MMIXware
    NetBSD
    none
    OpenBSD
    Redox
    Solaris
    WASI
    Windows
Show all
  • aarch64-darwin
  • aarch64-genode
  • aarch64-linux
  • aarch64-netbsd
  • aarch64-none
  • aarch64_be-none
  • arm-none
  • armv5tel-linux
  • armv6l-linux
  • armv6l-netbsd
  • armv6l-none
  • armv7a-darwin
  • armv7a-linux
  • armv7a-netbsd
  • armv7l-linux
  • armv7l-netbsd
  • avr-none
  • i686-cygwin
  • i686-darwin
  • i686-freebsd
  • i686-genode
  • i686-linux
  • i686-netbsd
  • i686-none
  • i686-openbsd
  • i686-windows
  • javascript-ghcjs
  • loongarch64-linux
  • m68k-linux
  • m68k-netbsd
  • m68k-none
  • microblaze-linux
  • microblaze-none
  • microblazeel-linux
  • microblazeel-none
  • mips-linux
  • mips-none
  • mips64-linux
  • mips64-none
  • mips64el-linux
  • mipsel-linux
  • mipsel-netbsd
  • mmix-mmixware
  • msp430-none
  • or1k-none
  • powerpc-netbsd
  • powerpc-none
  • powerpc64-linux
  • powerpc64le-linux
  • powerpcle-none
  • riscv32-linux
  • riscv32-netbsd
  • riscv32-none
  • riscv64-linux
  • riscv64-netbsd
  • riscv64-none
  • rx-none
  • s390-linux
  • s390-none
  • s390x-linux
  • s390x-none
  • vc4-none
  • wasm32-wasi
  • wasm64-wasi
  • x86_64-cygwin
  • x86_64-darwin
  • x86_64-freebsd
  • x86_64-genode
  • x86_64-linux
  • x86_64-netbsd
  • x86_64-none
  • x86_64-openbsd
  • x86_64-redox
  • x86_64-solaris
  • x86_64-windows