/** * @return bool */ public function accept() { $key = parent::key(); $innerIterator = $this->getInnerIterator(); $token = $innerIterator[$key - $this->offset]; $label = null; if (is_array($token)) { $label = $token[0]; } elseif (is_string($token)) { $label = $token; } return in_array($label, $this->allowedTokens); }
/** * ( excerpt from http://php.net/manual/en/regexiterator.accept.php ) * * Matches (string) RegexIterator::current() (or RegexIterator::key() if * the RegexIterator::USE_KEY flag is set) against the regular expression. * * @return boolean TRUE if a match, FALSE otherwise. */ public function accept() { $this->key = parent::key(); $this->current = parent::current(); $matches = array(); $useKey = $this->flags & self::USE_KEY; $subject = $useKey ? (string) $this->key : (string) $this->current; switch ($this->mode) { case self::MATCH: $ret = preg_match($this->regex, $subject, $matches, $this->pregFlags) > 0; break; case self::GET_MATCH: $this->current = array(); $ret = preg_match($this->regex, $subject, $this->current, $this->pregFlags) > 0; break; case self::ALL_MATCHES: $this->current = array(); preg_match_all($this->regex, $subject, $this->current, $this->pregFlags); $ret = count($this->current) > 0; break; case self::SPLIT: $this->current = preg_split($this->regex, $subject, null, $this->pregFlags); $ret = $this->current && count($this->current) > 1; break; case self::REPLACE: $replace_count = 0; $result = preg_replace($this->regex, $this->replacement, $subject, -1, $replace_count); if ($result === null || $replace_count == 0) { $ret = false; break; } if ($useKey) { $this->key = $result; $ret = true; break; } $this->current = $result; $ret = true; break; default: $ret = false; break; } if ($this->flags & self::INVERT_MATCH) { return !$ret; } else { return $ret; } }
/** Call the filter callback * @return result of filter callback */ public function accept() { $this->key = parent::key(); $this->current = parent::current(); switch ($this->mode) { default: case self::USE_FALSE: return false; case self::USE_TRUE: return true; case self::USE_VALUE: return (bool) call_user_func($this->callback, $this->current); case self::USE_KEY: return (bool) call_user_func($this->callback, $this->key); case self::USE_BOTH: return (bool) call_user_func($this->callback, $this->key, $this->current); } }
function current() { $xml = parent::current(); if (isset($xml[0])) { $tasks = array(); $task = str_replace(array($this->_tasksNs . ':', '-'), array('', ' '), parent::key()); $task = str_replace(' ', '/', ucwords($task)); $task = str_replace('/', '_', $task); $task = '\\Pyrus\\Task\\' . $task; foreach ($xml as $info) { $attribs = array(); if (isset($xml['attribs'])) { $attribs = $xml['attribs']; } $tasks[] = new $task($this->_parent, $this->_installphase, $info, $attribs, $this->lastversion); } $attribs = isset($this->_inner['attribs']) ? array($this->_inner['attribs']) : $this->_inner; // use proxy for multiple tasks return new \Pyrus\Task\MultipleProxy($this->_parent, $tasks, $attribs, $this->key()); } $attribs = array(); if (isset($xml['attribs'])) { $attribs = $xml['attribs']; } $task = \Pyrus\Task\Common::getTask(parent::key()); if ($task === false) { throw new \RuntimeException('Unknown task `' . parent::key() . '` specified.'); } return new $task($this->_parent, $this->_installphase, $xml, $attribs, $this->lastversion); }
public function key() { $this->init(); return parent::key(); }
public function accept() { return preg_match($this->regex, parent::key()); }
function current() { $xml = parent::current(); if (isset($xml[0])) { $tasks = array(); $task = str_replace(array($this->_tasksNs . ':', '-'), array('', ' '), parent::key()); $task = str_replace(' ', '/', ucwords($task)); $task = str_replace('/', '_', $task); $task = '\PEAR2\Pyrus\Task\\' . $task; foreach ($xml as $info) { $attribs = array(); if (isset($xml['attribs'])) { $attribs = $xml['attribs']; } $tasks[] = new $task($this->_parent, $this->_installphase, $info, $attribs, $this->lastversion); } $attribs = isset($this->_inner['attribs']) ? array($this->_inner['attribs']) : $this->_inner; // use proxy for multiple tasks return new \PEAR2\Pyrus\Task\MultipleProxy($this->_parent, $tasks, $attribs, $this->key()); } $attribs = array(); if (isset($xml['attribs'])) { $attribs = $xml['attribs']; } $task = str_replace(array($this->_tasksNs . ':', '-'), array('', ' '), parent::key()); $task = str_replace(' ', '/', ucwords($task)); $task = str_replace('/', '_', $task); $task = '\PEAR2\Pyrus\Task\\' . $task; return new $task($this->_parent, $this->_installphase, $xml, $attribs, $this->lastversion); }
public function accept() { $fn = $this->callback; return $fn(parent::current(), parent::key()); }