mirror of
https://github.com/erusev/parsedown.git
synced 2023-08-10 21:13:06 +03:00
Merge pull request #224 from hkdobrev/no-markup-option
Add `noMarkup` option to escape user HTML
This commit is contained in:
commit
e0965ce09b
@ -59,6 +59,11 @@ class Parsedown
|
|||||||
|
|
||||||
private $breaksEnabled;
|
private $breaksEnabled;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var boolean If true HTML is escaped
|
||||||
|
*/
|
||||||
|
private $noMarkup = false;
|
||||||
|
|
||||||
function setBreaksEnabled($breaksEnabled)
|
function setBreaksEnabled($breaksEnabled)
|
||||||
{
|
{
|
||||||
$this->breaksEnabled = $breaksEnabled;
|
$this->breaksEnabled = $breaksEnabled;
|
||||||
@ -66,6 +71,19 @@ class Parsedown
|
|||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the `noMarkup` option
|
||||||
|
*
|
||||||
|
* @param boolean $noMarkup If true HTML is escaped
|
||||||
|
* @return $this
|
||||||
|
*/
|
||||||
|
function setNoMarkup($noMarkup)
|
||||||
|
{
|
||||||
|
$this->noMarkup = (bool) $noMarkup;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
# Lines
|
# Lines
|
||||||
#
|
#
|
||||||
@ -619,6 +637,11 @@ class Parsedown
|
|||||||
|
|
||||||
protected function identifyMarkup($Line)
|
protected function identifyMarkup($Line)
|
||||||
{
|
{
|
||||||
|
if ($this->noMarkup)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
if (preg_match('/^<(\w[\w\d]*)(?:[ ][^>]*)?(\/?)[ ]*>/', $Line['text'], $matches))
|
if (preg_match('/^<(\w[\w\d]*)(?:[ ][^>]*)?(\/?)[ ]*>/', $Line['text'], $matches))
|
||||||
{
|
{
|
||||||
if (in_array($matches[1], $this->textLevelElements))
|
if (in_array($matches[1], $this->textLevelElements))
|
||||||
@ -1144,6 +1167,11 @@ class Parsedown
|
|||||||
|
|
||||||
protected function identifyTag($Excerpt)
|
protected function identifyTag($Excerpt)
|
||||||
{
|
{
|
||||||
|
if ($this->noMarkup)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
if (strpos($Excerpt['text'], '>') !== false and preg_match('/^<\/?\w.*?>/', $Excerpt['text'], $matches))
|
if (strpos($Excerpt['text'], '>') !== false and preg_match('/^<\/?\w.*?>/', $Excerpt['text'], $matches))
|
||||||
{
|
{
|
||||||
return array(
|
return array(
|
||||||
|
@ -62,4 +62,46 @@ class Test extends PHPUnit_Framework_TestCase
|
|||||||
|
|
||||||
return $data;
|
return $data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function test_no_markup()
|
||||||
|
{
|
||||||
|
$markdownWithHtml = <<<MARKDOWN_WITH_MARKUP
|
||||||
|
<div>_content_</div>
|
||||||
|
|
||||||
|
sparse:
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<div class="inner">
|
||||||
|
_content_
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
paragraph
|
||||||
|
|
||||||
|
<style type="text/css">
|
||||||
|
p {
|
||||||
|
color: red;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
MARKDOWN_WITH_MARKUP;
|
||||||
|
|
||||||
|
$expectedHtml = <<<EXPECTED_HTML
|
||||||
|
<p><div><em>content</em></div></p>
|
||||||
|
<p>sparse:</p>
|
||||||
|
<p><div>
|
||||||
|
<div class="inner">
|
||||||
|
<em>content</em>
|
||||||
|
</div>
|
||||||
|
</div></p>
|
||||||
|
<p>paragraph</p>
|
||||||
|
<p><style type="text/css"></p>
|
||||||
|
<pre><code>p {
|
||||||
|
color: red;
|
||||||
|
}</code></pre>
|
||||||
|
<p></style></p>
|
||||||
|
EXPECTED_HTML;
|
||||||
|
$parsedownWithNoMarkup = new Parsedown();
|
||||||
|
$parsedownWithNoMarkup->setNoMarkup(true);
|
||||||
|
$this->assertEquals($expectedHtml, $parsedownWithNoMarkup->text($markdownWithHtml));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user