markdown = $parser; $this->configuration = $configuration; } /** * @return TwigFilter[] */ public function getFilters() { return [ new TwigFilter('md2html', [$this, 'markdownToHtml'], ['is_safe' => ['html']]), new TwigFilter('desc2html', [$this, 'timesheetContent'], ['is_safe' => ['html']]), new TwigFilter('comment2html', [$this, 'commentContent'], ['is_safe' => ['html']]), ]; } /** * Transforms the entities comment (customer, project, activity ...) into HTML. * * @param string $content * @param bool $fullLength * @return string */ public function commentContent(?string $content, bool $fullLength = false): string { if (empty($content)) { return ''; } if (!$fullLength && strlen($content) > 101) { $content = trim(substr($content, 0, 100)) . ' …'; } if ($this->configuration->isMarkdownEnabled()) { $content = $this->markdown->toHtml($content, false); } elseif ($fullLength) { $content = '
' . nl2br($content) . '
'; } return $content; } /** * Transforms the timesheet description content into HTML. * * @param string $content * @return string */ public function timesheetContent($content): string { if (empty($content)) { return ''; } if ($this->configuration->isMarkdownEnabled()) { return $this->markdown->toHtml($content, false); } return nl2br($content); } /** * Transforms the given Markdown content into HTML * * @param string $content * @return string */ public function markdownToHtml(string $content): string { return $this->markdown->toHtml($content, false); } }