<?php
namespace eMacros\Runtime\Argument;
use eMacros\Applicable;
use eMacros\Scope;
use eMacros\GenericList;
class ArgumentGet implements Applicable {
/**
* Argument index to obtain
* @var int
*/
public $index;
public function __construct($index = null) {
$this->index = $index;
}
/**
* Obtains argument at given index
* Usage: (%0) (% _num)
* Returns: mixed
* (non-PHPdoc)
* @see \eMacros\Applicable::apply()
*/
public function apply(Scope $scope, GenericList $arguments) {
if (is_null($this->index)) {
if (count($arguments) == 0) {
throw new \BadFunctionCallException("ArgumentGet: No index specified.");
}
$index = intval($arguments[0]->evaluate($scope));
}
else {
$index = $this->index;
}
if (!array_key_exists($index, $scope->arguments)) {
throw new \UnexpectedValueException(sprintf("ArgumentGet: No parameter found at index %d.", $index));
}
return $scope->arguments[$index];
}
}
?>
|