matchChildNode method

RouteNode matchChildNode (RouteNode node, [ String method = DEFAULT_METHOD ])

Implementation

RouteNode matchChildNode(final RouteNode node, [String method = DEFAULT_METHOD]) {
  RouteNode _node;
  switch(node.type) {
    case NodeType.part:
      final RouteNode currentNode = partChildren[node.key];
      if (currentNode != null) {
        node._checkHandlerConflict(currentNode, method);
        _node = currentNode;
      }
      break;
    case NodeType.param:
      // 存在处理函数的节点
      RouteNode hasHandlerNode;
      // 匹配成功的节点
      RouteNode matchNode;
      // 当前循环遍历到的节点
      RouteNode currentNode;
      for(int i = 0, len = paramChildren.length; i < len; i ++) {
        currentNode = paramChildren[i];
        // 获得存在处理函数(handler)的节点
        if(currentNode.getHandler(method) != null) {
          hasHandlerNode = currentNode;
        }
        // 检查匹配,则返回
        if(currentNode == node) {
          matchNode = currentNode;
        }
      }
      // 检查处理函数冲突
      node._checkHandlerConflict(hasHandlerNode, method);
      _node = matchNode;
      break;
    case NodeType.wildcard:
      if(wildcardChild != null) {
        node._checkHandlerConflict(wildcardChild, method);
        _node = wildcardChild;
      }

      // currentNode = wildcardChildren;
      // // 存在处理函数的节点
      // RouteNode hasHandlerNode;
      // // 匹配成功的节点
      // RouteNode matchNode;
      // // 当前循环遍历到的节点
      // RouteNode currentNode;
      // for(int i = 0, len = wildcardChildren.length; i < len; i ++) {
      //   currentNode = wildcardChildren[i];
      //   // 获得存在处理函数(handler)的节点
      //   if(currentNode.getHandler(method) != null) {
      //     hasHandlerNode = currentNode;
      //   }
      //   // 检查匹配,则返回
      //   if(currentNode == node) {
      //     matchNode = currentNode;
      //   }
      // }
      // // 检查处理函数冲突
      // node._checkHandlerConflict(hasHandlerNode);
      break;
  }

  return _node;
}