ginger-0.5.2.1: 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.

data Macro Source #

A macro definition ( {% macro %} )

Constructors

Macro 

data Block Source #

A block definition ( {% block %} )

Constructors

Block 

Fields

data Statement Source #

Ginger statements.

Constructors

MultiS [Statement]

A sequence of multiple statements

ScopedS Statement

Run wrapped statement in a local scope

IndentS Expression Statement

Establish an indented context around the wrapped statement

LiteralS Html

Literal output (anything outside of any tag)

InterpolationS Expression

{{ expression }}

ExpressionS Expression

Evaluate expression

IfS Expression Statement Statement

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

SwitchS Expression [(Expression, Statement)] Statement

{% switch expression %}{% case expression %}statement{% endcase %}...{% default %}statement{% enddefault %}{% endswitch %}

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)

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)

LambdaE [Text] Expression

(foo, bar) -> expr

TernaryE Expression Expression Expression

expr ? expr : expr

DoE Statement

do { statement; }