Index: pkg/template_binding/lib/src/template_iterator.dart |
diff --git a/pkg/template_binding/lib/src/template_iterator.dart b/pkg/template_binding/lib/src/template_iterator.dart |
index 24c1cacacd9c9b0432ae6bc991c05a014d9bd12e..7ef56340c90012c1e0e77417d4275b7ba05948f2 100644 |
--- a/pkg/template_binding/lib/src/template_iterator.dart |
+++ b/pkg/template_binding/lib/src/template_iterator.dart |
@@ -17,13 +17,21 @@ part of template_binding; |
// See: https://github.com/polymer/TemplateBinding/issues/59 |
bool _toBoolean(value) => null != value && false != value; |
+// Dart note: this was added to decouple the MustacheTokens.parse function from |
+// the rest of tempalte_binding. |
+_getDelegateFactory(name, node, delegate) { |
+ if (delegate == null) return null; |
+ return (pathString) => delegate.prepareBinding(pathString, name, node); |
+} |
+ |
_InstanceBindingMap _getBindings(Node node, BindingDelegate delegate) { |
if (node is Element) { |
return _parseAttributeBindings(node, delegate); |
} |
if (node is Text) { |
- var tokens = MustacheTokens.parse(node.text, 'text', node, delegate); |
+ var tokens = MustacheTokens.parse(node.text, |
+ _getDelegateFactory('text', node, delegate)); |
if (tokens != null) return new _InstanceBindingMap(['text', tokens]); |
} |
@@ -46,7 +54,7 @@ MustacheTokens _parseWithDefault(Element element, String name, |
var v = element.attributes[name]; |
if (v == '') v = '{{}}'; |
- return MustacheTokens.parse(v, name, element, delegate); |
+ return MustacheTokens.parse(v, _getDelegateFactory(name, element, delegate)); |
} |
_InstanceBindingMap _parseAttributeBindings(Element element, |
@@ -72,7 +80,8 @@ _InstanceBindingMap _parseAttributeBindings(Element element, |
return; |
} |
- var tokens = MustacheTokens.parse(value, name, element, delegate); |
+ var tokens = MustacheTokens.parse(value, |
+ _getDelegateFactory(name, element, delegate)); |
if (tokens != null) { |
if (bindings == null) bindings = []; |
bindings..add(name)..add(tokens); |
@@ -88,7 +97,8 @@ _InstanceBindingMap _parseAttributeBindings(Element element, |
// Treat <template if> as <template bind if> |
if (result._if != null && result._bind == null && result._repeat == null) { |
- result._bind = MustacheTokens.parse('{{}}', 'bind', element, delegate); |
+ result._bind = MustacheTokens.parse('{{}}', |
+ _getDelegateFactory('bind', element, delegate)); |
} |
return result; |