1
0
mirror of https://github.com/erusev/parsedown.git synced 2023-08-10 21:13:06 +03:00

Compare commits

...

6 Commits
0.4.7 ... 0.4.8

Author SHA1 Message Date
e497acb6dc escape sequences with double digit codes do not get decoded properly 2013-11-16 02:05:31 +02:00
30e436ec7d simplify tests 2013-11-16 02:05:31 +02:00
3972f18881 improve readme 2013-11-14 00:50:00 +02:00
4fb12be60a improve introduction 2013-11-13 01:52:59 +02:00
f8b07611d3 homepage » home 2013-11-13 01:47:38 +02:00
21d7f75f5b improve readme 2013-11-13 01:38:29 +02:00
83 changed files with 259 additions and 388 deletions

View File

@ -66,7 +66,7 @@ class Parsedown
{
if (strpos($text, $escape_sequence) !== FALSE)
{
$code = "\x1A".'\\'.$index;
$code = "\x1A".'\\'.$index.';';
$text = str_replace($escape_sequence, $code, $text);

View File

@ -1,9 +1,8 @@
## Parsedown PHP
Parsedown is a parser for Markdown. It parses Markdown text the way people do. First, it divides texts into blocks. Then it looks at how these blocks start and how they relate to each other. Finally, it looks for special characters to identify inline elements. As a result, Parsedown is (super) fast, consistent and clean.
Parsedown PHP is a parser for Markdown. It reads Markdown the way people do. First, it breaks texts into lines. Then, it looks at how these lines start and relate to each other. Finally, it looks for special characters to identify inline elements. As a result, Parsedown PHP is (very) fast and consistent.
[Explorer (demo)](http://parsedown.org/explorer/)
[Tests](http://parsedown.org/tests/)
[Home](http://parsedown.org) · [Demo](http://parsedown.org/explorer/) · [Tests](http://parsedown.org/tests/)
### Installation
@ -17,4 +16,4 @@ $text = 'Hello **Parsedown**!';
$result = Parsedown::instance()->parse($text);
echo $result; # prints: <p>Hello <strong>Parsedown</strong>!</p>
```
```

View File

@ -1,6 +1,7 @@
<h1>This is an h1</h1>
<h2>This is an h2</h2>
<h3>This is an h3</h3>
<h4>This is an h4</h4>
<h5>This is an h5</h5>
<h6>This is an h6</h6>
<h1>h1</h1>
<h2>h2</h2>
<h3>h3</h3>
<h4>h4</h4>
<h5>h5</h5>
<h6>h6</h6>
<h1>closed h1</h1>

View File

@ -1,11 +1,13 @@
# This is an h1
# h1
## This is an h2
## h2
### This is an h3
### h3
#### This is an h4
#### h4
##### This is an h5
##### h5
###### This is an h6
###### h6
# closed h1 #

View File

@ -1,6 +0,0 @@
<h1>h1</h1>
<h2>h2</h2>
<h3>h3</h3>
<h4>h4</h4>
<h5>h5</h5>
<h6>h6</h6>

View File

@ -1,11 +0,0 @@
# h1 #
## h2 ##
### h3 ###
#### h4 ####
##### h5 #####
###### h6 ######

View File

@ -0,0 +1,9 @@
<div>content</div>
<hr style="background: #eaa;" />
<p>nested elements:</p>
<div>
parent
<div>
child
</div>
</div>

View File

@ -0,0 +1,12 @@
<div>content</div>
<hr style="background: #eaa;" />
nested elements:
<div>
parent
<div>
child
</div>
</div>

View File

@ -1,9 +0,0 @@
<p>Here's a blockquote:</p>
<blockquote>
<p>blockquote</p>
</blockquote>
<p>Here's one on multiple lines:</p>
<blockquote>
<p>line 1
line 2</p>
</blockquote>

View File

@ -1,8 +0,0 @@
Here's a blockquote:
> blockquote
Here's one on multiple lines:
> line 1
> line 2

View File

@ -1,16 +0,0 @@
<p>Here's one with multiple paragraphs:</p>
<blockquote>
<p>This is line one.</p>
<p>This is line two.</p>
</blockquote>
<p>Here's one with multiple types of blocks:</p>
<blockquote>
<p>This is a quoted paragraph.</p>
<ul>
<li>This is a list item of a quoted list.</li>
<li>This is another list item.</li>
</ul>
<blockquote>
<p>This is a nested quote block.</p>
</blockquote>
</blockquote>

View File

@ -1,14 +0,0 @@
Here's one with multiple paragraphs:
> This is line one.
>
> This is line two.
Here's one with multiple types of blocks:
> This is a quoted paragraph.
>
> - This is a list item of a quoted list.
> - This is another list item.
>
> > This is a nested quote block.

View File

@ -1,11 +0,0 @@
<p>Here's a lazy blockquote:</p>
<blockquote>
<p>line
line</p>
</blockquote>
<p>Here's one with multiple lines:</p>
<blockquote>
<p>line
line
line</p>
</blockquote>

View File

@ -1,10 +0,0 @@
Here's a lazy blockquote:
> line
line
Here's one with multiple lines:
> line
line
line

View File

@ -1,12 +0,0 @@
<p>Here's a blockquote with no space after the ">":</p>
<blockquote>
<p>blockquote</p>
</blockquote>
<p>Here's a blockquote with leading space:</p>
<blockquote>
<p>blockquote</p>
</blockquote>
<p>Here's a blockquote on the next line:</p>
<blockquote>
<p>blockquote</p>
</blockquote>

View File

@ -1,10 +0,0 @@
Here's a blockquote with no space after the ">":
>blockquote
Here's a blockquote with leading space:
> blockquote
Here's a blockquote on the next line:
> blockquote

View File

@ -1,5 +1,8 @@
<p>Here's a code block:</p>
<pre><code>&lt;?php
$message = 'Hello World!';
echo $message;</code></pre>
echo $message;</code></pre>
<hr />
<pre><code>&gt; not a quote
- not a list item
[not a reference]: http://foo.com</code></pre>

View File

@ -1,6 +1,11 @@
Here's a code block:
<?php
$message = 'Hello World!';
echo $message;
echo $message;
---
> not a quote
- not a list item
[not a reference]: http://foo.com

View File

@ -1 +1 @@
<p>This is a <code>code span</code>.</p>
<p>a <code>code span</code></p>

View File

@ -1 +1 @@
This is a `code span`.
a `code span`

View File

@ -0,0 +1,9 @@
<blockquote>
<h2>header</h2>
<p>paragraph</p>
<ul>
<li>li</li>
</ul>
<hr />
<p>paragraph</p>
</blockquote>

View File

@ -0,0 +1,10 @@
> header
> ------
>
> paragraph
>
> - li
>
> ---
>
> paragraph

View File

@ -0,0 +1,12 @@
<ul>
<li>
<p>paragraph</p>
<p>paragraph</p>
</li>
<li>
<p>paragraph</p>
<blockquote>
<p>quote</p>
</blockquote>
</li>
</ul>

View File

@ -0,0 +1,7 @@
- paragraph
paragraph
- paragraph
> quote

View File

@ -1,11 +1,5 @@
<p>Here's <em>an emphasis</em>.</p>
<p>A short one <em>a</em> <em>b</em> .</p>
<p>Here's <strong>a strong one</strong>. </p>
<p>Here's <em>one that uses underscores</em>. </p>
<p>Here's <strong>a strong one that uses underscores</strong>.</p>
<p>This is not _ one _ neither is * this * neither is _ this_ neither is _this _.</p>
<p>An empty emphasis ** is not __ an emphasis.</p>
<p>A <em>multi-line
<p><em>underscore</em>, <em>asterisk</em>, <em>one two</em>, <em>three four</em>, <em>a</em>, <em>b</em></p>
<p><em>multiline
emphasis</em></p>
<p>A <strong>multi-line
strong emphasis</strong></p>
<p>_ this _ is not an emphasis, neither is _ this_, _this _, or _this*</p>
<p>an empty emphasis __ ** is not an emphasis</p>

View File

@ -1,19 +1,8 @@
Here's *an emphasis*.
_underscore_, *asterisk*, _one two_, *three four*, _a_, *b*
A short one _a_ *b* .
_multiline
emphasis_
Here's **a strong one**.
_ this _ is not an emphasis, neither is _ this_, _this _, or _this*
Here's _one that uses underscores_.
Here's __a strong one that uses underscores__.
This is not _ one _ neither is * this * neither is _ this_ neither is _this _.
An empty emphasis ** is not __ an emphasis.
A *multi-line
emphasis*
A **multi-line
strong emphasis**
an empty emphasis __ ** is not an emphasis

View File

@ -1,2 +1,4 @@
<p>Here's an <em>emphasis</em> and here's an escaped *emphasis*. Here are also an escaped `code span`, an escaped [inline link](http://example.com) and an escaped <code>\*emphasis\*</code> inside of a code span.</p>
<pre><code>An escaped \*emphasis\* inside of a code block.</code></pre>
<p>escaped *emphasis*.</p>
<p><code>escaped \*emphasis\* in a code span</code></p>
<pre><code>escaped \*emphasis\* in a code block</code></pre>
<p>\ ` * _ { } [ ] ( ) > # + - . !</p>

View File

@ -1,3 +1,7 @@
Here's an *emphasis* and here's an escaped \*emphasis\*. Here are also an escaped \`code span\`, an escaped \[inline link](http://example.com) and an escaped `\*emphasis\*` inside of a code span.
escaped \*emphasis\*.
An escaped \*emphasis\* inside of a code block.
`escaped \*emphasis\* in a code span`
escaped \*emphasis\* in a code block
\\ \` \* \_ \{ \} \[ \] \( \) \> \# \+ \- \. \!

View File

@ -1,10 +1,5 @@
<p>Dashes:</p>
<hr />
<hr />
<hr />
<p>Asterisks:</p>
<hr />
<p>Underscores:</p>
<hr />
<p>On the next line:</p>
<hr />

View File

@ -1,18 +1,9 @@
Dashes:
---
- - -
- - -
Asterisks:
***
Underscores:
___
On the next line:
___

View File

@ -1,15 +0,0 @@
<p>A self-closing tag:</p>
<hr/>
<p>One with attributes:</p>
<hr style="background: #eaa" />
<p>A bare element:</p>
<div>content</div>
<p>One with attributes:</p>
<a href="http://example.com">link</a>
<p>Nested elements:</p>
<div>
parent
<div>
child
</div>
</div>

View File

@ -1,24 +0,0 @@
A self-closing tag:
<hr/>
One with attributes:
<hr style="background: #eaa" />
A bare element:
<div>content</div>
One with attributes:
<a href="http://example.com">link</a>
Nested elements:
<div>
parent
<div>
child
</div>
</div>

View File

@ -0,0 +1 @@
<p><img alt="Markdown Logo" src="/md.png"></p>

View File

@ -0,0 +1,3 @@
![Markdown Logo][image]
[image]: /md.png

View File

@ -0,0 +1,2 @@
<p>an <a href="http://example.com">implicit</a> reference link</p>
<p>an <a href="http://example.com">implicit</a> reference link with an empty link definition</p>

View File

@ -0,0 +1,5 @@
an [implicit] reference link
[implicit]: http://example.com
an [implicit][] reference link with an empty link definition

View File

@ -1,2 +1,2 @@
<p>Here's a <a href="http://example.com">link</a>.</p>
<p>Here's one that is based on an image: <a href="http://daringfireball.net/projects/markdown/"><img alt="MD Logo" src="http://parsedown.org/md.png"></a>.</p>
<p><a href="http://example.com">link</a></p>
<p><a href="http://example.com"><img alt="MD Logo" src="http://parsedown.org/md.png"></a></p>

View File

@ -1,3 +1,3 @@
Here's a [link](http://example.com).
[link](http://example.com)
Here's one that is based on an image: [![MD Logo](http://parsedown.org/md.png)](http://daringfireball.net/projects/markdown/).
[![MD Logo](http://parsedown.org/md.png)](http://example.com)

View File

@ -0,0 +1,4 @@
<blockquote>
<p>quote
the rest of it</p>
</blockquote>

View File

@ -0,0 +1,2 @@
> quote
the rest of it

View File

@ -0,0 +1,4 @@
<ul>
<li>li
the rest of it</li>
</ul>

2
tests/data/lazy_list.md Normal file
View File

@ -0,0 +1,2 @@
- li
the rest of it

View File

@ -1,5 +0,0 @@
<p>Here's a list:</p>
<ul>
<li>li</li>
<li>li</li>
</ul>

View File

@ -1,4 +0,0 @@
Here's a list:
- li
- li

View File

@ -1,13 +0,0 @@
<p>Here's a compound list:</p>
<ul>
<li>
<p>This is the first paragraph of the list item.</p>
<p>This is the second one.</p>
</li>
<li>
<p>This is another list item.</p>
<blockquote>
<p>This is a quote block that belongs to it.</p>
</blockquote>
</li>
</ul>

View File

@ -1,9 +0,0 @@
Here's a compound list:
- This is the first paragraph of the list item.
This is the second one.
- This is another list item.
> This is a quote block that belongs to it.

View File

@ -1,4 +0,0 @@
<ul>
<li>li
more text</li>
</ul>

View File

@ -1,2 +0,0 @@
- li
more text

View File

@ -1,14 +0,0 @@
<p>Here's a regular ordered list:</p>
<ol>
<li>one</li>
<li>two</li>
</ol>
<p>Here's one with repeating numbers:</p>
<ol>
<li>one</li>
<li>two</li>
</ol>
<p>Here's one with large numbers:</p>
<ol>
<li>one</li>
</ol>

View File

@ -1,13 +0,0 @@
Here's a regular ordered list:
1. one
2. two
Here's one with repeating numbers:
1. one
1. two
Here's one with large numbers:
123. one

View File

@ -1,16 +0,0 @@
<p>Here's a sparse list:</p>
<ul>
<li>
<p>list item</p>
</li>
<li>another list item</li>
</ul>
<p>Here's one with an indented list item:</p>
<ul>
<li>
<p>li</p>
<ul>
<li>li</li>
</ul>
</li>
</ul>

View File

@ -1,11 +0,0 @@
Here's a sparse list:
- list item
- another list item
Here's one with an indented list item:
- li
- li

View File

@ -1,10 +0,0 @@
Here's an unordered list:
- li
- li
Here's one with mixed markers:
- li
+ li
* li

View File

@ -1,5 +0,0 @@
<p>Here's one with white space around items:</p>
<ul>
<li>li </li>
<li>li </li>
</ul>

View File

@ -1,4 +0,0 @@
Here's one with white space around items:
- li
- li

View File

@ -0,0 +1,13 @@
<ol>
<li>one</li>
<li>two</li>
</ol>
<p>repeating numbers:</p>
<ol>
<li>one</li>
<li>two</li>
</ol>
<p>large numbers:</p>
<ol>
<li>one</li>
</ol>

View File

@ -0,0 +1,11 @@
1. one
2. two
repeating numbers:
1. one
1. two
large numbers:
123. one

View File

@ -1,7 +0,0 @@
<p>Here's a <a href="http://example.com">reference link</a>.</p>
<p>Here's <a href="http://example.com">one</a> with a semantic name.</p>
<p>Here's <a href="http://example.com">one</a> with an upper case label definition.</p>
<p>Here's <a href="http://example.com">one</a> with definition name on the next line.</p>
<p>Here's [one][404] with no definition.</p>
<p>Here's a <a href="http://example.com">multiline
one</a> defined on 2 lines.</p>

View File

@ -1,19 +0,0 @@
Here's a [reference link][1].
[1]: http://example.com
Here's [one][website] with a semantic name.
[website]: http://example.com
Here's [one][case] with an upper case label definition.
[CASE]: http://example.com
Here's [one]
[website] with definition name on the next line.
Here's [one][404] with no definition.
Here's a [multiline
one][website] defined on 2 lines.

View File

@ -1 +0,0 @@
<p>Here's an image: <img alt="Markdown Logo" src="/md.png"></p>

View File

@ -1,3 +0,0 @@
Here's an image: ![Markdown Logo][image]
[image]: /md.png

View File

@ -1,2 +0,0 @@
<p>Here's an <a href="http://example.com">implicit</a> reference link.</p>
<p>Here's an <a href="http://example.com">implicit</a> one with an empty link definition.</p>

View File

@ -1,5 +0,0 @@
Here's an [implicit] reference link.
[implicit]: http://example.com
Here's an [implicit][] one with an empty link definition.

View File

@ -1 +0,0 @@
<p>Here's a <a href="http://example.com">reference link</a> with a definition on the next line.</p>

View File

@ -1,2 +0,0 @@
Here's a [reference link][2] with a definition on the next line.
[2]: http://example.com

View File

@ -0,0 +1,11 @@
<blockquote>
<p>quote</p>
</blockquote>
<p>indented:</p>
<blockquote>
<p>quote</p>
</blockquote>
<p>no space after <code>&gt;</code>:</p>
<blockquote>
<p>quote</p>
</blockquote>

View File

@ -0,0 +1,7 @@
> quote
indented:
> quote
no space after `>`:
>quote

View File

@ -0,0 +1,3 @@
<p>an <b>important</b> <a href=''>link</a></p>
<p>broken<br/>
line</p>

View File

@ -0,0 +1,4 @@
an <b>important</b> <a href=''>link</a>
broken<br/>
line

View File

@ -1 +0,0 @@
<p>Here's an <b>important</b> <a href=''>link</a>.</p>

View File

@ -1 +0,0 @@
Here's an <b>important</b> <a href=''>link</a>.

View File

@ -0,0 +1,15 @@
<ul>
<li>
<p>li</p>
</li>
<li>li</li>
</ul>
<hr />
<ul>
<li>
<p>li</p>
<ul>
<li>indented li</li>
</ul>
</li>
</ul>

View File

@ -0,0 +1,9 @@
- li
- li
---
- li
- indented li

View File

@ -1,7 +1,7 @@
<p>AT&amp;T has an ampersand in their name.</p>
<p>AT&amp;T is another way to write it.</p>
<p>This &amp; that.</p>
<p>4 &lt; 5 and 6 > 5.</p>
<p>Here's an autolink <a href="http://example.com/autolink?a=1&amp;b=2">http://example.com/autolink?a=1&amp;b=2</a></p>
<p>Here's an inline <a href="/script?a=1&amp;b=2">link</a>.</p>
<p>Here's a reference <a href="http://example.com/?a=1&amp;b=2">link</a> with an ampersand in the URL.</p>
<p>AT&amp;T has an ampersand in their name</p>
<p>AT&amp;T is another way to write it</p>
<p>this &amp; that</p>
<p>4 &lt; 5 and 6 > 5</p>
<p><a href="http://example.com/autolink?a=1&amp;b=2">http://example.com/autolink?a=1&amp;b=2</a> </p>
<p><a href="/script?a=1&amp;b=2">inline link</a></p>
<p><a href="http://example.com/?a=1&amp;b=2">reference link</a></p>

View File

@ -1,15 +1,15 @@
AT&T has an ampersand in their name.
AT&T has an ampersand in their name
AT&amp;T is another way to write it.
AT&T is another way to write it
This & that.
this & that
4 < 5 and 6 > 5.
4 < 5 and 6 > 5
Here's an autolink <http://example.com/autolink?a=1&b=2>
<http://example.com/autolink?a=1&b=2>
Here's an inline [link](/script?a=1&b=2).
[inline link](/script?a=1&b=2)
Here's a reference [link] [1] with an ampersand in the URL.
[reference link][1]
[1]: http://example.com/?a=1&b=2

View File

@ -0,0 +1,6 @@
<p><a href="http://example.com">reference link</a></p>
<p><a href="http://example.com">one</a> with a semantic name</p>
<p>[one][404] with no definition</p>
<p><a href="http://example.com">multiline
one</a> defined on 2 lines</p>
<p><a href="http://example.com">one</a> with an upper case label</p>

View File

@ -0,0 +1,16 @@
[reference link][1]
[1]: http://example.com
[one][website] with a semantic name
[website]: http://example.com
[one][404] with no definition
[multiline
one][website] defined on 2 lines
[one][label] with an upper case label
[LABEL]: http://example.com

View File

@ -1,9 +1,8 @@
<p>Here's an unordered list:</p>
<ul>
<li>li</li>
<li>li</li>
</ul>
<p>Here's one with mixed markers:</p>
<p>mixed markers:</p>
<ul>
<li>li</li>
<li>li</li>

View File

@ -0,0 +1,8 @@
- li
- li
mixed markers:
* li
+ li
- li

View File

@ -1 +1 @@
<pre><code>This text starts with a line that consists of 4 spaces and it ends with one. This is a code block to make sure that leading spaces don't get trimmed.</code></pre>
<pre><code>code</code></pre>

View File

@ -1,5 +1,5 @@
This text starts with a line that consists of 4 spaces and it ends with one. This is a code block to make sure that leading spaces don't get trimmed.
code