jinja 0.5.0
jinja: ^0.5.0 copied to clipboard
Jinja2 template engine for Dart. Variables, expressions, control structures and template inheritance.
jinja #
Jinja (3.x) server-side template engine port for Dart 2. Variables, expressions, control structures and template inheritance.
Version 0.5.0 introduces breaking changes #
Auto-escaping and related filters and tests have been removed due to the impossibility of extending String
. Use the escape
filter manually or escape values before passing them to the template.
For more information, see CHANGELOG.md
.
Documentation #
It is mostly similar to Jinja templates documentation, differences provided below. work in progress.
Differences with Python version #
- The
default
filter compares values withnull
; there is noboolean
parameter. - The
defined
andundefined
tests compare values withnull
. - The
map
filter also compares values withnull
. Useattribute
anditem
filters forobject.attribute
andobject[item]
expressions. - If
Environment({getAttribute})
is not passed, thegetItem
method will be used. This allows you to use{{ map.key }}
as an expression equivalent to{{ map['key'] }}
. - Not yet supported:
- Slices and negative indexes
- Conditional and variable
extends
statement variants - Choice, ignore missing and variable
include
statement variants
- work in progress
Dynamically invoked members #
[]
,+
,-
,*
,/
,~/
,%
operatorsobject.length
getterobject.call
getterFunction.apply(function, ...)
Example #
import 'package:jinja/jinja.dart';
// ...
var environment = Environment(blockStart: '...', blockEnd: '...');
var template = environment.fromString('...source...');
print(template.render({'key': value}));
// or write directly to StringSink (IOSink, HttpResponse, ...)
template.renderTo(stringSink, {'key': value});
See also examples with conduit and reflectable.
Status: #
TODO: #
Template
:generate
stream
await
support
- Template Inheritance
- Template Objects
- List of Control Structures
- Macros 🔥
- Call 🔥
- Import
- Loaders
- PackageLoader (VM)
- ...
- List of Global Functions
lipsum
dict
cycler
joiner
- Extensions
- i18n
- Loop Controls
- Debug Statement
- Template compiler (builder)
- ...
Done: #
Note: item - unsupported
- Variables
- Filters
forceescape
safe
unsafe
- Tests
escaped
- Comments
- Whitespace Control
- Escaping (only
escape
filter) - Line Statements
- Comments
- Blocks
- Template Inheritance
- Base Template
- Child Template
- Super Blocks
- Nesting extends
- Named Block End-Tags
- Block Nesting and Scope
- Required Blocks
HTML Escaping- List of Control Structures
- For
- If
- Filters
- Assignments
- Block Assignments
- Extends
- Blocks
- Include
- Import Context Behavior
- Include
- Expressions with filters and tests
- Literals
- Math
- Comparisons
- Logic
- Other Operators
- If Expression
- Dart Methods
- List of Global Functions
print
range
list
namespace
- Loaders
- FileSystemLoader
- MapLoader (DictLoader)
- Extensions
- Expression Statement
- With Statement
Autoescape Overrides
Support #
Post issues and feature requests on the GitHub issue tracker.