mirror of
https://github.com/erusev/parsedown.git
synced 2023-08-10 21:13:06 +03:00
resolve #24
This commit is contained in:
parent
e475602e2f
commit
2e314ad474
@ -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 === '')
|
||||
@ -323,6 +344,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;
|
||||
}
|
||||
|
||||
# ~
|
||||
|
||||
paragraph:
|
||||
@ -444,6 +497,10 @@ class Parsedown
|
||||
$markup .= '<hr />'."\n";
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
$markup .= $element['text']."\n";
|
||||
}
|
||||
}
|
||||
|
||||
|
15
tests/data/html.html
Normal file
15
tests/data/html.html
Normal 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
24
tests/data/html.md
Normal 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>
|
Loading…
Reference in New Issue
Block a user