diff options
author | Klaus Weidenbach <Klaus.Weidenbach@gmx.net> | 2017-05-23 00:32:11 +0200 |
---|---|---|
committer | Klaus Weidenbach <Klaus.Weidenbach@gmx.net> | 2017-05-23 00:32:11 +0200 |
commit | 547df2219ab4b870256f2ed90e36b97d8bf200bf (patch) | |
tree | 3e990b35eb939911bb7949c2f5d633fa3d788faf /vendor/league/html-to-markdown/src/Converter/HeaderConverter.php | |
parent | 50e9d024581ddf57f37a6302bc089a88237657bb (diff) | |
download | volse-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/HeaderConverter.php')
-rw-r--r-- | vendor/league/html-to-markdown/src/Converter/HeaderConverter.php | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/vendor/league/html-to-markdown/src/Converter/HeaderConverter.php b/vendor/league/html-to-markdown/src/Converter/HeaderConverter.php new file mode 100644 index 000000000..d117e7d36 --- /dev/null +++ b/vendor/league/html-to-markdown/src/Converter/HeaderConverter.php @@ -0,0 +1,78 @@ +<?php + +namespace League\HTMLToMarkdown\Converter; + +use League\HTMLToMarkdown\Configuration; +use League\HTMLToMarkdown\ConfigurationAwareInterface; +use League\HTMLToMarkdown\ElementInterface; + +class HeaderConverter implements ConverterInterface, ConfigurationAwareInterface +{ + const STYLE_ATX = 'atx'; + const STYLE_SETEXT = 'setext'; + + /** + * @var Configuration + */ + protected $config; + + /** + * @param Configuration $config + */ + public function setConfig(Configuration $config) + { + $this->config = $config; + } + + /** + * @param ElementInterface $element + * + * @return string + */ + public function convert(ElementInterface $element) + { + $level = (int) substr($element->getTagName(), 1, 1); + $style = $this->config->getOption('header_style', self::STYLE_SETEXT); + + if (($level === 1 || $level === 2) && !$element->isDescendantOf('blockquote') && $style === self::STYLE_SETEXT) { + return $this->createSetextHeader($level, $element->getValue()); + } + + return $this->createAtxHeader($level, $element->getValue()); + } + + /** + * @return string[] + */ + public function getSupportedTags() + { + return array('h1', 'h2', 'h3', 'h4', 'h5', 'h6'); + } + + /** + * @param int $level + * @param string $content + * + * @return string + */ + private function createSetextHeader($level, $content) + { + $length = function_exists('mb_strlen') ? mb_strlen($content, 'utf-8') : strlen($content); + $underline = ($level === 1) ? '=' : '-'; + + return $content . "\n" . str_repeat($underline, $length) . "\n\n"; + } + + /** + * @param int $level + * @param string $content + * + * @return string + */ + private function createAtxHeader($level, $content) + { + $prefix = str_repeat('#', $level) . ' '; + + return $prefix . $content . "\n\n"; + } +} |