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

Compare commits

..

78 Commits
0.7.7 ... 0.9.3

Author SHA1 Message Date
95e9878fb0 improve tests 2014-02-06 02:37:09 +02:00
611aed179d simplify reference 2014-02-06 02:36:22 +02:00
abb88d59fa fix reference 2014-02-06 02:36:11 +02:00
14ab6d46fe resolve #82 2014-02-06 00:10:18 +02:00
ebfdace4c6 reference labels should be case insensitive 2014-02-05 14:18:05 +02:00
ba7f377290 resolve #88, resolve #81 2014-02-05 14:03:43 +02:00
548a6f7945 resolve #89 2014-02-05 14:03:43 +02:00
7a4d3c0f18 Merge pull request #85 from cebe/simplify-tests
simplify testing and improved output
2014-02-04 03:46:39 -08:00
7f68a3a2e1 improve contributing guidelines 2014-02-04 01:49:55 +02:00
7193e634b2 Merge pull request #84 from wkpark/fix-em-strong
simplify em/strong routine
2014-02-03 05:28:20 -08:00
45c01d4673 simplify testing and improved output 2014-02-03 11:23:54 +01:00
59907ff757 simplify em/strong routine
retry to search em/strong markers to fix nested em/strong correctly
2014-02-03 16:48:28 +09:00
6e93b68692 outdented is shorter and probably more accurate 2014-02-02 23:41:58 +02:00
5a525be070 improve contributing guidelines 2014-02-02 23:23:50 +02:00
f5f1706e58 improve consistency of list item 2014-02-02 22:27:22 +02:00
b257d0ecaa add contributing guidelines 2014-02-02 22:14:53 +02:00
a7510b97e7 dense list items that follow sparse ones should not be rendered as sparse ones 2014-01-31 03:03:52 +02:00
e9098aebfa improve parsing of list item and code block by measuring line indentation 2014-01-31 02:19:18 +02:00
72f4a375ef Merge pull request #69 from KaneCohen/master 2014-01-29 15:16:00 -08:00
07b738b1c8 Remove one unnecessary /u flag. 2014-01-29 23:05:05 +00:00
f7181ee9b6 Remove /u flag from '*' chars. Add /u to urls. 2014-01-29 22:57:29 +00:00
0ce6caf81e Merge pull request #72 from cebe/code-edge
some edge case tests for the code tag
2014-01-29 14:31:39 -08:00
d3c975d4d8 some edge case tests for the code tag 2014-01-29 15:36:41 +01:00
55f360a591 Add unicode support for strong/em regex. 2014-01-29 10:30:21 +00:00
215ff63594 improve comments 2014-01-29 02:14:59 +02:00
3d581dcaa9 simplify names of block types 2014-01-27 22:21:58 +02:00
bbce965a9a read-only fields should be static 2014-01-27 00:58:18 +02:00
6069fdac81 refactor parsing of html 2014-01-27 00:10:24 +02:00
0f090e1a6e remove trailing line break 2014-01-27 00:08:55 +02:00
618ab4e156 improve layout of class members 2014-01-26 19:53:24 +02:00
7661b7c8f9 simplify comments 2014-01-26 19:14:44 +02:00
8f6495ce86 ternaries should not do more than assign a value 2014-01-26 19:13:08 +02:00
250ba80356 expression assignments should be separate 2014-01-26 19:05:24 +02:00
3ac9b96e57 element » block 2014-01-26 13:47:56 +02:00
b764deca66 improve comments 2014-01-26 03:36:25 +02:00
65ef541fda improve comments 2014-01-25 18:47:44 +02:00
c7b6d0235d unset brackets should not be separated 2014-01-25 14:53:39 +02:00
1a2124daae Merge pull request #65 from hkdobrev/comments-imperative
Use imperative tense in comments
2014-01-25 04:53:19 -08:00
bf6c9a6db2 Use imperative tense in comments 2014-01-24 01:47:44 +02:00
0494c6b274 improve comments 2014-01-24 01:28:03 +02:00
3e0c010c1f improve comments 2014-01-23 23:48:38 +02:00
3a5eecc23d replace logical operators with conditionals to improve readability 2014-01-23 22:46:49 +02:00
c8c5ae9df8 control structures should use braces 2014-01-23 22:34:02 +02:00
843786c07c improve comments 2014-01-23 22:08:06 +02:00
0c61f71e3f rtrim » chop 2014-01-23 13:07:15 +02:00
01a147c574 replace tabs with spaces to improve compatibility with psr-2 2014-01-23 00:57:36 +02:00
f0fbdaa6ca backtick within code span 2014-01-22 21:28:29 +02:00
e20c0a29bd nested elements should render on a new line 2014-01-22 21:28:29 +02:00
712dd23d30 simplify parsing of list 2014-01-22 21:28:29 +02:00
68f2871996 resolve #3 2014-01-22 21:28:29 +02:00
17e7e33847 name image title test 2014-01-22 21:28:29 +02:00
7cb9646d98 simplify compiling of links 2014-01-22 21:28:29 +02:00
325bdd9ff6 improve readme 2014-01-21 23:15:02 +02:00
2a0700abda resolve #61 2014-01-20 22:19:23 +02:00
4e83d79d76 setters should know nothing 2014-01-20 09:26:25 +02:00
354842fd6e simplify compiling 2014-01-19 23:34:20 +02:00
2b73e94c6c simplify parsing of escaped characters 2014-01-19 22:49:43 +02:00
0182812d6c remove unnecessary blank lines 2014-01-19 15:37:05 +02:00
f5dd3455f9 resolve #58 2014-01-19 00:52:07 +02:00
1017f22cdd fix paragraph list 2014-01-18 16:45:39 +02:00
88854955d6 take $inline_tags out of the method 2014-01-18 16:45:39 +02:00
654dd74074 lines that start with inline html should not get parsed as block-level markup, should resolve #54 and #57 2014-01-18 16:45:39 +02:00
fee5b71998 improve readme 2014-01-17 01:33:20 +02:00
149b687ee7 improve tests 2014-01-17 01:25:41 +02:00
98b17e3354 setext heading doesn't have to use regex 2014-01-17 01:23:25 +02:00
da966b83f1 atx heading doesn't have to use regex 2014-01-17 00:36:11 +02:00
b9ab495cb4 parse method doesn't have to use regex 2014-01-16 23:43:34 +02:00
408cb5c21f code block doesn't have to use regex 2014-01-16 23:43:12 +02:00
5dd0e8cb7b $deindented_line >= ... doesn't make sense 2014-01-16 23:39:56 +02:00
5521afde31 refactor $element 2014-01-13 23:45:31 +02:00
4317add3a2 add hhvm to PHP versions to test against 2013-12-28 14:57:25 +02:00
47d8a1382b implement automatic line breaks as an option 2013-12-26 23:43:25 +02:00
fd42f2e864 improve tests 2013-12-26 21:55:33 +02:00
c0b7155572 implement link titles 2013-12-26 21:53:48 +02:00
be366b63ea improve parsing of emphasis
**strong** and *em* and **strong** and *em*
2013-12-24 23:40:12 +02:00
68484504ca separate compiling of link / image
there are 2 types of input that produce link / image
2013-12-24 16:05:13 +02:00
4fecd91f7d span elements should get parsed on a first-come, first-served basis 2013-12-24 03:17:23 +02:00
9dae844a6e post-increment operators should not be separated 2013-12-22 02:03:53 +02:00
57 changed files with 1133 additions and 652 deletions

