Text.Hastache.Context
Description
Hastache context helpers
- mkStrContext :: Monad m => (String -> MuType m) -> MuContext m
- mkGenericContext :: (Monad m, Data a) => a -> MuContext m
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",
"data: {{#dataField}}{{someField}}, {{anotherField}}{{/dataField}} \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 data: val, 123 simple list: a b c data list: * aaa, 1 * bbb, 2