hastache-0.6.0: Haskell implementation of Mustache templates

Safe HaskellNone
LanguageHaskell98

Text.Hastache

Description

Haskell implementation of Mustache templates

See homepage for examples of usage: http://github.com/lymar/hastache

Simplest example:

import Text.Hastache 
import Text.Hastache.Context 
import qualified Data.Text.Lazy.IO as TL

main = do 
    res <- hastacheStr defaultConfig (encodeStr template)  
        (mkStrContext context) 
    TL.putStrLn res 
  where 
    template = "Hello, {{name}}!\n\nYou have {{unread}} unread messages." 
    context "name" = MuVariable "Haskell"
    context "unread" = MuVariable (100 :: Int)

Result:

Hello, Haskell!

You have 100 unread messages.

Using Generics:

import Text.Hastache 
import Text.Hastache.Context 
import qualified Data.Text.Lazy.IO as TL
import Data.Data 
import Data.Generics 
 
data Info = Info { 
    name    :: String, 
    unread  :: Int 
    } deriving (Data, Typeable)

main = do 
    res <- hastacheStr defaultConfig (encodeStr template) 
        (mkGenericContext inf) 
    TL.putStrLn res 
  where 
    template = "Hello, {{name}}!\n\nYou have {{unread}} unread messages."
    inf = Info "Haskell" 100

Synopsis

Documentation

hastacheStr Source

Arguments

:: MonadIO m 
=> MuConfig m

Configuration

-> Text

Template

-> MuContext m

Context

-> m Text 

Render Hastache template from Text

hastacheFile Source

Arguments

:: MonadIO m 
=> MuConfig m

Configuration

-> FilePath

Template file name

-> MuContext m

Context

-> m Text 

Render Hastache template from file

hastacheStrBuilder Source

Arguments

:: MonadIO m 
=> MuConfig m

Configuration

-> Text

Template

-> MuContext m

Context

-> m Builder 

Render Hastache template from Text

hastacheFileBuilder Source

Arguments

:: MonadIO m 
=> MuConfig m

Configuration

-> FilePath

Template file name

-> MuContext m

Context

-> m Builder 

Render Hastache template from file

type MuContext m Source

Arguments

 = Text

Variable name

-> m (MuType m)

Value

Data for Hastache variable

data MuType m Source

Constructors

forall a . MuVar a => MuVariable a 
MuList [MuContext m] 
MuBool Bool 
forall a . MuVar a => MuLambda (Text -> a) 
forall a . MuVar a => MuLambdaM (Text -> m a) 
MuNothing 

Instances

Show (MuType m) 

data MuConfig m Source

Constructors

MuConfig 

Fields

muEscapeFunc :: Text -> Text

Escape function (htmlEscape, emptyEscape etc.)

muTemplateFileDir :: Maybe FilePath

Directory for search partial templates ({{> templateName}})

muTemplateFileExt :: Maybe String

Partial template files extension

muTemplateRead :: FilePath -> m (Maybe Text)

Template retrieval function. Nothing indicates that the template could not be found.

class Show a => MuVar a where Source

Minimal complete definition

toLText

Methods

toLText :: a -> Text Source

Convert to Lazy ByteString

isEmpty :: a -> Bool Source

Is empty variable (empty string, zero number etc.)

htmlEscape :: Text -> Text Source

Escape HTML symbols

emptyEscape :: Text -> Text Source

No escape

defaultConfig :: MonadIO m => MuConfig m Source

Default config: HTML escape function, current directory as template directory, template file extension not specified

encodeStr :: String -> Text Source

Convert String to Text

encodeStrLT :: String -> Text Source

Convert String to Lazy Text

decodeStr :: Text -> String Source

Convert Text to String

decodeStrLT :: Text -> String Source

Convert Lazy Text to String