original_string: public static function alias( $alias, $params = array(), $retain = false )
  	{
  		$route_params = array();
  		
  		// to handle the suffix after a slash in an alias define
  		$suffix = '';
  		
  		if ( strpos( $alias, '/' ) !== false && $alias !== '/' )
  		{
  			// slashes in aliases get appended as suffix
  			list( $alias, $suffix ) = explode( '/', $alias );
  			
  			$suffix = '/'.$suffix;
  		}
  	
  
  		// get the parameters with the numeric keys so we can 
  		// pass them as route parameters like [any]-[num]-[num]/[any]/
  		foreach( $params as $key => $value )
  		{
  			if ( is_int( $key ) )
  			{
  				$route_params[] = $value; unset( $params[$key] );
  			}
  		}
  
  		return CCUrl::to( CCRouter::alias( $alias, $route_params ).$suffix, $params, $retain );
  	}
code: public static function alias( $alias, $params = array(), $retain = false )
  	{
  		$route_params = array();
  		
  		// to handle the suffix after a slash in an alias define
  		$suffix = '';
  		
  		if ( strpos( $alias, '/' ) !== false && $alias !== '/' )
  		{
  			// slashes in aliases get appended as suffix
  			list( $alias, $suffix ) = explode( '/', $alias );
  			
  			$suffix = '/'.$suffix;
  		}
  	
  
  		// get the parameters with the numeric keys so we can 
  		// pass them as route parameters like [any]-[num]-[num]/[any]/
  		foreach( $params as $key => $value )
  		{
  			if ( is_int( $key ) )
  			{
  				$route_params[] = $value; unset( $params[$key] );
  			}
  		}
  
  		return CCUrl::to( CCRouter::alias( $alias, $route_params ).$suffix, $params, $retain );
  	}
code_tokens: public static function alias ( $ alias , $ params = array ( ) , $ retain = false ) { $ route_params = array ( ) ; // to handle the suffix after a slash in an alias define $ suffix = '' ; if ( strpos ( $ alias , '/' ) !== false && $ alias !== '/' ) { // slashes in aliases get appended as suffix list ( $ alias , $ suffix ) = explode ( '/' , $ alias ) ; $ suffix = '/' . $ suffix ; } // get the parameters with the numeric keys so we can  // pass them as route parameters like [any]-[num]-[num]/[any]/ foreach ( $ params as $ key => $ value ) { if ( is_int ( $ key ) ) { $ route_params [ ] = $ value ; unset ( $ params [ $ key ] ) ; } } return CCUrl :: to ( CCRouter :: alias ( $ alias , $ route_params ) . $ suffix , $ params , $ retain ) ; }
docstring: Create an URL based on an router alias
  
  @param string		$alias
  @param array  	$params
  @param bool		$retain		Should we keep the get parameters?
  @return string
docstring_tokens: Create an URL based on an router alias