aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/league/html-to-markdown/src/Converter/PreformattedConverter.php
diff options
context:
space:
mode:
authorKlaus Weidenbach <Klaus.Weidenbach@gmx.net>2017-05-23 00:32:11 +0200
committerKlaus Weidenbach <Klaus.Weidenbach@gmx.net>2017-05-23 00:32:11 +0200
commit547df2219ab4b870256f2ed90e36b97d8bf200bf (patch)
tree3e990b35eb939911bb7949c2f5d633fa3d788faf /vendor/league/html-to-markdown/src/Converter/PreformattedConverter.php
parent50e9d024581ddf57f37a6302bc089a88237657bb (diff)
downloadvolse-hubzilla-547df2219ab4b870256f2ed90e36b97d8bf200bf.tar.gz
volse-hubzilla-547df2219ab4b870256f2ed90e36b97d8bf200bf.tar.bz2
volse-hubzilla-547df2219ab4b870256f2ed90e36b97d8bf200bf.zip
Replace Mardownify library with html-to-markdown library.
Diffstat (limited to 'vendor/league/html-to-markdown/src/Converter/PreformattedConverter.php')
-rw-r--r--vendor/league/html-to-markdown/src/Converter/PreformattedConverter.php59
1 files changed, 59 insertions, 0 deletions
diff --git a/vendor/league/html-to-markdown/src/Converter/PreformattedConverter.php b/vendor/league/html-to-markdown/src/Converter/PreformattedConverter.php
new file mode 100644
index 000000000..7a4ec3357
--- /dev/null
+++ b/vendor/league/html-to-markdown/src/Converter/PreformattedConverter.php
@@ -0,0 +1,59 @@
+<?php
+
+namespace League\HTMLToMarkdown\Converter;
+
+use League\HTMLToMarkdown\ElementInterface;
+
+class PreformattedConverter implements ConverterInterface
+{
+ /**
+ * @param ElementInterface $element
+ *
+ * @return string
+ */
+ public function convert(ElementInterface $element)
+ {
+ $markdown = '';
+
+ $pre_content = html_entity_decode($element->getChildrenAsString());
+ $pre_content = str_replace(array('<pre>', '</pre>'), '', $pre_content);
+
+ /*
+ * Checking for the code tag.
+ * Usually pre tags are used along with code tags. This conditional will check for already converted code tags,
+ * which use backticks, and if those backticks are at the beginning and at the end of the string it means
+ * there's no more information to convert.
+ */
+
+ $firstBacktick = strpos(trim($pre_content), '`');
+ $lastBacktick = strrpos(trim($pre_content), '`');
+ if ($firstBacktick === 0 && $lastBacktick === strlen(trim($pre_content)) - 1) {
+ return $pre_content;
+ }
+
+ // If the execution reaches this point it means it's just a pre tag, with no code tag nested
+
+ // Normalizing new lines
+ $pre_content = preg_replace('/\r\n|\r|\n/', PHP_EOL, $pre_content);
+
+ // Checking if the string has multiple lines
+ $lines = preg_split('/\r\n|\r|\n/', $pre_content);
+ if (count($lines) > 1) {
+ // Multiple lines detected, adding three backticks and newlines
+ $markdown .= '```' . "\n" . $pre_content . "\n" . '```';
+ } else {
+ // One line of code, wrapping it on one backtick.
+ $markdown .= '`' . $pre_content . '`';
+ }
+
+ return $markdown;
+ }
+
+ /**
+ * @return string[]
+ */
+ public function getSupportedTags()
+ {
+ return array('pre');
+ }
+}