Allow arbitrary objects for truthiness checks in lenient mode, run dartfmt
diff --git a/lib/src/renderer.dart b/lib/src/renderer.dart
index c57f219..36f646b 100644
--- a/lib/src/renderer.dart
+++ b/lib/src/renderer.dart
@@ -166,6 +166,10 @@
context.close();
if (output != null) write(output);
+ } else if (lenient) {
+ // We consider all other values as 'true' in lenient mode.
+ _renderWithValue(node, null);
+
} else {
throw error('Invalid value type for section, '
'section: ${node.name}, '
@@ -196,6 +200,10 @@
// Do nothing.
//TODO in strict mode should this be an error?
+ } else if (lenient) {
+ // We consider all other values as 'true' in lenient mode. Since this
+ // is an inverted section, we do nothing.
+
} else {
throw error(
'Invalid value type for inverse section, '
diff --git a/test/mustache_test.dart b/test/mustache_test.dart
index 9f66358..a4548e5 100644
--- a/test/mustache_test.dart
+++ b/test/mustache_test.dart
@@ -55,6 +55,11 @@
expect(ex is TemplateException, isTrue);
expect(ex.message, startsWith(BAD_VALUE_SECTION));
});
+ test('Invalid value - lenient mode', () {
+ var output = parse('{{#var}}_{{var}}_{{/var}}', lenient: true)
+ .renderString({'var' : 42});
+ expect(output, equals('_42_'));
+ });
test('True', () {
var output = parse('{{#section}}_ok_{{/section}}')
@@ -225,6 +230,11 @@
expect(ex is TemplateException, isTrue);
expect(ex.message, startsWith(BAD_VALUE_INV_SECTION));
});
+ test('Invalid value - lenient mode', () {
+ var output = parse('{{^var}}_ok_{{/var}}', lenient: true)
+ .renderString({'var' : 42});
+ expect(output, equals(''));
+ });
test('True', () {
var output = parse('{{^section}}_ok_{{/section}}')
.renderString({"section": true});