parseURLSegment method

bool parseURLSegment(
  1. List<String> urlSegments
)

Try parse URLSegment

Implementation

bool parseURLSegment(List<String> urlSegments) {
  // Check is empty
  if (urlSegments.isEmpty && pathSegments.isEmpty) {
    isActive = true;
    return true;
  }

  // Check Full Match
  if (this.routerMatch == RouterMatch.Full &&
      urlSegments.length != pathSegments.length) return false;

  // urlSegment >= pathSegment, skip if not
  if (urlSegments.length < pathSegments.length) return false;

  this.arguments = {};
  this.localSegments = [];

  for (int i = 0; i < pathSegments.length; i++) {
    String urlSegment = urlSegments[i].toString();
    String pathSegment = pathSegments[i].toString();

    if (localSegments.length == i) {
      if (urlSegment == pathSegment) {
        this.localSegments.add(pathSegment);
      } else {
        // Check segment start with ':' is argument
        // Ex. /home/:id
        if (checkArgument(pathSegment)) {
          this.isArgs = true;
          this.setArgument(pathSegment, urlSegment);
          this.localSegments.add(urlSegment);
        }
      }
    }
  }

  if (this.localSegments.isNotEmpty) {
    this.isActive = localSegments.length == urlSegments.length;
    this.isParent = localSegments.length < urlSegments.length;
    return true;
  }

  return false;
}