hastache-0.1.1: Haskell implementation of Mustache templates

Text.Hastache.Context

Description

Hastache context helpers

Synopsis

Documentation

mkStrContext :: Monad m => (String -> MuType m) -> MuContext mSource

Make Hastache context from String -> MuType function

mkGenericContext :: (Monad m, Data a) => a -> MuContext mSource

Make Hastache context from Data.Data deriving type

data InternalData = InternalData {
    someField       :: String,
    anotherField    :: Int
    } deriving (Data, Typeable, Show)

data Example = Example {
    stringField     :: String,
    intField        :: Int,
    dataField       :: InternalData,
    simpleListField :: [String],
    dataListField   :: [InternalData]
    } deriving (Data, Typeable, Show)

example = hastacheStr defaultConfig (encodeStr template) 
    (mkGenericContext context)
    where
    template = concat [
        "string: {{stringField}} \n",
        "int: {{intField}} \n",
        "data: {{dataField.someField}}, {{dataField.anotherField}} \n",
        "simple list: {{#simpleListField}}{{.}} {{/simpleListField}} \n",
        "data list: \n",
        "{{#dataListField}}\n",
        " * {{someField}}, {{anotherField}} \n",
        "{{/dataListField}}\n"]
    context = Example { stringField = "string value", intField = 1, 
        dataField = InternalData "val" 123, simpleListField = ["a","b","c"],
        dataListField = [InternalData "aaa" 1, InternalData "bbb" 2] }

Result:

string: string value 
int: 1 
data: val, 123 
simple list: a b c  
data list: 
 * aaa, 1 
 * bbb, 2