| Index: third_party/pkg/angular/lib/core_dom/node_cursor.dart
|
| diff --git a/third_party/pkg/angular/lib/core_dom/node_cursor.dart b/third_party/pkg/angular/lib/core_dom/node_cursor.dart
|
| index 2405fe0a4f40940e2984700d9b019dfb16ad0f0f..a88fe2dfe96fac9ce35234d2031dc25f5078ead1 100644
|
| --- a/third_party/pkg/angular/lib/core_dom/node_cursor.dart
|
| +++ b/third_party/pkg/angular/lib/core_dom/node_cursor.dart
|
| @@ -1,45 +1,22 @@
|
| -part of angular.core.dom;
|
| +part of angular.core.dom_internal;
|
|
|
| class NodeCursor {
|
| - List<dynamic> stack = [];
|
| + final stack = [];
|
| List<dom.Node> elements;
|
| - int index;
|
| + int index = 0;
|
|
|
| - NodeCursor(this.elements) : index = 0;
|
| + NodeCursor(this.elements);
|
|
|
| - isValid() => index < elements.length;
|
| + bool moveNext() => ++index < elements.length;
|
|
|
| - cursorSize() => 1;
|
| + dom.Node get current => index < elements.length ? elements[index] : null;
|
|
|
| - macroNext() {
|
| - for (var i = 0, ii = cursorSize(); i < ii; i++, index++){}
|
| -
|
| - return this.isValid();
|
| - }
|
| -
|
| - microNext() {
|
| - var length = elements.length;
|
| -
|
| - if (index < length) {
|
| - index++;
|
| - }
|
| -
|
| - return index < length;
|
| - }
|
| -
|
| - nodeList() {
|
| - if (!isValid()) return []; // or should we return null?
|
| -
|
| - return elements.sublist(index, index + cursorSize());
|
| - }
|
| -
|
| - descend() {
|
| + bool descend() {
|
| var childNodes = elements[index].nodes;
|
| - var hasChildren = childNodes != null && childNodes.length > 0;
|
| + var hasChildren = childNodes != null && childNodes.isNotEmpty;
|
|
|
| if (hasChildren) {
|
| - stack.add(index);
|
| - stack.add(elements);
|
| + stack..add(index)..add(elements);
|
| elements = new List.from(childNodes);
|
| index = 0;
|
| }
|
| @@ -47,44 +24,26 @@ class NodeCursor {
|
| return hasChildren;
|
| }
|
|
|
| - ascend() {
|
| + void ascend() {
|
| elements = stack.removeLast();
|
| index = stack.removeLast();
|
| }
|
|
|
| - insertAnchorBefore(String name) {
|
| - var current = elements[index];
|
| + void insertAnchorBefore(String name) {
|
| var parent = current.parentNode;
|
| -
|
| var anchor = new dom.Comment('ANCHOR: $name');
|
| -
|
| elements.insert(index++, anchor);
|
| -
|
| - if (parent != null) {
|
| - parent.insertBefore(anchor, current);
|
| - }
|
| + if (parent != null) parent.insertBefore(anchor, current);
|
| }
|
|
|
| - replaceWithAnchor(String name) {
|
| + NodeCursor replaceWithAnchor(String name) {
|
| insertAnchorBefore(name);
|
| var childCursor = remove();
|
| - this.index--;
|
| + index--;
|
| return childCursor;
|
| }
|
|
|
| - remove() {
|
| - var nodes = nodeList();
|
| -
|
| - for (var i = 0; i < nodes.length; i++) {
|
| - // NOTE(deboer): If elements is a list of child nodes on a node, then
|
| - // calling Node.remove() may also remove it from the list. Thus, we
|
| - // call elements.removeAt first so only one node is removed.
|
| - elements.removeAt(index);
|
| - nodes[i].remove();
|
| - }
|
| -
|
| - return new NodeCursor(nodes);
|
| - }
|
| + NodeCursor remove() => new NodeCursor([elements.removeAt(index)..remove()]);
|
|
|
| - isInstance() => false;
|
| + toString() => "[NodeCursor: $elements $index]";
|
| }
|
|
|