pathJoin function

String pathJoin(
  1. Iterable<String> segments
)

Join path segments (cross-platform, no double slash). Roadmap #161.

Implementation

String pathJoin(Iterable<String> segments) {
  final List<String> parts = <String>[];
  for (final String s in segments) {
    final String t = s.replaceAll(r'\', '/').replaceAll(RegExp(r'/+'), '/').trim();
    if (t.isEmpty) continue;
    if (t == '.') continue;
    if (t == '..') {
      if (parts.isNotEmpty) parts.removeLast();
      continue;
    }
    parts.add(t);
  }
  return parts.join('/');
}