| 
<?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);
 }
 }
 ?>
 |