shakespeare- A toolkit for making compile-time interpolated templates

Safe HaskellNone




A Shakespearean module for Roy, introducing type-safe, compile-time variable and url interpolation. It is exactly the same as Text.Julius, except that the template is first compiled to Javascript with the system tool roy.

To use this module, roy must be installed on your system.

If you interpolate variables, the template is first wrapped with a function containing javascript variables representing shakespeare variables, then compiled with roy, and then the value of the variables are applied to the function. This means that in production the template can be compiled once at compile time and there will be no dependency in your production system on roy.

Your code:

let b = 1
console.log(#{a} + b)

Final Result:

  var b = 1;
  console.log(shakespeare_var_a + b);

Further reading:

  1. Shakespearean templates:
  2. Roy:



Template-Reading Functions

These QuasiQuoter and Template Haskell methods return values of type JavascriptUrl url. See the Yesod book for details.

roy :: QuasiQuoter Source

Read inline, quasiquoted Roy.

royFile :: FilePath -> Q Exp Source

Read in a Roy template file. This function reads the file once, at compile time.

royFileReload :: FilePath -> Q Exp Source

Read in a Roy template file. This impure function uses unsafePerformIO to re-read the file on every call, allowing for rapid iteration.

roySettings :: Q ShakespeareSettings Source

The Roy language compiles down to Javascript. We do this compilation once at compile time to avoid needing to do it during the request. We call this a preConversion because other shakespeare modules like Lucius use Haskell to compile during the request instead rather than a system call.