join<T> static method

Token<List<T>> join<T>(
  1. Iterable<Token<T>> token
)

Combines multiple token into a single token with the list of its values.

Implementation

static Token<List<T>> join<T>(Iterable<Token<T>> token) {
  final iterator = token.iterator;
  if (!iterator.moveNext()) {
    throw ArgumentError.value(token, 'token', 'Require at least one token');
  }
  final value = <T>[iterator.current.value];
  final buffer = iterator.current.buffer;
  var start = iterator.current.start;
  var stop = iterator.current.stop;
  while (iterator.moveNext()) {
    if (buffer != iterator.current.buffer) {
      throw ArgumentError.value(
          token, 'token', 'Token do not use same buffer');
    }
    value.add(iterator.current.value);
    start = math.min(start, iterator.current.start);
    stop = math.max(stop, iterator.current.stop);
  }
  return Token(value, buffer, start, stop);
}