ginger2-2.2.0.0: Jinja templates for Haskell
Safe HaskellNone
LanguageHaskell2010

Language.Ginger.AST

Synopsis

Documentation

newtype Identifier Source #

Identifiers are used to represent variable names and object fields.

Constructors

Identifier 

Fields

Instances

Instances details
Arbitrary Identifier Source # 
Instance details

Defined in Language.Ginger.AST

FromJSON Identifier Source # 
Instance details

Defined in Language.Ginger.AST

FromJSONKey Identifier Source # 
Instance details

Defined in Language.Ginger.AST

ToJSON Identifier Source # 
Instance details

Defined in Language.Ginger.AST

ToJSONKey Identifier Source # 
Instance details

Defined in Language.Ginger.AST

IsString Identifier Source # 
Instance details

Defined in Language.Ginger.AST

Show Identifier Source # 
Instance details

Defined in Language.Ginger.AST

Eq Identifier Source # 
Instance details

Defined in Language.Ginger.AST

Ord Identifier Source # 
Instance details

Defined in Language.Ginger.AST

RenderSyntax Identifier Source # 
Instance details

Defined in Language.Ginger.Render

ToScalar Identifier Source # 
Instance details

Defined in Language.Ginger.Value

Applicative m => FromValue Identifier m Source # 
Instance details

Defined in Language.Ginger.Value

ToValue Identifier a Source # 
Instance details

Defined in Language.Ginger.Value

newtype Encoded Source #

Represents an encoded string value, as opposed to a raw (unencoded) string, which we represent as a plain Text.

Constructors

Encoded 

Fields

Instances

Instances details
Arbitrary Encoded Source # 
Instance details

Defined in Language.Ginger.AST

Monoid Encoded Source # 
Instance details

Defined in Language.Ginger.AST

Semigroup Encoded Source # 
Instance details

Defined in Language.Ginger.AST

Show Encoded Source # 
Instance details

Defined in Language.Ginger.AST

Eq Encoded Source # 
Instance details

Defined in Language.Ginger.AST

Methods

(==) :: Encoded -> Encoded -> Bool #

(/=) :: Encoded -> Encoded -> Bool #

Ord Encoded Source # 
Instance details

Defined in Language.Ginger.AST

data Template Source #

A template consists of an optional parent template (specified in the source using the {% extends %} construct), and a body statement.

Constructors

Template 

Instances

Instances details
Show Template Source # 
Instance details

Defined in Language.Ginger.AST

Eq Template Source # 
Instance details

Defined in Language.Ginger.AST

RenderSyntax Template Source # 
Instance details

Defined in Language.Ginger.Render

Monad m => Eval m Template Source # 
Instance details

Defined in Language.Ginger.Interpret.Eval

Methods

eval :: Template -> GingerT m (Value m) Source #

data Block Source #

A block represents a section of a template that can be overridden in derived templates ("template inheritance").

Constructors

Block 

Instances

Instances details
Show Block Source # 
Instance details

Defined in Language.Ginger.AST

Methods

showsPrec :: Int -> Block -> ShowS #

show :: Block -> String #

showList :: [Block] -> ShowS #

Eq Block Source # 
Instance details

Defined in Language.Ginger.AST

Methods

(==) :: Block -> Block -> Bool #

(/=) :: Block -> Block -> Bool #

Ord Block Source # 
Instance details

Defined in Language.Ginger.AST

Methods

compare :: Block -> Block -> Ordering #

(<) :: Block -> Block -> Bool #

(<=) :: Block -> Block -> Bool #

(>) :: Block -> Block -> Bool #

(>=) :: Block -> Block -> Bool #

max :: Block -> Block -> Block #

min :: Block -> Block -> Block #

data Statement Source #

A statement in the template language.

Constructors

PositionedS !SourcePosition !Statement

Statement tagged with a source position

ImmediateS !Encoded

