* @since Class available since Release 2.0.0 */ class BufferLogger extends BaseLogger { public $entries = array(); /** * Write a message to the buffer - all entries can later be retrieved with getText() or getHtlm(). * * @param string $msg message to log * @param string $style style (null | bold | italic) * @return void */ public function log($msg, $style = '') { $this->entries[] = [$msg, $style]; } /** * Write a new line to the buffer. * * @return void */ public function ln() { $this->entries[] = ''; } /** * Get everything logged - as HTML. * * @return string The log, formatted as HTML. */ public function getHtml() { $html = ''; foreach ($this->entries as $entry) { if ($entry == '') { $html .= '
'; } else { list($msg, $style) = $entry; $msg = htmlspecialchars($msg); if ($style == 'bold') { $html .= '' . $msg . ''; } elseif ($style == 'italic') { $html .= '' . $msg . ''; } else { $html .= $msg; } } } return $html; } /** * Get everything logged - as markdown. * * @return string The log, formatted as MarkDown. */ public function getMarkDown($newLineChar = "\n\r") { $md = ''; foreach ($this->entries as $entry) { if ($entry == '') { $md .= $newLineChar; } else { list($msg, $style) = $entry; if ($style == 'bold') { $md .= '**' . $msg . '** '; } elseif ($style == 'italic') { $md .= '*' . $msg . '* '; } else { $md .= $msg; } } } return $md; } /** * Get everything logged - as plain text. * * @param string $newLineChar. The character used for new lines. * @return string The log, formatted as plain text. */ public function getText($newLineChar = ' ') { $text = ''; foreach ($this->entries as $entry) { if ($entry == '') { // empty string means new line if (substr($text, -2) != '.' . $newLineChar) { $text .= '.' . $newLineChar; } } else { list($msg, $style) = $entry; $text .= $msg; } } return $text; } }