56 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
namespace astropenguin\botanical;
 | 
						|
use ArrayObject;
 | 
						|
 | 
						|
class Args
 | 
						|
{
 | 
						|
	//parseOptions utilitiese by tgckpg
 | 
						|
	static function PARSE ( $argStream, $handler )
 | 
						|
	{
 | 
						|
		//Chop first useless argument -- argv[0]
 | 
						|
		array_shift ( $argStream ) ;
 | 
						|
		//Initiate ArrayObject for iterator
 | 
						|
		$arrayobject = new ArrayObject ( $argStream ) ;
 | 
						|
		//Initiate iterator for iteration
 | 
						|
		$iterator = $arrayobject->getIterator();
 | 
						|
 | 
						|
		//If options is set first
 | 
						|
		if( $iterator->valid() && preg_match ( '/^-\w$/', $iterator->current() ) )
 | 
						|
		{
 | 
						|
			//iterate through whole argument stream
 | 
						|
			for (	; $iterator->valid(); $iterator->next() )
 | 
						|
			{
 | 
						|
				//Check if reached next option
 | 
						|
				if( preg_match ( '/^-\w$/', $opts = $iterator->current() ) )
 | 
						|
				{
 | 
						|
					//Get current options
 | 
						|
					$currOpt = $opts;
 | 
						|
					//echo "$currOpt\n";
 | 
						|
					//Test if next stream is an option
 | 
						|
					for ( $iterator->next(); $iterator->valid(); $iterator->next() )
 | 
						|
					{
 | 
						|
						if ( preg_match ( '/^-\w$/', $opts = $iterator->current() ) ) 
 | 
						|
						{
 | 
						|
							//echo "$currOpt $opts\n";
 | 
						|
							$handler($currOpt);
 | 
						|
							$currOpt = $opts;
 | 
						|
						} else break;
 | 
						|
						//var_dump($iterator->valid());
 | 
						|
					}
 | 
						|
				}//End if
 | 
						|
				//echo "$currOpt $opts\n";
 | 
						|
				$handler($currOpt, $opts);
 | 
						|
				//A temporary fix for infinite loop
 | 
						|
				if(!$iterator->valid()) break;
 | 
						|
			}// End for
 | 
						|
		}
 | 
						|
		// If option is not set first.
 | 
						|
		else
 | 
						|
		{
 | 
						|
			//Try other approach.
 | 
						|
		}
 | 
						|
		// End if
 | 
						|
	}
 | 
						|
}
 |