<?php
namespace eMacros\Runtime\Argument;
use eMacros\Applicable;
use eMacros\Scope;
use eMacros\GenericList;
class ArgumentExists implements Applicable {
/**
* Argument index to check
* @var int
*/
public $index;
public function __construct($index = null) {
$this->index = $index;
}
/**
* Checks if a given argument has been provided
* Usage: (%1?) (%? _num)
* Returns: boolean
* (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;
}
return array_key_exists($index, $scope->arguments);
}
}
?>
|