getValue()); $markdown = ''; $lines = \preg_split('/\r\n|\r|\n/', $value); \assert($lines !== false); foreach ($lines as $line) { /* * Some special characters need to be escaped based on the position that they appear * The following function will deal with those special cases. */ $markdown .= $this->escapeSpecialCharacters($line); $markdown .= "\n"; } return \trim($markdown) !== '' ? \rtrim($markdown) . "\n\n" : ''; } /** * @return string[] */ public function getSupportedTags(): array { return ['p']; } private function escapeSpecialCharacters(string $line): string { $line = $this->escapeFirstCharacters($line); $line = $this->escapeOtherCharacters($line); $line = $this->escapeOtherCharactersRegex($line); return $line; } private function escapeFirstCharacters(string $line): string { $escapable = [ '>', '- ', '+ ', '--', '~~~', '---', '- - -', ]; // On its own, either would be an empty list item if (\in_array(\trim($line), ['-', '+'], true)) { return '\\' . \ltrim($line); } foreach ($escapable as $i) { if (\strpos(\ltrim($line), $i) === 0) { // Found a character that must be escaped, adding a backslash before return '\\' . \ltrim($line); } } return $line; } private function escapeOtherCharacters(string $line): string { $escapable = [ '