Safe Haskell | Safe-Infered |
---|
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.ByteString.Lazy as LZ main = do res <- hastacheStr defaultConfig (encodeStr template) (mkStrContext context) LZ.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.ByteString.Lazy as LZ 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) LZ.putStrLn res where template = "Hello, {{name}}!\n\nYou have {{unread}} unread messages." inf = Info "Haskell" 100
- hastacheStr :: MonadIO m => MuConfig -> ByteString -> MuContext m -> m ByteString
- hastacheFile :: MonadIO m => MuConfig -> FilePath -> MuContext m -> m ByteString
- hastacheStrBuilder :: MonadIO m => MuConfig -> ByteString -> MuContext m -> m Builder
- hastacheFileBuilder :: MonadIO m => MuConfig -> FilePath -> MuContext m -> m Builder
- type MuContext m = ByteString -> MuType m
- data MuType m
- = forall a . MuVar a => MuVariable a
- | MuList [MuContext m]
- | MuBool Bool
- | forall a . MuVar a => MuLambda (ByteString -> a)
- | forall a . MuVar a => MuLambdaM (ByteString -> m a)
- | MuNothing
- data MuConfig = MuConfig {}
- class Show a => MuVar a where
- toLByteString :: a -> ByteString
- isEmpty :: a -> Bool
- htmlEscape :: ByteString -> ByteString
- emptyEscape :: ByteString -> ByteString
- defaultConfig :: MuConfig
- encodeStr :: String -> ByteString
- encodeStrLBS :: String -> ByteString
- decodeStr :: ByteString -> String
- decodeStrLBS :: ByteString -> String
Documentation
:: MonadIO m | |
=> MuConfig | Configuration |
-> ByteString | Template |
-> MuContext m | Context |
-> m ByteString |
Render Hastache template from ByteString
:: MonadIO m | |
=> MuConfig | Configuration |
-> FilePath | Template file name |
-> MuContext m | Context |
-> m ByteString |
Render Hastache template from file
:: MonadIO m | |
=> MuConfig | Configuration |
-> ByteString | Template |
-> MuContext m | Context |
-> m Builder |
Render Hastache template from ByteString
:: MonadIO m | |
=> MuConfig | Configuration |
-> FilePath | Template file name |
-> MuContext m | Context |
-> m Builder |
Render Hastache template from file
forall a . MuVar a => MuVariable a | |
MuList [MuContext m] | |
MuBool Bool | |
forall a . MuVar a => MuLambda (ByteString -> a) | |
forall a . MuVar a => MuLambdaM (ByteString -> m a) | |
MuNothing |
MuConfig | |
|
class Show a => MuVar a whereSource
toLByteString :: a -> ByteStringSource
Convert to Lazy ByteString
Is empty variable (empty string, zero number etc.)
htmlEscape :: ByteString -> ByteStringSource
Escape HTML symbols
emptyEscape :: ByteString -> ByteStringSource
No escape
defaultConfig :: MuConfigSource
Default config: HTML escape function, current directory as template directory, template file extension not specified
encodeStr :: String -> ByteStringSource
Convert String to UTF-8 Bytestring
encodeStrLBS :: String -> ByteStringSource
Convert String to UTF-8 Lazy Bytestring
decodeStr :: ByteString -> StringSource
Convert UTF-8 Bytestring to String
decodeStrLBS :: ByteString -> StringSource
Convert UTF-8 Lazy Bytestring to String