project-forge-0.2.0.0: A project initialization library
Safe HaskellSafe-Inferred
LanguageHaskell2010

ProjectForge.Render

Description

Functions for rendering Project and File Templates.

Rendering a Template interpolates the partial values in a Template with values from a Value.

Synopsis

Rendering templates

renderFileTemplate Source #

Arguments

:: (MonadLogger m, MonadIO m) 
=> RenderTemplateOpts 
-> FileTemplate 
-> Value

values to interpolate into the template

-> m (FilePath, Text) 

Renders a FileTemplate using renderMustache. Values to be input into the template are presented via a Value representation.

>>> import Data.Aeson (toJSON, object, (.=))
>>> import ProjectForge.Compile
>>> import Blammo.Logging.Simple
>>> let settings = toJSON (object [ "prjId" .= "P0000"])
>>> let exampleTemplate = compileFileTemplate ("{{prjId}}.md",  "This is {{prjId}}")
>>> runSimpleLoggingT .  (\x -> renderFileTemplate defaultRenderTemplateOpts x settings) =<< exampleTemplate
([],("P0000.md","This is P0000"))

renderProjectTemplate Source #

Arguments

:: (MonadIO m, MonadLogger m) 
=> RenderTemplateOpts 
-> ProjectTemplate 
-> Value

values to interpolate into each FileTemplate of the ProjectTemplate

-> m [(FilePath, Text)] 

Renders a ProjectTemplate, returning a list of filepaths and file contents that may be written to files.

writeTemplateResult :: (MonadLogger m, MonadIO m) => [(FilePath, Text)] -> m () Source #

Utility for writing the results for renderProjectTemplate to files.

Rendering Options and Exception Handling

data RenderWarnHandling Source #

Flag for how to handle any 'Text.Stache.Type.MustacheWarning's that may result from renderFileTemplate.

Constructors

WarningAsError

lift mustache warnings to errors

Ignore

Ignore warnings

data RenderException Source #

New type wrapper for a list of 'Text.Stache.Type.MustacheWarning's so that it can be made an instance of Exception.