utils/php/astropenguin/botanical/Args.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
}
}