nice-html-0.1.2: A fast and nice HTML templating library with distinct compilation/rendering phases.

Safe HaskellNone
LanguageHaskell2010

Text.Html.Nice.Writer

Contents

Synopsis

The markup monad

data Markup p a Source #

A Writer-like monad

Instances

Monad (Markup p) Source # 

Methods

(>>=) :: Markup p a -> (a -> Markup p b) -> Markup p b #

(>>) :: Markup p a -> Markup p b -> Markup p b #

return :: a -> Markup p a #

fail :: String -> Markup p a #

Functor (Markup p) Source # 

Methods

fmap :: (a -> b) -> Markup p a -> Markup p b #

(<$) :: a -> Markup p b -> Markup p a #

Applicative (Markup p) Source # 

Methods

pure :: a -> Markup p a #

(<*>) :: Markup p (a -> b) -> Markup p a -> Markup p b #

(*>) :: Markup p a -> Markup p b -> Markup p b #

(<*) :: Markup p a -> Markup p b -> Markup p a #

(~) * a () => IsString (Markup t a) Source # 

Methods

fromString :: String -> Markup t a #

Basic node types

text :: Text -> Markup t () Source #

Insert text and escape it

lazyText :: Text -> Markup n () Source #

Insert text and escape it

builder :: Builder -> Markup n () Source #

Insert text and escape it

string :: String -> Markup n () Source #

Insert text and escape it

Variants that don't escape their input

textRaw :: Text -> Markup t () Source #

Insert text and don't escape it

lazyTextRaw :: Text -> Markup n () Source #

Insert text and don't escape it

builderRaw :: Builder -> Markup n () Source #

Insert text and don't escape it

stringRaw :: String -> Markup n () Source #

Insert text and don't escape it

Combinators

(!) :: (Markup t a -> Markup t b) -> [Attr t] -> Markup t a -> Markup t b infixl 8 Source #

Add some attributes

dynamic :: p -> Markup p () Source #

dynamicRaw :: p -> Markup p () Source #

sub :: Markup n a -> Markup (FastMarkup n) a Source #

Sub-template

Streaming

stream :: Foldable f => Markup (a -> n) r -> Markup (f a -> FastMarkup n) r Source #

Noting specific elements

data Note a Source #

Constructors

Note 

Fields

Instances

Functor Note Source # 

Methods

fmap :: (a -> b) -> Note a -> Note b #

(<$) :: a -> Note b -> Note a #

Eq a => Eq (Note a) Source # 

Methods

(==) :: Note a -> Note a -> Bool #

(/=) :: Note a -> Note a -> Bool #

Show a => Show (Note a) Source # 

Methods

showsPrec :: Int -> Note a -> ShowS #

show :: Note a -> String #

showList :: [Note a] -> ShowS #

note :: (Markup t a -> Markup t b) -> Markup t a -> Markup t (Note t, b) Source #

Give a node a unique id

Might be handy to build server-side react-esque systems

Compilation

compile :: Markup t a -> FastMarkup t Source #

Compile a Markup. Don't run this multiple times!

runMarkup :: Markup t a -> (a, FastMarkup t) Source #

Compile a Markup. Don't run this multiple times!

Same as compile but lets you use the result.

Internals