blob: 9f7349b8883d4f7395e25d04feb4ef83efacfa91 [file] [log] [blame]
import 'package:mustache_template/mustache.dart' as m;
import 'node.dart';
import 'parser.dart' as parser;
import 'renderer.dart';
class Template implements m.Template {
Template.fromSource(String source,
{bool lenient = false,
bool htmlEscapeValues = true,
String name,
m.PartialResolver partialResolver,
String delimiters = '{{ }}',
m.ValueResolver valueResolver = m.defaultValueResolver})
: source = source,
_nodes = parser.parse(source, lenient, name, delimiters),
_lenient = lenient,
_htmlEscapeValues = htmlEscapeValues,
_name = name,
_partialResolver = partialResolver,
_valueResolver = valueResolver;
@override
final String source;
final List<Node> _nodes;
final bool _lenient;
final bool _htmlEscapeValues;
final String _name;
final m.PartialResolver _partialResolver;
final m.ValueResolver _valueResolver;
@override
String get name => _name;
@override
String renderString(values) {
var buf = StringBuffer();
render(values, buf);
return buf.toString();
}
@override
void render(values, StringSink sink) {
var renderer = Renderer(sink, [values], _lenient, _htmlEscapeValues,
_partialResolver, _valueResolver, _name, '', source);
renderer.render(_nodes);
}
}
// Expose getter for nodes internally within this package.
List<Node> getTemplateNodes(Template template) => template._nodes;