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

ProjectForge.Compile

Description

Functions for compiling Project and File Templates

Synopsis

Compiling project templates

Template compilation marshals Data.Text.Text into Templates. The utilities here extend the utilities provided by Text.Mustache to create FileTemplates and ProjectTemplates.

compileFileTemplate :: MonadIO m => (FilePath, Text) -> m FileTemplate Source #

Create a FileTemplate from a (FilePath, Text) pair. Both the FilePath and Text may contain mustache variables.

This function returns an error (within MonadIO) in the case that compileMustacheText fails to compile either the fileNameTemplate or fileContentsTemplate.

For example, the following code:

compileFileTemplate ("{{prjId}}.md",  "{{prjId}}")

produces the following template:

MkFileTemplate
    { fileNameTemplate = Template
        { templateActual = PName
            { unPName = Filename }
        , templateCache = fromList
            [
                ( PName
                    { unPName = Filename }
                ,
                    [ EscapedVar
                        ( Key
                            { unKey = [ "prjId" ] }
                        )
                    , TextBlock ".md"
                    ]
                )
            ]
        }
    , fileContentsTemplate = Template
        { templateActual = PName
            { unPName = Contents }
        , templateCache = fromList
            [
                ( PName
                    { unPName = Contents }
                ,
                    [ EscapedVar
                        ( Key
                            { unKey = [ "prjId" ] }
                        )
                    ]
                )
            ]
        }
    }

Re-exports