mirror of
https://github.com/erusev/parsedown.git
synced 2025-09-04 20:25:27 +02:00
Compare commits
44 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
df6fe915c6 | ||
|
576b0ea761 | ||
|
0f027dc04b | ||
|
179862bd6e | ||
|
019a4af2af | ||
|
51a08fad85 | ||
|
7fb08f334a | ||
|
85ad014f74 | ||
|
22336a1bcc | ||
|
f713e380ee | ||
|
5b01915a63 | ||
|
18d112a614 | ||
|
1b9641ad03 | ||
|
8baf537c12 | ||
|
05823567bc | ||
|
b7029ab176 | ||
|
102a947c7a | ||
|
7bb70186c1 | ||
|
3225c66863 | ||
|
d6dc5ba25b | ||
|
f5451a9eff | ||
|
849a89b121 | ||
|
28064a63b3 | ||
|
800aac5b56 | ||
|
b15d40e8a3 | ||
|
ddc5b7e2dd | ||
|
5a563008aa | ||
|
b6f795962f | ||
|
cdb2646063 | ||
|
e3b8026e39 | ||
|
d96f668c42 | ||
|
96bf75bd91 | ||
|
67b51794d8 | ||
|
a9d6232705 | ||
|
b91629ad94 | ||
|
24d300ea5d | ||
|
d54712b989 | ||
|
6ef043ba7d | ||
|
fe27b70bdb | ||
|
18d3dbf4f6 | ||
|
4758f58f73 | ||
|
5fa3eb1b2f | ||
|
38300323a6 | ||
|
96609329b9 |
@@ -4,8 +4,4 @@ php:
|
||||
- 5.5
|
||||
- 5.4
|
||||
- 5.3
|
||||
- 5.2
|
||||
|
||||
matrix:
|
||||
allow_failures:
|
||||
- php: 5.2
|
||||
- 5.2
|
846
Parsedown.php
846
Parsedown.php
File diff suppressed because it is too large
Load Diff
18
README.md
18
README.md
@@ -1,8 +1,20 @@
|
||||
## Parsedown PHP
|
||||
## Parsedown
|
||||
|
||||
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.
|
||||
Better [Markdown](http://en.wikipedia.org/wiki/Markdown) parser for PHP.
|
||||
|
||||
[Home](http://parsedown.org) · [Demo](http://parsedown.org/explorer/) · [Tests](http://parsedown.org/tests/)
|
||||
***
|
||||
|
||||
[ [demo](http://parsedown.org/demo) ] [ [tests](http://parsedown.org/tests/) ]
|
||||
|
||||
***
|
||||
|
||||
### Features
|
||||
|
||||
* [fast](http://parsedown.org/speed)
|
||||
* [consistent](http://parsedown.org/consistency)
|
||||
* [GitHub Flavored](https://help.github.com/articles/github-flavored-markdown)
|
||||
* [tested](https://travis-ci.org/erusev/parsedown) in PHP 5.2, 5.3, 5.4 and 5.5
|
||||
* friendly to international input
|
||||
|
||||
### Installation
|
||||
|
||||
|
@@ -5,7 +5,7 @@ include 'Parsedown.php';
|
||||
class Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
const provider_dir = 'data/';
|
||||
|
||||
|
||||
/**
|
||||
* @dataProvider provider
|
||||
*/
|
||||
@@ -15,33 +15,41 @@ class Test extends PHPUnit_Framework_TestCase
|
||||
|
||||
$this->assertEquals($expected_markup, $actual_markup);
|
||||
}
|
||||
|
||||
|
||||
function provider()
|
||||
{
|
||||
$provider = array();
|
||||
|
||||
$DirectoryIterator = new DirectoryIterator(__DIR__ . '/' . self::provider_dir);
|
||||
|
||||
|
||||
$path = dirname(__FILE__).'/';
|
||||
|
||||
$DirectoryIterator = new DirectoryIterator($path . '/' . self::provider_dir);
|
||||
|
||||
foreach ($DirectoryIterator as $Item)
|
||||
{
|
||||
if ($Item->isFile() and $Item->getExtension() === 'md')
|
||||
if ($Item->isFile())
|
||||
{
|
||||
$filename = $Item->getFilename();
|
||||
|
||||
$extension = pathinfo($filename, PATHINFO_EXTENSION);
|
||||
|
||||
if ($extension !== 'md')
|
||||
continue;
|
||||
|
||||
$basename = $Item->getBasename('.md');
|
||||
|
||||
$markdown = file_get_contents(__DIR__ . '/' . self::provider_dir . $basename . '.md');
|
||||
|
||||
|
||||
$markdown = file_get_contents($path . '/' . self::provider_dir . $basename . '.md');
|
||||
|
||||
if (!$markdown)
|
||||
continue;
|
||||
|
||||
$expected_markup = file_get_contents(__DIR__ . '/' . self::provider_dir . $basename . '.html');
|
||||
|
||||
$expected_markup = file_get_contents($path . '/' . self::provider_dir . $basename . '.html');
|
||||
$expected_markup = str_replace("\r\n", "\n", $expected_markup);
|
||||
$expected_markup = str_replace("\r", "\n", $expected_markup);
|
||||
|
||||
|
||||
$provider [] = array($markdown, $expected_markup);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return $provider;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@@ -1,5 +1,6 @@
|
||||
<p><strong><em>em strong</em></strong></p>
|
||||
<p><strong><em>one</em> at the start</strong></p>
|
||||
<p><strong>one at the <em>end</em></strong></p>
|
||||
<p><strong>one <em>in the</em> middle</strong></p>
|
||||
<p><strong>one with <em>asterisks</em></strong></p>
|
||||
<p><strong><em>em strong</em> strong</strong></p>
|
||||
<p><strong>strong <em>em strong</em></strong></p>
|
||||
<p><strong>strong <em>em strong</em> strong</strong></p>
|
||||
<p><strong><em>em strong</em> strong</strong></p>
|
||||
<p><strong>strong <em>em strong</em></strong></p>
|
||||
<p><strong>strong <em>em strong</em> strong</strong></p>
|
@@ -1,9 +1,11 @@
|
||||
___em strong___
|
||||
___em strong_ strong__
|
||||
|
||||
___one_ at the start__
|
||||
__strong _em strong___
|
||||
|
||||
__one at the _end___
|
||||
__strong _em strong_ strong__
|
||||
|
||||
__one _in the_ middle__
|
||||
***em strong* strong**
|
||||
|
||||
**one with *asterisks***
|
||||
**strong *em strong***
|
||||
|
||||
**strong *em strong* strong**
|
@@ -2,4 +2,6 @@
|
||||
<p><em>multiline
|
||||
emphasis</em></p>
|
||||
<p>_ this _ is not an emphasis, neither is _ this_, _this _, or _this*</p>
|
||||
<p>an empty emphasis __ ** is not an emphasis</p>
|
||||
<p>this_is_not_an_emphasis</p>
|
||||
<p>an empty emphasis __ ** is not an emphasis</p>
|
||||
<p>*mixed *<em>double and</em> single asterisk** spans</p>
|
@@ -5,4 +5,8 @@ emphasis_
|
||||
|
||||
_ this _ is not an emphasis, neither is _ this_, _this _, or _this*
|
||||
|
||||
an empty emphasis __ ** is not an emphasis
|
||||
this_is_not_an_emphasis
|
||||
|
||||
an empty emphasis __ ** is not an emphasis
|
||||
|
||||
*mixed **double and* single asterisk** spans
|
5
tests/data/fenced_code_block.html
Normal file
5
tests/data/fenced_code_block.html
Normal file
@@ -0,0 +1,5 @@
|
||||
<pre><code><?php
|
||||
|
||||
$message = 'fenced code block';
|
||||
echo $message;</code></pre>
|
||||
<pre><code>tilde</code></pre>
|
10
tests/data/fenced_code_block.md
Normal file
10
tests/data/fenced_code_block.md
Normal file
@@ -0,0 +1,10 @@
|
||||
```
|
||||
<?php
|
||||
|
||||
$message = 'fenced code block';
|
||||
echo $message;
|
||||
```
|
||||
|
||||
~~~
|
||||
tilde
|
||||
~~~
|
@@ -1,2 +1,3 @@
|
||||
<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>
|
||||
<p>an <a href="http://example.com">implicit</a> reference link with an empty link definition</p>
|
||||
<p>an <a href="http://example.com" title="Example">explicit</a> reference link with a title</p>
|
@@ -2,4 +2,8 @@ an [implicit] reference link
|
||||
|
||||
[implicit]: http://example.com
|
||||
|
||||
an [implicit][] reference link with an empty link definition
|
||||
an [implicit][] reference link with an empty link definition
|
||||
|
||||
an [explicit][example] reference link with a title
|
||||
|
||||
[example]: http://example.com "Example"
|
@@ -1,2 +1,4 @@
|
||||
<p><a href="http://example.com">link</a></p>
|
||||
<p><a href="http://example.com"><code>link</code></a></p>
|
||||
<p><a href="http://example.com" title="Example">link with title</a></p>
|
||||
<p><a href="http://example.com"><img alt="MD Logo" src="http://parsedown.org/md.png"></a></p>
|
@@ -1,3 +1,7 @@
|
||||
[link](http://example.com)
|
||||
|
||||
[`link`](http://example.com)
|
||||
|
||||
[link with title](http://example.com "Example")
|
||||
|
||||
[](http://example.com)
|
7
tests/data/multiline_list_paragraph.html
Normal file
7
tests/data/multiline_list_paragraph.html
Normal file
@@ -0,0 +1,7 @@
|
||||
<ul>
|
||||
<li>
|
||||
<p>li</p>
|
||||
<p>line
|
||||
line</p>
|
||||
</li>
|
||||
</ul>
|
4
tests/data/multiline_list_paragraph.md
Normal file
4
tests/data/multiline_list_paragraph.md
Normal file
@@ -0,0 +1,4 @@
|
||||
- li
|
||||
|
||||
line
|
||||
line
|
3
tests/data/strikethrough.html
Normal file
3
tests/data/strikethrough.html
Normal file
@@ -0,0 +1,3 @@
|
||||
<p><del>strikethrough</del></p>
|
||||
<p>in the <del>middle</del> of a sentence</p>
|
||||
<p>in the middle of a w<del>or</del>d</p>
|
5
tests/data/strikethrough.md
Normal file
5
tests/data/strikethrough.md
Normal file
@@ -0,0 +1,5 @@
|
||||
~~strikethrough~~
|
||||
|
||||
in the ~~middle~~ of a sentence
|
||||
|
||||
in the middle of a w~~or~~d
|
6
tests/data/strong_em.html
Normal file
6
tests/data/strong_em.html
Normal file
@@ -0,0 +1,6 @@
|
||||
<p><em><strong>strong em</strong></em> </p>
|
||||
<p><em>em <strong>strong em</strong></em></p>
|
||||
<p><em><strong>strong em</strong> em</em></p>
|
||||
<p><em><strong>strong em</strong></em></p>
|
||||
<p><em>em <strong>strong em</strong></em></p>
|
||||
<p><em><strong>strong em</strong> em</em></p>
|
11
tests/data/strong_em.md
Normal file
11
tests/data/strong_em.md
Normal file
@@ -0,0 +1,11 @@
|
||||
***strong em***
|
||||
|
||||
*em **strong em***
|
||||
|
||||
***strong em** em*
|
||||
|
||||
___strong em___
|
||||
|
||||
_em __strong em___
|
||||
|
||||
___strong em__ em_
|
@@ -3,4 +3,5 @@
|
||||
<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>
|
||||
<p><a href="http://example.com">one</a> with an upper case label</p>
|
||||
<p><a href="http://example.com"><code>link</code></a></p>
|
@@ -13,4 +13,6 @@ one][website] defined on 2 lines
|
||||
|
||||
[one][label] with an upper case label
|
||||
|
||||
[LABEL]: http://example.com
|
||||
[LABEL]: http://example.com
|
||||
|
||||
[`link`][website]
|
1
tests/data/url_autolinking.html
Normal file
1
tests/data/url_autolinking.html
Normal file
@@ -0,0 +1 @@
|
||||
<p>Here's an autolink <a href="http://example.com">http://example.com</a>.</p>
|
1
tests/data/url_autolinking.md
Normal file
1
tests/data/url_autolinking.md
Normal file
@@ -0,0 +1 @@
|
||||
Here's an autolink http://example.com.
|
Reference in New Issue
Block a user