line = (string) $line; return $this; } /** * Get the line * * @return string */ public function getLine() { return $this->line; } /** * Set the line number * * @param int $lineno * * @return $this */ public function setLineno($lineno) { $this->lineno = (int) $lineno; return $this; } /** * Set the match type * * @param int $matchType * * @return $this */ public function setMatchType($matchType) { $matchType = (int) $matchType; if ($matchType !== static::MATCH_HEADER && $matchType !== static::MATCH_CONTENT) { throw new UnexpectedValueException(); } $this->matchType = $matchType; return $this; } /** * Get the match type * * @return int */ public function getMatchType() { return $this->matchType; } /** * Append a match * * @param string $match * @param int $position * * @return $this */ public function appendMatch($match, $position) { $this->matches[(int) $position] = (string) $match; return $this; } /** * Get the matches * * @return array */ public function getMatches() { return $this->matches; } /** * Set the view * * @param View $view * * @return $this */ public function setView(View $view) { $this->view = $view; return $this; } /** * Get the view * * @return View */ public function getView() { if ($this->view === null) { $this->view = Icinga::app()->getViewRenderer()->view; } return $this->view; } /** * Get the line having matches highlighted * * @return string */ public function highlight() { $highlighted = ''; $offset = 0; $matches = $this->getMatches(); ksort($matches); foreach ($matches as $position => $match) { $highlighted .= $this->getView()->escape(substr($this->line, $offset, $position - $offset)) . '' . $this->getView()->escape($match) . ''; $offset = $position + strlen($match); } $highlighted .= $this->getView()->escape(substr($this->line, $offset)); return $highlighted; } /** * Whether the match is empty * * @return bool */ public function isEmpty() { return empty($this->matches); } }