mirror of
https://github.com/erusev/parsedown.git
synced 2024-09-20 03:51:29 +02:00
resolve #24
This commit is contained in:
parent
e475602e2f
commit
2e314ad474
@ -122,6 +122,27 @@ class Parsedown
|
|||||||
|
|
||||||
foreach ($lines as $line)
|
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
|
# Empty
|
||||||
|
|
||||||
if ($line === '')
|
if ($line === '')
|
||||||
@ -323,6 +344,38 @@ class Parsedown
|
|||||||
continue;
|
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:
|
paragraph:
|
||||||
@ -444,6 +497,10 @@ class Parsedown
|
|||||||
$markup .= '<hr />'."\n";
|
$markup .= '<hr />'."\n";
|
||||||
|
|
||||||
break;
|
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