add method

bool add(
  1. String path,
  2. Function make, {
  3. List? middlewares,
})

Implementation

bool add(String path, Function make, {List? middlewares}) {
  if (path.endsWith('/')) {
    path = path.substring(0, path.length - 1);
  }

  if (!path.startsWith('/')) {
    path = '/' + path;
  }

  if (this.group.using!) {
    path = this.group.pre! + path;

    if (this.group.middlewares!.length > 0) {
      middlewares =
          ((middlewares ?? []) + this.group.middlewares!).toSet().toList();
    }
  }

  middlewares = middlewares ?? [];

  RegExp reg = new RegExp('\/((:)*[a-zA-Z_][a-zA-Z_0-9]*)*');
  Iterable<Match> matches = reg.allMatches(path);
  if (matches.isEmpty) {
    print('maxilozoz box err: route add path is invaild.');
    return false;
  }

  this.routes.add(MinRouteItem(
      path: path.replaceAll(new RegExp(':[^/]+'), '([a-zA-Z0-9_]+)'),
      handler: make,
      matches: matches,
      hasParam: (new RegExp('/:')).hasMatch(path),
      middlewares: middlewares));
  return true;
}