jinja 0.5.0-dev.25 copy "jinja: ^0.5.0-dev.25" to clipboard
jinja: ^0.5.0-dev.25 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.4.0 introduces breaking changes #

See CHANGELOG.md.

Documentation #

It is mostly similar to Jinja templates documentation, differences provided below. work in progress.

Differences with Python version #

  • BigInt and complex numbers are not supported.
  • 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 for object.attribute and item for object[item] expressions.
  • Not yet supported:
    • Slices and negative indexes
    • Conditional and variable extends statement variants
    • Choice, ignore missing and variable include statement variants
  • 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'] }}.
  • 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: #

  • Environment
    • constructor
      • extensions
      • selectAutoescape
    • addExtension
    • compileExpression
    • policies
  • Template:
    • generate
    • stream
    • await support
  • HTML Escaping
    • Automatic
  • List of Control Structures
    • Macros 🔥
    • Call 🔥
    • Import
  • Loaders
    • PackageLoader (VM)
    • ...
  • Extensions
    • i18n
    • Expression Statement
    • Loop Controls
    • Debug Statement
  • Template compiler (builder)
  • ...

Done: #

  • Variables
  • Filters
  • Tests
  • Comments
  • Whitespace Control
  • Escaping
  • Line Statements
    • Comments
    • Blocks
  • Template Inheritance
    • Base Template
    • Child Template
    • Super Blocks
    • Nesting extends
    • Named Block End-Tags
    • Block Nesting and Scope
  • HTML Escaping
    • Manual
  • List of Control Structures
    • For
    • If
    • Filters
    • Assignments
    • Block Assignments
    • Extends
    • Blocks
    • Include
  • Import Context Behavior
    • Include
  • Expressions with filters (not all) and tests
  • List of Global Functions
    • list
    • namespace
    • print
    • range
  • Loaders
    • FileSystemLoader
    • MapLoader (DictLoader)
  • Extensions
    • Do Statement
    • With Statement
  • Autoescape Overrides

Support #

Post issues and feature requests on the GitHub issue tracker.

32
likes
0
pub points
87%
popularity

Publisher

unverified uploader

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

Repository (GitHub)
View/report issues

Funding

Consider supporting this project:

www.buymeacoffee.com

License

unknown (LICENSE)

Dependencies

html_unescape, meta, path, string_scanner, textwrap

More

Packages that depend on jinja