Passed
Push — master ( 1c3000...2260f1 )
by Rougin
01:34
created

Converter::encode()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 11
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 6
CRAP Score 2

Importance

Changes 0
Metric Value
cc 2
eloc 5
nc 2
nop 4
dl 0
loc 11
ccs 6
cts 6
cp 1
crap 2
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace Pilipinews\Common;
4
5
use League\HTMLToMarkdown\Environment;
6
use League\HTMLToMarkdown\Converter\CodeConverter;
7
use League\HTMLToMarkdown\Converter\CommentConverter;
8
use League\HTMLToMarkdown\Converter\ConverterInterface;
9
use League\HTMLToMarkdown\Converter\DefaultConverter;
10
use League\HTMLToMarkdown\Converter\DivConverter;
11
use League\HTMLToMarkdown\Converter\HardBreakConverter;
12
use League\HTMLToMarkdown\Converter\HorizontalRuleConverter;
13
use League\HTMLToMarkdown\Converter\PreformattedConverter;
14
use League\HTMLToMarkdown\Converter\TextConverter;
15
use League\HTMLToMarkdown\HtmlConverter;
16
use Pilipinews\Common\Converters\BlockquoteConverter;
17
use Pilipinews\Common\Converters\EmphasisConverter;
18
use Pilipinews\Common\Converters\HeaderConverter;
19
use Pilipinews\Common\Converters\ImageConverter;
20
use Pilipinews\Common\Converters\LinkConverter;
21
use Pilipinews\Common\Converters\ListBlockConverter;
22
use Pilipinews\Common\Converters\ListItemConverter;
23
use Pilipinews\Common\Converters\ParagraphConverter;
24
use Pilipinews\Common\Converters\TableBlockConverter;
25
use Pilipinews\Common\Converters\TableDataConverter;
26
use Pilipinews\Common\Converters\TableRowConverter;
27
28
/**
29
 * Converter
30
 *
31
 * @package Pilipinews
32
 * @author  Rougin Royce Gutib <[email protected]>
33
 */
34
class Converter extends HtmlConverter
35
{
36
    /**
37
     * Initializes the converter instance
38
     */
39 12
    public function __construct()
40
    {
41 12
        $environment = new Environment;
42
43 12
        $environment->addConverter(new BlockquoteConverter);
44 12
        $environment->addConverter(new CodeConverter);
45 12
        $environment->addConverter(new CommentConverter);
46 12
        $environment->addConverter(new DivConverter);
47 12
        $environment->addConverter(new EmphasisConverter);
48 12
        $environment->addConverter(new HardBreakConverter);
49 12
        $environment->addConverter(new HeaderConverter);
50 12
        $environment->addConverter(new HorizontalRuleConverter);
51 12
        $environment->addConverter(new ImageConverter);
52 12
        $environment->addConverter(new LinkConverter);
53 12
        $environment->addConverter(new ListBlockConverter);
54 12
        $environment->addConverter(new ListItemConverter);
55 12
        $environment->addConverter(new ParagraphConverter);
56 12
        $environment->addConverter(new PreformattedConverter);
57 12
        $environment->addConverter(new TextConverter);
58 12
        $environment->addConverter(new TableBlockConverter);
59 12
        $environment->addConverter(new TableDataConverter);
60 12
        $environment->addConverter(new TableRowConverter);
61
62 12
        $environment->getConfig()->setOption('bold_style', '');
63 12
        $environment->getConfig()->setOption('header_style', 'atx');
64 12
        $environment->getConfig()->setOption('italic_style', '');
65 12
        $environment->getConfig()->setOption('strip_tags', true);
66 12
        $environment->getConfig()->setOption('suppress_errors', true);
67 12
        $environment->getConfig()->setOption('hard_break', true);
68
69 12
        parent::__construct($environment);
70 12
    }
71
72
    /**
73
     * Parses the HTML into Markdown format.
74
     *
75
     * @param  string $html
76
     * @return string
77
     */
78 12
    public function convert($html)
79
    {
80 12
        $html = parent::convert((string) $html);
81
82 12
        $html = $this->encode('--', '-', $html, false);
83 12
        $html = $this->encode('\#', '#', $html);
84 12
        $html = $this->encode('\*', '*', $html);
85 12
        $html = $this->encode('\_', '_', $html);
86 12
        $html = $this->encode('•', '*', $html);
87 12
        $html = $this->encode('…', '...', $html);
88
89 12
        $html = $this->encode('\[', '[', $html);
90 12
        $html = $this->encode('\]', ']', $html);
91 12
        $html = str_replace(array('“', '”'), '"', $html);
92 12
        $html = str_replace(array('’', '‘'), "'", $html);
93 12
        $html = str_replace("\n\n\n", "\n\n", $html);
94 12
        $html = str_replace("\n ", "\n", (string) $html);
95
96 12
        return str_replace('\.', '.', (string) $html);
97
    }
98
99
    /**
100
     * Converts the specified string.
101
     *
102
     * @param  string  $from
103
     * @param  string  $text
104
     * @param  string  $html
105
     * @param  boolean $whole
106
     * @return string
107
     */
108 12
    protected function encode($from, $text, $html, $whole = true)
109
    {
110 12
        $html = str_replace($from . ' ', $text . ' ', $html);
111
112 12
        $html = str_replace(' ' . $from, ' ' . $text, $html);
113
114 12
        $html = str_replace('>' . $from, '>' . $text, $html);
115
116 12
        $html = str_replace($from . '<', $text . '<', $html);
117
118 12
        return $whole ? str_replace($from, $text, $html) : $html;
119
    }
120
}
121