// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

part of template_binding;

/** Extensions to the [Text] API. */
class _TextExtension extends NodeBindExtension {
  _TextExtension(Text node) : super._(node);

  Bindable bind(String name, value, {bool oneTime: false}) {
    // Dart note: 'text' instead of 'textContent' to match the DOM property.
    if (name != 'text') {
      return super.bind(name, value, oneTime: oneTime);
    }
    if (oneTime) {
      _updateText(value);
      return null;
    }

    unbind(name);
    _open(value, _updateText);
    return bindings[name] = value;
  }

  _updateText(value) {
    _node.text = _sanitizeValue(value);
  }
}

/** Called to sanitize the value before it is assigned into the property. */
_sanitizeValue(value) => value == null ? '' : '$value';
