matchChildNode 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;
}