truncatePathMiddle function

String truncatePathMiddle(
  1. String path,
  2. int maxLength
)

Truncates a file path in the middle to preserve directory context and filename.

Implementation

String truncatePathMiddle(String path, int maxLength) {
  if (stringWidth(path) <= maxLength) return path;
  if (maxLength <= 0) return '\u2026';
  if (maxLength < 5) return truncateToWidth(path, maxLength);

  final lastSlash = path.lastIndexOf('/');
  final filename = lastSlash >= 0 ? path.substring(lastSlash) : path;
  final directory = lastSlash >= 0 ? path.substring(0, lastSlash) : '';
  final filenameWidth = stringWidth(filename);

  if (filenameWidth >= maxLength - 1) {
    return truncateStartToWidth(path, maxLength);
  }

  final availableForDir = maxLength - 1 - filenameWidth;
  if (availableForDir <= 0) {
    return truncateStartToWidth(filename, maxLength);
  }

  final truncatedDir = truncateToWidthNoEllipsis(directory, availableForDir);
  return '$truncatedDir\u2026$filename';
}