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

Safe Haskell | Safe-Inferred
Language | Haskell2010

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

Instances details

Monoid Javascript # |
Instance details Defined in Text.Julius Methods mempty :: Javascript mappend :: Javascript -> Javascript -> Javascript mconcat :: [Javascript] -> Javascript
Semigroup Javascript # |
Instance details Defined in Text.Julius Methods (<>) :: Javascript -> Javascript -> Javascript sconcat :: NonEmpty Javascript -> Javascript stimes :: Integral b => b -> Javascript -> Javascript

newtype RawJavascript #

Constructors

RawJavascript Builder |

#### Instances

Instances details

ToJavascript RawJavascript # |
Instance details Defined in Text.Julius Methods toJavascript :: RawJavascript -> Javascript #

# Typeclass for interpolated variables

class ToJavascript a where #

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

Methods

toJavascript :: a -> Javascript #

#### Instances

Instances details

ToJavascript Value # |
Instance details Defined in Text.Julius Methods toJavascript :: Value -> Javascript #
ToJavascript RawJavascript # |
Instance details Defined in Text.Julius Methods toJavascript :: RawJavascript -> Javascript #
ToJavascript Text # |
Instance details Defined in Text.Julius Methods toJavascript :: Text -> Javascript #
ToJavascript Text # |
Instance details Defined in Text.Julius Methods toJavascript :: Text -> Javascript #
ToJavascript String # |
Instance details Defined in Text.Julius Methods toJavascript :: String -> Javascript #
ToJavascript Bool # |
Instance details Defined in Text.Julius Methods toJavascript :: Bool -> Javascript #

class RawJS a where #

Methods

rawJS :: a -> RawJavascript #

#### Instances

Instances details

RawJS Text # |
Instance details Defined in Text.Julius Methods rawJS :: Text -> RawJavascript #
RawJS Builder # |
Instance details Defined in Text.Julius Methods rawJS :: Builder -> RawJavascript #
RawJS Text # |
Instance details Defined in Text.Julius Methods rawJS :: Text -> RawJavascript #
RawJS Bool # |
Instance details Defined in Text.Julius Methods rawJS :: Bool -> RawJavascript #
RawJS [Char] # |
Instance details Defined in Text.Julius Methods rawJS :: [Char] -> RawJavascript #

## 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 #