Bare text written in the template, outside of any curly braces

InterpolationS !Expr

An expression interpolation: {{ expr }}

CommentS !Text

Comment: {# comment text #}

ForS !(Maybe Identifier) !Identifier !Expr !(Maybe Expr) !Recursivity !Statement !(Maybe Statement)

@@ {% for keyVar, valueVar in iteree if loopCondition recursive %} body {% else %} body if empty {% endfor %} @@

IfS !Expr !Statement !(Maybe Statement)
{% if condition %}yes branch{% else %}no branch{% endif %}
MacroS !Identifier ![MacroArg] !Statement
{% macro name(args) %}body{% endmacro %}
CallS !Identifier ![Expr] ![(Identifier, Expr)] !Statement
{% call macroName(args) %}body{% endcall %}
FilterS !Identifier ![Expr] ![(Identifier, Expr)] !Statement
{% filter filterName(args, kwargs) %}body{% endfilter %}
SetS !SetTarget !Expr
{% set name=expr %}
SetBlockS !SetTarget !Statement !(Maybe Expr)
{% set name %}body{% endset %}
IncludeS !Expr !IncludeMissingPolicy !IncludeContextPolicy
{% include includee ignore missing with context %}
ImportS !Expr !(Maybe Identifier) !(Maybe [(Identifier, Maybe Identifier)]) !IncludeMissingPolicy !IncludeContextPolicy
{% import importee as localName item, other_item as other ignore missing with context %}
BlockS !Identifier !Block
{% block name with scope required %}body{% endblock %}
WithS ![(Identifier, Expr)] !Statement
{% with defs %}body{% endwith %}
GroupS ![Statement]

Group of statements; not parsed, but needed for combining statements sequentially.

Instances

Instances details
Arbitrary Statement Source # 
Instance details

Defined in Language.Ginger.AST

Show Statement Source # 
Instance details

Defined in Language.Ginger.AST

Eq Statement Source # 
Instance details

Defined in Language.Ginger.AST

Ord Statement Source # 
Instance details

Defined in Language.Ginger.AST

RenderSyntax Statement Source # 
Instance details

Defined in Language.Ginger.Render

Monad m => Eval m Statement Source # 
Instance details

Defined in Language.Ginger.Interpret.Eval

Methods

eval :: Statement -> GingerT m (Value m) Source #

data IncludeMissingPolicy Source #

Instances

Instances details
Arbitrary IncludeMissingPolicy Source # 
Instance details

Defined in Language.Ginger.AST

Bounded IncludeMissingPolicy Source # 
Instance details

Defined in Language.Ginger.AST

Enum IncludeMissingPolicy Source # 
Instance details

Defined in Language.Ginger.AST

Show IncludeMissingPolicy Source # 
Instance details

Defined in Language.Ginger.AST

Eq IncludeMissingPolicy Source # 
Instance details

Defined in Language.Ginger.AST

Ord IncludeMissingPolicy Source # 
Instance details

Defined in Language.Ginger.AST

RenderSyntax IncludeMissingPolicy Source # 
Instance details

Defined in Language.Ginger.Render

data IncludeContextPolicy Source #

Instances

Instances details
Arbitrary IncludeContextPolicy Source # 
Instance details

Defined in Language.Ginger.AST

Bounded IncludeContextPolicy Source # 
Instance details

Defined in Language.Ginger.AST

Enum IncludeContextPolicy Source # 
Instance details

Defined in Language.Ginger.AST

Show IncludeContextPolicy Source # 
Instance details

Defined in Language.Ginger.AST

Eq IncludeContextPolicy Source # 
Instance details

Defined in Language.Ginger.AST

Ord IncludeContextPolicy Source # 
Instance details

Defined in Language.Ginger.AST

RenderSyntax IncludeContextPolicy Source # 
Instance details

Defined in Language.Ginger.Render

class Boolish a where Source #

Methods

is :: a -> Bool Source #

Instances

Instances details
Boolish Recursivity Source # 
Instance details

Defined in Language.Ginger.AST

Methods

is :: Recursivity -> Bool Source #

Boolish Required Source # 
Instance details

Defined in Language.Ginger.AST

Methods

is :: Required -> Bool Source #

Boolish Scoped Source # 
Instance details

Defined in Language.Ginger.AST

Methods

is :: Scoped -> Bool Source #

isNot :: Boolish a => a -> Bool Source #

data Scoped Source #

Constructors

NotScoped 
Scoped 

Instances

Instances details
Arbitrary Scoped Source # 
Instance details

Defined in Language.Ginger.AST

Bounded Scoped Source # 
Instance details

Defined in Language.Ginger.AST

Enum Scoped Source # 
Instance details

Defined in Language.Ginger.AST

Read Scoped Source # 
Instance details

Defined in Language.Ginger.AST

Show Scoped Source # 
Instance details

Defined in Language.Ginger.AST

Eq Scoped Source # 
Instance details

Defined in Language.Ginger.AST

Methods

(==) :: Scoped -> Scoped -> Bool #

(/=) :: Scoped -> Scoped -> Bool #

Ord Scoped Source # 
Instance details

Defined in Language.Ginger.AST

Boolish Scoped Source # 
Instance details

Defined in Language.Ginger.AST

Methods

is :: Scoped -> Bool Source #

RenderSyntax Scoped Source # 
Instance details

Defined in Language.Ginger.Render

data Required Source #

Constructors

Optional 
Required 

Instances

Instances details
Arbitrary Required Source # 
Instance details

Defined in Language.Ginger.AST

Bounded Required Source # 
Instance details

Defined in Language.Ginger.AST

Enum Required Source # 
Instance details

Defined in Language.Ginger.AST

Read Required Source # 
Instance details

Defined in Language.Ginger.AST

Show Required Source # 
Instance details

Defined in Language.Ginger.AST

Eq Required Source # 
Instance details

Defined in Language.Ginger.AST

Ord Required Source # 
Instance details

Defined in Language.Ginger.AST

Boolish Required Source # 
Instance details

Defined in Language.Ginger.AST

Methods

is :: Required -> Bool Source #

RenderSyntax Required Source # 
Instance details

Defined in Language.Ginger.Render

data Recursivity Source #

Constructors

NotRecursive 
Recursive 

Instances

Instances details
Arbitrary Recursivity Source # 
Instance details

Defined in Language.Ginger.AST

Bounded Recursivity Source # 
Instance details

Defined in Language.Ginger.AST

Enum Recursivity Source # 
Instance details

Defined in Language.Ginger.AST

Read Recursivity Source # 
Instance details

Defined in Language.Ginger.AST

Show Recursivity Source # 
Instance details

Defined in Language.Ginger.AST

Eq Recursivity Source # 
Instance details

Defined in Language.Ginger.AST

Ord Recursivity Source # 
Instance details

Defined in Language.Ginger.AST

Boolish Recursivity Source # 
Instance details

Defined in Language.Ginger.AST

Methods

is :: Recursivity -> Bool Source #

data Expr Source #

An expression. Expressions can occur in interpolations ({{ ... }}), and in various places inside statements.

Constructors

PositionedE !SourcePosition !Expr 
NoneE 
BoolE !Bool 
StringLitE !Text 
IntLitE !Integer 
FloatLitE !Double 
StatementE !Statement 
ListE !(Vector Expr) 
DictE ![(Expr, Expr)] 
UnaryE !UnaryOperator !Expr

@UnaryE op rhs

BinaryE !BinaryOperator !Expr !Expr

@BinaryE op lhs rhs

SliceE !Expr !(Maybe Expr) !(Maybe Expr)

@SliceE slicee start length

DotE !Expr !Identifier

@DotE lhs rhs

IsE !Expr !Expr ![Expr] ![(Identifier, Expr)]
IsE scrutinee test args kwargs
CallE !Expr ![Expr] ![(Identifier, Expr)]
CallE callee args kwargs
FilterE !Expr !Expr ![Expr] ![(Identifier, Expr)]
FilterE arg0 filter args kwargs
TernaryE !Expr !Expr !Expr
TernaryE cond yes no
VarE !Identifier 

Instances

Instances details
Arbitrary Expr Source # 
Instance details

Defined in Language.Ginger.AST

Methods

arbitrary :: Gen Expr #

shrink :: Expr -> [Expr] #

Show Expr Source # 
Instance details

Defined in Language.Ginger.AST

Methods

showsPrec :: Int -> Expr -> ShowS #

show :: Expr -> String #

showList :: [Expr] -> ShowS #

Eq Expr Source # 
Instance details

Defined in Language.Ginger.AST

Methods

(==) :: Expr -> Expr -> Bool #

(/=) :: Expr -> Expr -> Bool #

Ord Expr Source # 
Instance details

Defined in Language.Ginger.AST

Methods

compare :: Expr -> Expr -> Ordering #

(<) :: Expr -> Expr -> Bool #

(<=) :: Expr -> Expr -> Bool #

(>) :: Expr -> Expr -> Bool #

(>=) :: Expr -> Expr -> Bool #

max :: Expr -> Expr -> Expr #

min :: Expr -> Expr -> Expr #

RenderSyntax Expr Source # 
Instance details

Defined in Language.Ginger.Render

Monad m => Eval m Expr Source # 
Instance details

Defined in Language.Ginger.Interpret.Eval

Methods

eval :: Expr -> GingerT m (Value m) Source #

pattern TrueE :: Expr Source #

pattern FalseE :: Expr Source #

data UnaryOperator Source #

Constructors

UnopNot 
UnopNegate 

pattern NotE :: Expr -> Expr Source #

pattern NegateE :: Expr -> Expr Source #

data BinaryOperator Source #

Instances

Instances details
Arbitrary BinaryOperator Source # 
Instance details

Defined in Language.Ginger.AST

Bounded BinaryOperator Source # 
Instance details

Defined in Language.Ginger.AST

Enum BinaryOperator Source # 
Instance details

Defined in Language.Ginger.AST

Show BinaryOperator Source # 
Instance details

Defined in Language.Ginger.AST

Eq BinaryOperator Source # 
Instance details

Defined in Language.Ginger.AST

Ord BinaryOperator Source # 
Instance details

Defined in Language.Ginger.AST

RenderSyntax BinaryOperator Source # 
Instance details

Defined in Language.Ginger.Render

pattern PlusE :: Expr -> Expr -> Expr Source #

pattern MinusE :: Expr -> Expr -> Expr Source #

pattern DivE :: Expr -> Expr -> Expr Source #

pattern IntDivE :: Expr -> Expr -> Expr Source #

pattern ModE :: Expr -> Expr -> Expr Source #

pattern MulE :: Expr -> Expr -> Expr Source #

pattern PowerE :: Expr -> Expr -> Expr Source #

pattern EqualE :: Expr -> Expr -> Expr Source #

pattern NotEqualE :: Expr -> Expr -> Expr Source #

pattern GT_E :: Expr -> Expr -> Expr Source #

pattern GTE_E :: Expr -> Expr -> Expr Source #

pattern LT_E :: Expr -> Expr -> Expr Source #

pattern LTE_E :: Expr -> Expr -> Expr Source #

pattern AndE :: Expr -> Expr -> Expr Source #

pattern OrE :: Expr -> Expr -> Expr Source #

pattern InE :: Expr -> Expr -> Expr Source #

pattern IndexE :: Expr -> Expr -> Expr Source #

pattern ConcatE :: Expr -> Expr -> Expr Source #

fuelledList :: Gen a -> Gen [a] Source #