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; |