mirror of
https://github.com/erusev/parsedown.git
synced 2025-09-05 04:31:45 +02:00
Compare commits
5 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
2e314ad474 | ||
|
e475602e2f | ||
|
f43f54b877 | ||
|
d733acc94e | ||
|
6a0695deb9 |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,2 +1,3 @@
|
||||
.DS_Store
|
||||
.idea
|
||||
nbproject
|
@@ -122,14 +122,33 @@ 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 === '')
|
||||
{
|
||||
$element['interrupted'] = true;
|
||||
|
||||
$element['type'] === 'code' and $element['text'] .= "\n";
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -251,6 +270,8 @@ class Parsedown
|
||||
{
|
||||
if ($element['type'] === 'code')
|
||||
{
|
||||
isset($element['interrupted']) and $element['text'] .= "\n";
|
||||
|
||||
$element['text'] .= "\n".$matches[1];
|
||||
}
|
||||
else
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
# ~
|
||||
|
||||
@@ -415,9 +468,7 @@ class Parsedown
|
||||
|
||||
case 'code':
|
||||
|
||||
$text = rtrim($element['text'], "\n");
|
||||
|
||||
$text = htmlentities($text, ENT_NOQUOTES);
|
||||
$text = htmlentities($element['text'], ENT_NOQUOTES);
|
||||
|
||||
strpos($text, "\x1A\\") !== FALSE and $text = strtr($text, $this->escape_sequence_map);
|
||||
|
||||
@@ -446,6 +497,10 @@ class Parsedown
|
||||
$markup .= '<hr />'."\n";
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
$markup .= $element['text']."\n";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -506,8 +561,6 @@ class Parsedown
|
||||
$element = '<a href="'.$matches[4].'">'.$element_text.'</a>';
|
||||
}
|
||||
|
||||
$element_text = $this->parse_inline_elements($matches[1]);
|
||||
|
||||
# ~
|
||||
|
||||
$code = "\x1A".'$'.$index;
|
||||
@@ -526,15 +579,15 @@ class Parsedown
|
||||
{
|
||||
foreach ($matches as $matches)
|
||||
{
|
||||
$link_difinition = isset($matches[3]) && $matches[3]
|
||||
$link_definition = isset($matches[3]) && $matches[3]
|
||||
? $matches[3]
|
||||
: $matches[2]; # implicit
|
||||
|
||||
$link_difinition = strtolower($link_difinition);
|
||||
$link_definition = strtolower($link_definition);
|
||||
|
||||
if (isset($this->reference_map[$link_difinition]))
|
||||
if (isset($this->reference_map[$link_definition]))
|
||||
{
|
||||
$url = $this->reference_map[$link_difinition];
|
||||
$url = $this->reference_map[$link_definition];
|
||||
|
||||
if ($matches[1]) # image
|
||||
{
|
||||
|
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>
|
Reference in New Issue
Block a user