Text.Julius

shakespeare-2.0.8: A toolkit for making compile-time interpolated templates

Safe Haskell | None
Language | Haskell98

Text.Julius

Contents

- Functions
  - Template-Reading Functions
- Datatypes
- Typeclass for interpolated variables
  - Rendering Functions
  - internal, used by `Coffee`
  - internal

Description

A Shakespearean module for Javascript templates, introducing type-safe, compile-time variable and url interpolation.--

You might consider trying `Typescript` or `Coffee` which compile down to Javascript.

Further reading: http://www.yesodweb.com/book/shakespearean-templates

Synopsis

- js :: QuasiQuoter
- julius :: QuasiQuoter
- juliusFile :: FilePath -> Q Exp
- jsFile :: FilePath -> Q Exp
- juliusFileDebug :: FilePath -> Q Exp
- jsFileDebug :: FilePath -> Q Exp
- juliusFileReload :: FilePath -> Q Exp
- jsFileReload :: FilePath -> Q Exp
- type JavascriptUrl url = (url -> [(Text, Text)] -> Text) -> Javascript
- newtype Javascript = Javascript {
  - unJavascript :: Builder
  }
- newtype RawJavascript = RawJavascript Builder
- class ToJavascript a where
  - toJavascript :: a -> Javascript
- class RawJS a where
  - rawJS :: a -> RawJavascript
- renderJavascript :: Javascript -> Text
- renderJavascriptUrl :: (url -> [(Text, Text)] -> Text) -> JavascriptUrl url -> Text
- javascriptSettings :: Q ShakespeareSettings
- juliusUsedIdentifiers :: String -> [(Deref, VarType)]
- asJavascriptUrl :: JavascriptUrl url -> JavascriptUrl url

# Functions

## Template-Reading Functions

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

js :: QuasiQuoter

julius :: QuasiQuoter

juliusFile :: FilePath -> Q Exp

jsFile :: FilePath -> Q Exp

juliusFileDebug :: FilePath -> Q Exp

Deprecated: Please use juliusFileReload instead.

jsFileDebug :: FilePath -> Q Exp

Deprecated: Please use jsFileReload instead.

juliusFileReload :: FilePath -> Q Exp

jsFileReload :: FilePath -> Q Exp

# Datatypes

type JavascriptUrl url = (url -> [(Text, Text)] -> Text) -> Javascript

Return type of template-reading functions.

newtype Javascript

Newtype wrapper of `Builder`.

Constructors

Javascript |
Fields unJavascript :: Builder

Instances

Monoid Javascript |

newtype RawJavascript

Constructors

RawJavascript Builder |

Instances

ToJavascript RawJavascript |

# Typeclass for interpolated variables

class ToJavascript a where

A typeclass for types that can be interpolated in CoffeeScript templates.

Methods

toJavascript :: a -> Javascript

Instances

ToJavascript Bool |
ToJavascript Value |
ToJavascript RawJavascript |

class RawJS a where

Methods

rawJS :: a -> RawJavascript

Instances

RawJS Bool |
RawJS Builder |
RawJS Text |
RawJS Text |
RawJS [Char] |

## Rendering Functions

renderJavascript :: Javascript -> Text

renderJavascriptUrl :: (url -> [(Text, Text)] -> Text) -> JavascriptUrl url -> Text

render with route interpolation. If using this module standalone, apart from type-safe routes, a dummy renderer can be used:

    renderJavascriptUrl (\_ _ -> undefined) javascriptUrl

When using Yesod, a renderer is generated for you, which can be accessed within the GHandler monad: `getUrlRenderParams`.

## internal, used by `Coffee`

javascriptSettings :: Q ShakespeareSettings

## internal

juliusUsedIdentifiers :: String -> [(Deref, VarType)]

Determine which identifiers are used by the given template, useful for creating systems like yesod devel.

asJavascriptUrl :: JavascriptUrl url -> JavascriptUrl url