ice framework documentation ice doc v1.10.1
    
namespace Ice\Mvc\Route\Dispatcher;

use Ice\Mvc\Route\Dispatcher\Regex;
use Ice\Mvc\FastRouter;

class GroupCount extends Regex
{
    protected staticRouteMap { set };
    protected variableRouteData { set };

    public function __construct(array data = [])
    {
        if count(data) {
            let this->staticRouteMap = data[0],
                this->variableRouteData = data[1];
        }
    }

    protected function dispatchVariableRoute(routeData, uri)
    {
        var data, matches, handler, varName, varNames, vars;
        int i, j;

        let matches = null;

        for data in routeData {
            if !preg_match(data["regex"], uri, matches) {
                continue;
            }

            let j = count(matches),
                handler = data["routeMap"][j][0],
                varNames = data["routeMap"][j][1];

            let vars = [],
                i = 0;

            for varName in varNames {
                let i++,
                    vars[varName] = matches[i];
            }

            return [FastRouter::FOUND, handler, vars];
        }

        return [FastRouter::NOT_FOUND];
    }
}