pandoc-1.9.3: Conversion between markup formats

Portabilityportable
Stabilityalpha
MaintainerJohn MacFarlane <jgm@berkeley.edu>
Safe HaskellSafe-Infered

Text.Pandoc.Templates

Description

A simple templating system with variable substitution and conditionals. Example:

 renderTemplate [("name","Sam"),("salary","50,000")] $
    "Hi, $name$.  $if(salary)$You make $$$salary$.$else$No salary data.$endif$" 
 "Hi, John.  You make $50,000."

A slot for an interpolated variable is a variable name surrounded by dollar signs. To include a literal $ in your template, use $$. Variable names must begin with a letter and can contain letters, numbers, _, and -.

The value of a variable will be indented to the same level as the variable.

A conditional begins with $if(variable_name)$ and ends with $endif$. It may optionally contain an $else$ section. The if section is used if variable_name has a non-null value, otherwise the else section is used.

Conditional keywords should not be indented, or unexpected spacing problems may occur.

If a variable name is associated with multiple values in the association list passed to renderTemplate, you may use the $for$ keyword to iterate over them:

 renderTemplate [("name","Sam"),("name","Joe")] $
   "$for(name)$\nHi, $name$.\n$endfor$"
 "Hi, Sam.\nHi, Joe."

You may optionally specify separators using $sep$:

 renderTemplate [("name","Sam"),("name","Joe"),("name","Lynn")] $
   "Hi, $for(name)$$name$$sep$, $endfor$"
 "Hi, Sam, Joe, Lynn."

Synopsis

Documentation

renderTemplate

Arguments

:: TemplateTarget a 
=> [(String, String)]

Assoc. list of values for variables

-> String

Template

-> a 

Renders a template

getDefaultTemplate

Arguments

:: Maybe FilePath

User data directory to search first

-> String

Name of writer

-> IO (Either IOException String) 

Get default template for the specified writer.