mageekguy\atoum\script\arguments\parser::parse PHP Method

parse() public method

public parse ( script $script, array $array = [] )
$script mageekguy\atoum\script
$array array
    public function parse(atoum\script $script, array $array = array())
    {
        $this->init($array);
        $priorities = $this->priorities;
        $values = $this->values;
        uksort($values, function ($arg1, $arg2) use($priorities) {
            switch (true) {
                case isset($priorities[$arg1]) === false && isset($priorities[$arg2]) === false:
                    return 0;
                case isset($priorities[$arg1]) === false && isset($priorities[$arg2]) === true:
                    return 1;
                case isset($priorities[$arg2]) === false && isset($priorities[$arg1]) === true:
                    return -1;
                default:
                    return $priorities[$arg1] > $priorities[$arg2] ? -1 : ($priorities[$arg1] == $priorities[$arg2] ? 0 : 1);
            }
        });
        foreach ($values as $argument => $value) {
            $this->triggerHandlers($argument, $value, $script);
        }
        return $this;
    }

Usage Example

Beispiel #1
0
 public function testParse()
 {
     $this->assert('when using $_SERVER')->if($script = new \mock\mageekguy\atoum\script(uniqid()))->and($superglobals = new atoum\superglobals())->and($superglobals->_SERVER['argv'] = array())->and($parser = new script\arguments\parser($superglobals))->then->object($parser->parse($script))->isIdenticalTo($parser)->array($parser->getValues())->isEmpty()->if($superglobals->_SERVER['argv'] = array('scriptName'))->then->object($parser->parse($script))->isIdenticalTo($parser)->array($parser->getValues())->isEmpty()->if($superglobals->_SERVER['argv'] = array('scriptName', '-a'))->and($parser->addHandler(function ($script, $argument, $value) use(&$invokeA) {
         $invokeA++;
     }, array('-a')))->then->object($parser->parse($script))->isIdenticalTo($parser)->array($parser->getValues())->isEqualTo(array('-a' => array()))->integer($invokeA)->isEqualTo(1)->if($superglobals->_SERVER['argv'] = array('scriptName', '-a', '-b'))->and($parser->addHandler(function ($script, $argument, $value) use(&$invokeB) {
         $invokeB++;
     }, array('-b')))->then->object($parser->parse($script))->isIdenticalTo($parser)->array($parser->getValues())->isEqualTo(array('-a' => array(), '-b' => array()))->integer($invokeA)->isEqualTo(2)->integer($invokeB)->isEqualTo(1)->if($superglobals->_SERVER['argv'] = array('scriptName', '-a', 'a1'))->then->object($parser->parse($script))->isIdenticalTo($parser)->array($parser->getValues())->isEqualTo(array('-a' => array('a1')))->integer($invokeA)->isEqualTo(3)->integer($invokeB)->isEqualTo(1)->if($superglobals->_SERVER['argv'] = array('scriptName', '-a', 'a1', 'a2'))->then->object($parser->parse($script))->isIdenticalTo($parser)->array($parser->getValues())->isEqualTo(array('-a' => array('a1', 'a2')))->integer($invokeA)->isEqualTo(4)->integer($invokeB)->isEqualTo(1)->if($superglobals->_SERVER['argv'] = array('scriptName', '-a', 'a1', 'a2', '-b'))->then->object($parser->parse($script))->isIdenticalTo($parser)->array($parser->getValues())->isEqualTo(array('-a' => array('a1', 'a2'), '-b' => array()))->integer($invokeA)->isEqualTo(5)->integer($invokeB)->isEqualTo(2)->if($superglobals->_SERVER['argv'] = array('scriptName', '-a', 'a1', 'a2', '-b', 'b1', 'b2', 'b3'))->then->object($parser->parse($script))->isIdenticalTo($parser)->array($parser->getValues())->isEqualTo(array('-a' => array('a1', 'a2'), '-b' => array('b1', 'b2', 'b3')))->integer($invokeA)->isEqualTo(6)->integer($invokeB)->isEqualTo(3)->if($superglobals->_SERVER['argv'] = array('scriptName', '-a', 'a1', 'a2', '-b', 'b1', 'b2', 'b3', '--c'))->and($parser->addHandler(function ($script, $argument, $value) use(&$invokeC) {
         $invokeC++;
     }, array('--c')))->then->object($parser->parse($script))->isIdenticalTo($parser)->array($parser->getValues())->isEqualTo(array('-a' => array('a1', 'a2'), '-b' => array('b1', 'b2', 'b3'), '--c' => array()))->integer($invokeA)->isEqualTo(7)->integer($invokeB)->isEqualTo(4)->integer($invokeC)->isEqualTo(1)->assert('when using argument')->if($superglobals->_SERVER['argv'] = array())->then->object($parser->parse($script, array()))->isIdenticalTo($parser)->array($parser->getValues())->isEmpty()->integer($invokeA)->isEqualTo(7)->integer($invokeB)->isEqualTo(4)->integer($invokeC)->isEqualTo(1)->object($parser->parse($script, array('-a')))->isIdenticalTo($parser)->array($parser->getValues())->isEqualTo(array('-a' => array()))->integer($invokeA)->isEqualTo(8)->integer($invokeB)->isEqualTo(4)->integer($invokeC)->isEqualTo(1)->object($parser->parse($script, array('-a', '-b')))->isIdenticalTo($parser)->array($parser->getValues())->isEqualTo(array('-a' => array(), '-b' => array()))->integer($invokeA)->isEqualTo(9)->integer($invokeB)->isEqualTo(5)->integer($invokeC)->isEqualTo(1)->object($parser->parse($script, array('-a', 'a1')))->isIdenticalTo($parser)->array($parser->getValues())->isEqualTo(array('-a' => array('a1')))->integer($invokeA)->isEqualTo(10)->integer($invokeB)->isEqualTo(5)->integer($invokeC)->isEqualTo(1)->object($parser->parse($script, array('-a', 'a1', 'a2')))->isIdenticalTo($parser)->array($parser->getValues())->isEqualTo(array('-a' => array('a1', 'a2')))->integer($invokeA)->isEqualTo(11)->integer($invokeB)->isEqualTo(5)->integer($invokeC)->isEqualTo(1)->object($parser->parse($script, array('-a', 'a1', 'a2', '-b')))->isIdenticalTo($parser)->array($parser->getValues())->isEqualTo(array('-a' => array('a1', 'a2'), '-b' => array()))->integer($invokeA)->isEqualTo(12)->integer($invokeB)->isEqualTo(6)->integer($invokeC)->isEqualTo(1)->object($parser->parse($script, array('-a', 'a1', 'a2', '-b', 'b1', 'b2', 'b3')))->isIdenticalTo($parser)->array($parser->getValues())->isEqualTo(array('-a' => array('a1', 'a2'), '-b' => array('b1', 'b2', 'b3')))->integer($invokeA)->isEqualTo(13)->integer($invokeB)->isEqualTo(7)->integer($invokeC)->isEqualTo(1)->object($parser->parse($script, array('-a', 'a1', 'a2', '-b', 'b1', 'b2', 'b3', '--c')))->isIdenticalTo($parser)->array($parser->getValues())->isEqualTo(array('-a' => array('a1', 'a2'), '-b' => array('b1', 'b2', 'b3'), '--c' => array()))->integer($invokeA)->isEqualTo(14)->integer($invokeB)->isEqualTo(8)->integer($invokeC)->isEqualTo(2)->exception(function () use($parser, $script) {
         $parser->parse($script, array('b'));
     })->isInstanceOf('mageekguy\\atoum\\exceptions\\runtime\\unexpectedValue')->hasMessage('First argument \'b\' is invalid')->if($superglobals->_SERVER['argv'] = array('scriptName', '-a', 'a1', 'a2', '-b', 'b1', 'b2', 'b3', '-d', 'd1', 'd2', '--c'))->and($parser->addHandler(function ($script, $argument, $value) {
     }, array('-d'), PHP_INT_MAX))->then->object($parser->parse($script))->isIdenticalTo($parser)->array($parser->getValues())->isEqualTo(array('-d' => array('d1', 'd2'), '-a' => array('a1', 'a2'), '-b' => array('b1', 'b2', 'b3'), '--c' => array()))->if($superglobals->_SERVER['argv'] = array('scriptName', '-d', 'd1', 'd2', '-a', 'a1', 'a2', '-b', 'b1', 'b2', 'b3', '--c'))->then->object($parser->parse($script))->isIdenticalTo($parser)->array($parser->getValues())->isEqualTo(array('-d' => array('d1', 'd2'), '-a' => array('a1', 'a2'), '-b' => array('b1', 'b2', 'b3'), '--c' => array()));
 }
All Usage Examples Of mageekguy\atoum\script\arguments\parser::parse