Safe Haskell | None |
---|
For lack of a better name... a parameterized version of Julius.
- data ShakespeareSettings = ShakespeareSettings {}
- data PreConvert = PreConvert {}
- data PreConversion
- = ReadProcess String [String]
- | Id
- defaultShakespeareSettings :: ShakespeareSettings
- shakespeare :: ShakespeareSettings -> QuasiQuoter
- shakespeareFile :: ShakespeareSettings -> FilePath -> Q Exp
- shakespeareFileDebug :: ShakespeareSettings -> FilePath -> Q Exp
- shakespeareFromString :: ShakespeareSettings -> String -> Q Exp
- type RenderUrl url = url -> QueryParameters -> Text
Documentation
data PreConvert Source
The Coffeescript language compiles down to Javascript. Previously we waited until the very end, at the rendering stage to perform this compilation. Lets call is a post-conversion This had the advantage that all Haskell values were inserted first: for example a value could be inserted that Coffeescript would compile into Javascript. While that is perhaps a safer approach, the advantage is not used in practice: it was that way mainly for ease of implementation. The down-side is the template must be compiled down to Javascript during every request. If instead we do a pre-conversion to compile down to Javascript, we only need to perform the compilation once. During the pre-conversion we first modify all Haskell insertions so that they will be ignored by the Coffeescript compiler (backticks). So %{var} is change to `%{var}` using the preEscapeBegin and preEscapeEnd. preEscapeIgnore is used to not insert backtacks for variable already inside strings - coffeescript will happily ignore them, and won't treat backticks as escaping
shakespeareFile :: ShakespeareSettings -> FilePath -> Q ExpSource