53 lines
1.2 KiB
PHP
53 lines
1.2 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace League\HTMLToMarkdown\Converter;
|
|
|
|
use League\HTMLToMarkdown\Configuration;
|
|
use League\HTMLToMarkdown\ConfigurationAwareInterface;
|
|
use League\HTMLToMarkdown\ElementInterface;
|
|
|
|
class CommentConverter implements ConverterInterface, ConfigurationAwareInterface
|
|
{
|
|
/** @var Configuration */
|
|
protected $config;
|
|
|
|
public function setConfig(Configuration $config): void
|
|
{
|
|
$this->config = $config;
|
|
}
|
|
|
|
public function convert(ElementInterface $element): string
|
|
{
|
|
if ($this->shouldPreserve($element)) {
|
|
return '<!--' . $element->getValue() . '-->';
|
|
}
|
|
|
|
return '';
|
|
}
|
|
|
|
/**
|
|
* @return string[]
|
|
*/
|
|
public function getSupportedTags(): array
|
|
{
|
|
return ['#comment'];
|
|
}
|
|
|
|
private function shouldPreserve(ElementInterface $element): bool
|
|
{
|
|
$preserve = $this->config->getOption('preserve_comments');
|
|
if ($preserve === true) {
|
|
return true;
|
|
}
|
|
|
|
if (\is_array($preserve)) {
|
|
$value = \trim($element->getValue());
|
|
|
|
return \in_array($value, $preserve, true);
|
|
}
|
|
|
|
return false;
|
|
}
|
|
}
|