This commit is contained in:
Emanuil Rusev 2013-11-02 21:42:55 +02:00
parent e475602e2f
commit 2e314ad474
3 changed files with 96 additions and 0 deletions

View File

@ -122,6 +122,27 @@ class Parsedown
foreach ($lines as $line)
{
# Block-Level HTML
if ($element['type'] === 'block' and ! isset($element['closed']))
{
if (preg_match('{<'.$element['subtype'].'>$}', $line)) # <open>
{
$element['depth']++;
}
if (preg_match('{</'.$element['subtype'].'>$}', $line)) # </close>
{
$element['depth'] > 0
? $element['depth']--
: $element['closed'] = true;
}
$element['text'] .= "\n".$line;
continue;
}
# Empty
if ($line === '')
@ -322,6 +343,38 @@ class Parsedown
continue;
}
# Block-Level HTML <self-closing/>
if (preg_match('{^<.+?/>$}', $line))
{
$elements []= $element;
$element = array(
'type' => '',
'text' => $line,
);
continue;
}
# Block-Level HTML <open>
if (preg_match('{^<(\w+)(?:[ ].*?)?>}', $line, $matches))
{
$elements []= $element;
$element = array(
'type' => 'block',
'subtype' => strtolower($matches[1]),
'text' => $line,
'depth' => 0,
);
preg_match('{</'.$matches[1].'>\s*$}', $line) and $element['closed'] = true;
continue;
}
# ~
@ -444,6 +497,10 @@ class Parsedown
$markup .= '<hr />'."\n";
break;
default:
$markup .= $element['text']."\n";
}
}

15
tests/data/html.html Normal file
View File

@ -0,0 +1,15 @@
<p>Self-closing tag:</p>
<hr/>
<p>Self-closing tag with attributes:</p>
<hr style="background: #eaa" />
<p>Bare element:</p>
<div>content</div>
<p>Element with attributes:</p>
<a href="http://parsedown.org">link</a>
<p>Nested elements:</p>
<div>
parent
<div>
child
</div>
</div>

24
tests/data/html.md Normal file
View File

@ -0,0 +1,24 @@
Self-closing tag:
<hr/>
Self-closing tag with attributes:
<hr style="background: #eaa" />
Bare element:
<div>content</div>
Element with attributes:
<a href="http://parsedown.org">link</a>
Nested elements:
<div>
parent
<div>
child
</div>
</div>