mustache 0.1.8

Mustache templates

A Dart library to parse and render mustache templates.

Build Status


    import 'package:mustache/mustache.dart' as mustache;

    main() {
        var source = '{{#names}}<div>{{lastname}}, {{firstname}}</div>{{/names}}';
        var template = mustache.parse(source);
        var output = template.renderString({'names': [
            {'firstname': 'Greg', 'lastname': 'Lowe'},
            {'firstname': 'Bob', 'lastname': 'Johnson'}


Template parse(String source, {bool lenient : false});

abstract class Template {
    String renderString(values, {bool lenient : false, bool htmlEscapeValues : true});
    void render(values, StringSink sink, {bool lenient : false, bool htmlEscapeValues : true});

Once a template has been created it can be rendered any number of times.

Both parse and render throw a FormatException if there is a problem with the template or rendering the values.

When lenient mode is enabled tag names may use any characters, otherwise only a-z, A-Z, 0-9, underscore and minus. Lenient mode will also silently ignore nulls passed as values.

By default all variables are html escaped, this behaviour can be changed by passing htmlEscapeValues : false.


 Variables             {{var-name}}
 Sections              {{#section}}Blah{{/section}}
 Inverse sections      {{^section}}Blah{{/section}}
 Comments              {{! Not output. }}
 Unescaped variables   {{{var-name}}} and {{&var-name}}

See the mustache templates tutorial for more information.

Passing all mustache specification tests for interpolation, sections, inverted, comments. The following sections are not implemented: partials, lambdas and delimeters.

To do

Lenient nulls in inverse sections - see commented out test.
Partial tags   {{>partial}}
Allow functions as values (Lambdas)
Set Delimiter tags

1. Depend on it

Add this to your package's pubspec.yaml file:

  mustache: ">=0.1.8 <0.2.0"

If your package is an application package you should use any as the version constraint.

2. Install it

If you're using the Dart Editor, choose:

Menu > Tools > Pub Install

Or if you want to install from the command line, run:

$ pub install

3. Import it

Now in your Dart code, you can use:

import 'package:mustache/mustache.dart';


Mustache template library


Email Greg Lowe