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