View File

@ -4,4 +4,5 @@ php:
- 5.5
- 5.4
- 5.3
- 5.2
- 5.2
- hhvm

20
CONTRIBUTING.md Normal file
View File

@ -0,0 +1,20 @@
Pull Requests
-------------
Do create pull requests that:
* resolve an issue
* improve an existing feature or text
Do not create pull requests that:
* introduce a feature or text
* change the interface
* change the coding style
If a pull request contains unrelated changes, they should be submitted as separate pull requests.
License
-------
By contributing to the project, you grant the creator of the project a perpetual, worldwide, irrevocable license to use, reproduce and distribute your contributions and derivative works. You also warrant that you are the sole owner of your contributions and that they are your original works of authorship.

File diff suppressed because it is too large Load Diff

View File

@ -13,7 +13,7 @@ Better [Markdown](http://en.wikipedia.org/wiki/Markdown) parser for PHP.
* [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
* [tested](https://travis-ci.org/erusev/parsedown) in PHP 5.2, 5.3, 5.4, 5.5 and [hhvm](http://www.hhvm.com/)
* friendly to international input
### Installation
@ -23,9 +23,9 @@ Include `Parsedown.php` or install [the composer package](https://packagist.org/
### Example
```php
$text = 'Hello **Parsedown**!';
$text = 'Hello *Parsedown*!';
$result = Parsedown::instance()->parse($text);
echo $result; # prints: <p>Hello <strong>Parsedown</strong>!</p>
echo $result; # prints: <p>Hello <em>Parsedown</em>!</p>
```

View File

@ -9,8 +9,14 @@ class Test extends PHPUnit_Framework_TestCase
/**
* @dataProvider provider
*/
function test_($markdown, $expected_markup)
function test_($filename)
{
$path = $this->get_data_path();
$markdown = file_get_contents($path . $filename . '.md');
$expected_markup = file_get_contents($path . $filename . '.html');
$expected_markup = str_replace("\r\n", "\n", $expected_markup);
$expected_markup = str_replace("\r", "\n", $expected_markup);
$actual_markup = Parsedown::instance()->parse($markdown);
$this->assertEquals($expected_markup, $actual_markup);
@ -20,9 +26,8 @@ class Test extends PHPUnit_Framework_TestCase
{
$provider = array();
$path = dirname(__FILE__).'/';
$DirectoryIterator = new DirectoryIterator($path . '/' . self::provider_dir);
$path = $this->get_data_path();
$DirectoryIterator = new DirectoryIterator($path);
foreach ($DirectoryIterator as $Item)
{
@ -36,20 +41,17 @@ class Test extends PHPUnit_Framework_TestCase
continue;
$basename = $Item->getBasename('.md');
$markdown = file_get_contents($path . '/' . self::provider_dir . $basename . '.md');
if (!$markdown)
continue;
$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);
if (file_exists($path.$basename.'.html')) {
$provider [] = array($basename);
}
}
}
return $provider;
}
function get_data_path()
{
return dirname(__FILE__).'/'.self::provider_dir;
}
}

View File

@ -4,4 +4,5 @@
<h4>h4</h4>
<h5>h5</h5>
<h6>h6</h6>
<h1>closed h1</h1>
<h1>closed h1</h1>
<p>#</p>

View File

@ -10,4 +10,6 @@
###### h6
# closed h1 #
# closed h1 #
#

View File

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

View File

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

View File

@ -1 +1,5 @@
<p>a <code>code span</code></p>
<p>a <code>code span</code></p>
<p><code>this is also a codespan</code> trailing text</p>
<p><code>and look at this one!</code></p>
<p>single backtick in a code span: <code>`</code></p>
<p>backtick-delimited string in a code span: <code>`foo`</code></p>

View File

@ -1 +1,9 @@
a `code span`
a `code span`
`this is also a codespan` trailing text
`and look at this one!`
single backtick in a code span: `` ` ``
backtick-delimited string in a code span: `` `foo` ``

View File

@ -0,0 +1,2 @@
<p><em><code>code</code></em> <strong><code>code</code></strong></p>
<p><em><code>code</code><strong><code>code</code></strong><code>code</code></em></p>

View File

@ -0,0 +1,4 @@
_`code`_ __`code`__
*`code`**`code`**`code`*

View File

@ -0,0 +1,18 @@
<ul>
<li>li
<ul>
<li>li
<ul>
<li>li
<ul>
<li>li</li>
</ul>
</li>
<li>li</li>
</ul>
</li>
<li>li</li>
</ul>
</li>
<li>li</li>
</ul>

View File

@ -0,0 +1,7 @@
- li
- li
- li
- li
- li
- li
- li

View File

@ -1,6 +1,8 @@
<p><strong><em>em strong</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></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>

View File

@ -1,9 +1,13 @@
___em strong___
___em strong_ strong__
__strong _em strong___
__strong _em strong_ strong__
***em strong***
***em strong* strong**
**strong *em strong***

1
tests/data/email.html Normal file
View File

@ -0,0 +1 @@
<p>my email is <a href="mailto:me@example.com">me@example.com</a></p>

1
tests/data/email.md Normal file
View File

@ -0,0 +1 @@
my email is <me@example.com>

View File

@ -1,7 +1,8 @@
<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>_ this _ is not an emphasis, neither is _ this_, _this _, or _this*</p>
<p><strong>strong</strong> and <em>em</em> and <strong>strong</strong> and <em>em</em></p>
<p><em>line
line
line</em></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>

View File

@ -1,9 +1,10 @@
_underscore_, *asterisk*, _one two_, *three four*, _a_, *b*
_multiline
emphasis_
**strong** and *em* and **strong** and *em*
_ this _ is not an emphasis, neither is _ this_, _this _, or _this*
_line
line
line_
this_is_not_an_emphasis

View File

@ -2,4 +2,5 @@
$message = 'fenced code block';
echo $message;</code></pre>
<pre><code>tilde</code></pre>
<pre><code>tilde</code></pre>
<pre><code class="language-php">echo 'language identifier';</code></pre>

View File

@ -7,4 +7,8 @@ echo $message;
~~~
tilde
~~~
~~~
```php
echo 'language identifier';
```

View File

@ -0,0 +1 @@
<p>&amp; &copy; &#123;</p>

View File

@ -0,0 +1 @@
&amp; &copy; &#123;

View File

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

View File

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

View File

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

View File

@ -0,0 +1 @@
![alt](/md.png "title")

View File

@ -1,4 +1,4 @@
<p><a href="http://example.com">link</a></p>
<p><a href="http://example.com">link</a> and <a href="/tests/">another 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>
<p><a href="http://example.com"><img alt="MD Logo" src="http://parsedown.org/md.png" /></a></p>
<p><a href="http://example.com"><img alt="MD Logo" src="http://parsedown.org/md.png" /> and text</a></p>

View File

@ -1,7 +1,7 @@
[link](http://example.com)
[link](http://example.com) and [another link](/tests/)
[`link`](http://example.com)
[link with title](http://example.com "Example")
[![MD Logo](http://parsedown.org/md.png)](http://example.com)
[![MD Logo](http://parsedown.org/md.png)](http://example.com)
[![MD Logo](http://parsedown.org/md.png) and text](http://example.com)

View File

@ -0,0 +1 @@
<p><a href="http://example.com" title="Title">single quotes</a> and <a href="http://example.com" title="Title">double quotes</a></p>

View File

@ -0,0 +1 @@
[single quotes](http://example.com 'Title') and [double quotes](http://example.com "Title")

View File

@ -0,0 +1 @@
<p><a href="http://example.com" title="Example">single quotes</a> and <a href="http://example.com" title="Example">double quotes</a></p>

View File

@ -0,0 +1 @@
[single quotes](http://example.com 'Example') and [double quotes](http://example.com "Example")

View File

@ -0,0 +1,10 @@
<div>
_parent_
<div>
_child_
</div>
<pre>
_adopted child_
</pre>
</div>
<p><em>outside</em></p>

View File

@ -0,0 +1,11 @@
<div>
_parent_
<div>
_child_
</div>
<pre>
_adopted child_
</pre>
</div>
_outside_

View File

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

View File

@ -0,0 +1,9 @@
paragraph
- li
- li
paragraph
* li
* li

View File

@ -0,0 +1,2 @@
<p><a href="http://example.com" title="example title">double quotes</a> and <a href="http://example.com" title="example title">single quotes</a> and <a href="http://example.com" title="example title">parentheses</a></p>
<p>[invalid title]: <a href="http://example.com">http://example.com</a> example title</p>

View File

@ -0,0 +1,6 @@
[double quotes] and [single quotes] and [parentheses]
[double quotes]: http://example.com "example title"
[single quotes]: http://example.com 'example title'
[parentheses]: http://example.com (example title)
[invalid title]: http://example.com example title

View File

@ -0,0 +1,4 @@
<hr />
<p>attributes:</p>
<hr style="background: #9bd;" />
<p>...</p>

View File

@ -0,0 +1,7 @@
<hr />
attributes:
<hr style="background: #9bd;" />
...

View File

@ -1,3 +1,4 @@
<p>an <b>important</b> <a href=''>link</a></p>
<p>broken<br/>
line</p>
line</p>
<p><b>inline tag</b> at the beginning</p>

View File

@ -1,4 +1,6 @@
an <b>important</b> <a href=''>link</a>
broken<br/>
line
line
<b>inline tag</b> at the beginning

View File

@ -0,0 +1,7 @@
<ul>
<li>
<p>li</p>
</li>
<li>li</li>
<li>li</li>
</ul>

View File

@ -0,0 +1,4 @@
- li
- li
- li

View File

@ -1,7 +1,6 @@
<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="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,12 +1,10 @@
AT&T has an ampersand in their name
AT&T is another way to write it
this & that
4 < 5 and 6 > 5
<http://example.com/autolink?a=1&b=2>
<http://example.com/autolink?a=1&b=2>
[inline link](/script?a=1&b=2)

View File

@ -1,3 +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>
<p>here's <del>one</del> followed by <del>another one</del></p>
<p>~~ this ~~ is not one neither is ~this~</p>

View File

@ -1,5 +1,5 @@
~~strikethrough~~
in the ~~middle~~ of a sentence
here's ~~one~~ followed by ~~another one~~
in the middle of a w~~or~~d
~~ this ~~ is not one neither is ~this~

View File

@ -1,6 +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</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</em></p>
<p><em>em <strong>strong em</strong> em</em></p>

View File

@ -1,11 +1,11 @@
***strong em***
*em **strong em***
***strong em** em*
___strong em___
*em **strong em** em*
_em __strong em___
___strong em__ em_
___strong em__ em_
_em __strong em__ em_

View File

@ -0,0 +1,6 @@
<pre><code>&lt;?php
$message = 'Hello World!';
echo $message;
echo "following a blank line";</code></pre>

View File

@ -0,0 +1,6 @@
<?php
$message = 'Hello World!';
echo $message;
echo "following a blank line";

View File

@ -1 +1,3 @@
<p>Here's an autolink <a href="http://example.com">http://example.com</a>.</p>
<p>an autolink <a href="http://example.com">http://example.com</a></p>
<p>inside of brackets [<a href="http://example.com">http://example.com</a>], inside of braces {<a href="http://example.com">http://example.com</a>}, inside of parentheses (<a href="http://example.com">http://example.com</a>)</p>
<p>trailing slash <a href="http://example.com/">http://example.com/</a> and <a href="http://example.com/path/">http://example.com/path/</a></p>

View File

@ -1 +1,5 @@
Here's an autolink http://example.com.
an autolink http://example.com
inside of brackets [http://example.com], inside of braces {http://example.com}, inside of parentheses (http://example.com)
trailing slash http://example.com/ and http://example.com/path/