pathRelative function

String pathRelative(
  1. String base,
  2. String target
)

Relative path from base to target. Roadmap #163.

Implementation

String pathRelative(String base, String target) {
  final List<String> b = pathNormalize(base).split('/').where((String s) => s.isNotEmpty).toList();
  final List<String> t = pathNormalize(
    target,
  ).split('/').where((String s) => s.isNotEmpty).toList();
  int i = 0;
  while (i < b.length && i < t.length && b[i] == t[i]) {
    i++;
  }
  final List<String> ups = List<String>.filled(b.length - i, '..');
  final List<String> rest = t.sublist(i);
  return pathJoin(<String>[...ups, ...rest]);
}