shakespeare-2.1.0: A toolkit for making compile-time interpolated templates
Safe HaskellSafe-Inferred
LanguageHaskell2010

Text.Hamlet

Synopsis

Plain HTML

type Html = Markup #

shamlet :: QuasiQuoter Source #

"Simple Hamlet" quasi-quoter. May only be used to generate expressions.

Generated expressions have type Html.

>>> putStrLn (renderHtml [shamlet|<div>Hello, world!|])
<div>Hello, world!</div>

shamletFile :: FilePath -> Q Exp Source #

xshamlet :: QuasiQuoter Source #

Like shamlet, but produces XHTML.

xshamletFile :: FilePath -> Q Exp Source #

Like shamletFile, but produces XHTML.

Hamlet

type HtmlUrl url = Render url -> Html Source #

A function generating an Html given a URL-rendering function.

type Render url = url -> [(Text, Text)] -> Text Source #

hamlet :: QuasiQuoter Source #

Hamlet quasi-quoter. May only be used to generate expressions.

Generated expression have type HtmlUrl url, for some url.

data MyRoute = Home

render :: Render MyRoute
render Home _ = "/home"

>>> putStrLn (renderHtml ([hamlet|<a href=@{Home}>Home|] render))
<a href="/home">Home</a>

hamletFile :: FilePath -> Q Exp Source #

hamletFileReload :: FilePath -> Q Exp Source #

Like hamletFile, but the external file is parsed at runtime. Allows for more rapid development, but should not be used in production.

xhamlet :: QuasiQuoter Source #

Like hamlet, but produces XHTML.

xhamletFile :: FilePath -> Q Exp Source #

Like hamletFile, but produces XHTML.

I18N Hamlet

type HtmlUrlI18n msg url = Translate msg -> Render url -> Html Source #

A function generating an Html given a message translator and a URL rendering function.

type Translate msg = msg -> Html Source #

ihamlet :: QuasiQuoter Source #

Hamlet quasi-quoter with internationalization. May only be used to generate expressions.

Generated expressions have type HtmlUrlI18n msg url, for some msg and url.

data MyMsg = Hi | Bye

data MyRoute = Home

renderEnglish :: Translate MyMsg
renderEnglish Hi  = "hi"
renderEnglish Bye = "bye"

renderUrl :: Render MyRoute
renderUrl Home _ = "/home"

>>> putStrLn (renderHtml ([ihamlet|@{Home} _{Hi} _{Bye}|] renderEnglish renderUrl))
<div>/home hi bye <div>

ihamletFile :: FilePath -> Q Exp Source #

ihamletFileReload :: FilePath -> Q Exp Source #

Like ihamletFile, but the external file is parsed at runtime. Allows for more rapid development, but should not be used in production.

Type classes

class ToAttributes a where Source #

Convert some value to a list of attribute pairs.

Methods

toAttributes :: a -> [(Text, Text)] Source #

Instances

Instances details
ToAttributes [(Text, Text)] Source # 
Instance details

Defined in Text.Hamlet

Methods

toAttributes :: [(Text, Text)] -> [(Text, Text)] Source #

ToAttributes [(String, String)] Source # 
Instance details

Defined in Text.Hamlet

Methods

toAttributes :: [(String, String)] -> [(Text, Text)] Source #

ToAttributes (Text, Text) Source # 
Instance details

Defined in Text.Hamlet

Methods

toAttributes :: (Text, Text) -> [(Text, Text)] Source #

ToAttributes (String, String) Source # 
Instance details

Defined in Text.Hamlet

Methods

toAttributes :: (String, String) -> [(Text, Text)] Source #

Internal, for making more

data HamletSettings Source #

Settings for parsing of a hamlet document.

Constructors

HamletSettings 

Fields

  • hamletDoctype :: String

    The value to replace a "!!!" with. Do not include the trailing newline.

  • hamletNewlines :: NewlineStyle

    Should we add newlines to the output, making it more human-readable? Useful for client-side debugging but may alter browser page layout.

  • hamletCloseStyle :: String -> CloseStyle

    How a tag should be closed. Use this to switch between HTML, XHTML or even XML output.

  • hamletDoctypeNames :: [(String, String)]

    Mapping from short names in "$doctype" statements to full doctype.

Instances

Instances details
Lift HamletSettings Source # 
Instance details

Defined in Text.Hamlet.Parse

Methods

lift :: Quote m => HamletSettings -> m Exp

liftTyped :: forall (m :: Type -> Type). Quote m => HamletSettings -> Code m HamletSettings

data NewlineStyle Source #

Constructors

NoNewlines

never add newlines

NewlinesText

add newlines between consecutive text lines

AlwaysNewlines

add newlines everywhere

DefaultNewlineStyle 

Instances

Instances details
Show NewlineStyle Source # 
Instance details

Defined in Text.Hamlet.Parse

Methods

showsPrec :: Int -> NewlineStyle -> ShowS

show :: NewlineStyle -> String

showList :: [NewlineStyle] -> ShowS

Lift NewlineStyle Source # 
Instance details

Defined in Text.Hamlet.Parse

Methods

lift :: Quote m => NewlineStyle -> m Exp

liftTyped :: forall (m :: Type -> Type). Quote m => NewlineStyle -> Code m NewlineStyle

defaultHamletSettings :: HamletSettings Source #

Defaults settings: HTML5 doctype and HTML-style empty tags.

data Env Source #

Constructors

Env 

Fields

  • urlRender :: Maybe ((Exp -> Q Exp) -> Q Exp)
     
  • msgRender :: Maybe ((Exp -> Q Exp) -> Q Exp)
     

data HamletRules Source #

Constructors

HamletRules 

Fields

data CloseStyle Source #

Instances

Instances details
Lift (String -> CloseStyle) Source # 
Instance details

Defined in Text.Hamlet.Parse

Methods

lift :: Quote m => (String -> CloseStyle) -> m Exp

liftTyped :: forall (m :: Type -> Type). Quote m => (String -> CloseStyle) -> Code m (String -> CloseStyle)

Used by generated code

condH :: Monad m => [(Bool, m ())] -> Maybe (m ()) -> m () Source #

Checks for truth in the left value in each pair in the first argument. If a true exists, then the corresponding right action is performed. Only the first is performed. In there are no true values, then the second argument is performed, if supplied.

maybeH :: Monad m => Maybe v -> (v -> m ()) -> Maybe (m ()) -> m () Source #

Runs the second argument with the value in the first, if available. Otherwise, runs the third argument, if available.

attrsToHtml :: [(Text, Text)] -> Html Source #

low-level