cellsAsTsv method

String cellsAsTsv(
  1. Iterable<CellRef> cells
)

Implementation

String cellsAsTsv(Iterable<CellRef> cells) {
  final list = cells.where((c) => c.row >= 0 && c.row < rowCount && c.col >= 0 && c.col < colCount).toList();
  if (list.isEmpty) return '';
  final r0 = list.map((c) => c.row).reduce((a, b) => a < b ? a : b);
  final r1 = list.map((c) => c.row).reduce((a, b) => a > b ? a : b);
  final c0 = list.map((c) => c.col).reduce((a, b) => a < b ? a : b);
  final c1 = list.map((c) => c.col).reduce((a, b) => a > b ? a : b);
  final set = list.toSet();
  final buf = <String>[];
  for (var r = r0; r <= r1; r++) {
    final cells = <String>[];
    for (var c = c0; c <= c1; c++) {
      cells.add(set.contains(CellRef(r, c)) ? _san(cellText(r, c)) : '');
    }
    buf.add(cells.join('\t'));
  }
  return buf.join('\n');
}