visitArray<T> method

  1. @override
List<T> visitArray <T>(
  1. List<T> nodes,
  2. {bool nonReplacing: false}
)
override

nodes List | List<List<>> | List ...

Implementation

@override
List<T> visitArray<T>(List<T> nodes, {bool nonReplacing = false}) {
  if (nodes == null) return nodes;

  // Non-replacing
  if (nonReplacing || !_implementation.isReplacing) {
    for (var i = 0; i < nodes.length; i++) {
      visit(nodes[i]);
    }
    return nodes;
  }

  // Replacing
  var out = <T>[];
  for (var i = 0; i < nodes.length; i++) {
    final dynamic evald = visit(nodes[i]); //Node | List<Node>
    if (evald == null) continue;

    if (evald is! List) {
      out.add(evald);
    } else if (evald.isNotEmpty) {
      out = flatten<T>(evald, out);
    }
  }

  return out;

//2.3.1
//  visitArray: function(nodes, nonReplacing) {
//      if (!nodes) {
//          return nodes;
//      }
//
//      var cnt = nodes.length, i;
//
//      // Non-replacing
//      if (nonReplacing || !this._implementation.isReplacing) {
//          for (i = 0; i < cnt; i++) {
//              this.visit(nodes[i]);
//          }
//          return nodes;
//      }
//
//      // Replacing
//      var out = [];
//      for (i = 0; i < cnt; i++) {
//          var evald = this.visit(nodes[i]);
//          if (evald === undefined) { continue; }
//          if (!evald.splice) {
//              out.push(evald);
//          } else if (evald.length) {
//              this.flatten(evald, out);
//          }
//      }
//      return out;
//  },
}