jinja 0.5.0 copy "jinja: ^0.5.0" to clipboard
jinja: ^0.5.0 copied to clipboard

Jinja2 template engine for Dart. Variables, expressions, control structures and template inheritance.

jinja #

Pub Package Test Status CodeCov

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 with null; there is no boolean parameter.
  • The defined and undefined tests compare values with null.
  • The map filter also compares values with null. Use attribute and item filters for object.attribute and object[item] expressions.
  • If Environment({getAttribute}) is not passed, the getItem 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 #

  • [], +, -, *, /, ~/, % operators
  • object.length getter
  • object.call getter
  • Function.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.

30
likes
120
pub points
86%
popularity

Publisher

unverified uploader

Jinja2 template engine for Dart. Variables, expressions, control structures and template inheritance.

Repository (GitHub)
View/report issues

Documentation

API reference

Funding

Consider supporting this project:

www.buymeacoffee.com

License

MIT (LICENSE)

Dependencies

html_unescape, meta, path, string_scanner, textwrap

More

Packages that depend on jinja