routePathIdentifier<T> static method

String routePathIdentifier<T>({
  1. dynamic identifier,
  2. dynamic path,
  3. dynamic args,
})

Alters given identifier with path.

Implementation

static String routePathIdentifier<T>(
    {dynamic identifier, dynamic path, dynamic args}) {
  if (path == null) {
    path = routeIdentifier(identifier);
  } else if (path is String) {
    if (!path.startsWith('/')) {
      path = '/$path';
    }
  } else if (path is List) {
    path = '/' + path.join('/');
  } else if (path is Map) {
    path = '/' +
        Parse.toList(args, entryConverter: (key, value) => '$key/$value')
            .join('/');
  }

  if (args == null || (args is String && args.isEmpty)) {
    return path;
  }

  if (args is Map) {
    return '$path?' +
        Parse.toList(args, entryConverter: (key, value) => '$key=$value')
            .join('&');
  }

  if (args is List) {
    return '$path?args=' + args.join(',');
  }

  if (path.endsWith('/')) {
    return '$path$args';
  }

  return '$path/$args';
}