ginger-0.1.2.0: An implementation of the Jinja2 template language in Haskell

Safe HaskellNone
LanguageHaskell2010

Text.Ginger.AST

Description

Implements Ginger's Abstract Syntax Tree.

Synopsis

Documentation

type VarName = Text Source

A context variable name.

data Template Source

Top-level data structure, representing a fully parsed template.

Instances

data Macro Source

A macro definition ( {% macro %} )

Constructors

Macro 

Instances

data Block Source

A block definition ( {% block %} )

Constructors

Block 

Fields

blockBody :: Statement
 

Instances

data Statement Source

Ginger statements.

Constructors

MultiS [Statement]

A sequence of multiple statements

ScopedS Statement

Run wrapped statement in a local scope

LiteralS Html

Literal output (anything outside of any tag)

InterpolationS Expression

{{ expression }}

IfS Expression Statement Statement

{% if expression %}statement{% else %}statement{% endif %}

ForS (Maybe VarName) VarName Expression Statement

{% for index, varname in expression %}statement{% endfor %}

SetVarS VarName Expression

{% set varname = expr %}

DefMacroS VarName Macro

{% macro varname %}statements{% endmacro %}

BlockRefS VarName 
PreprocessedIncludeS Template

{% include "template" %}

NullS

The do-nothing statement (NOP)

Instances

data Expression Source

Expressions, building blocks for the expression minilanguage.

Constructors

StringLiteralE Text

String literal expression: "foobar"

NumberLiteralE Scientific

Numeric literal expression: 123.4

BoolLiteralE Bool

Boolean literal expression: true

NullLiteralE

Literal null

VarE VarName

Variable reference: foobar

ListE [Expression]

List construct: [ expr, expr, expr ]

ObjectE [(Expression, Expression)]

Object construct: { expr: expr, expr: expr, ... }

MemberLookupE Expression Expression

foo[bar] (also dot access)

CallE Expression [(Maybe Text, Expression)]

foo(bar=baz, quux)