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

Compare commits

...

43 Commits
1.1.4 ... 1.2.0

Author SHA1 Message Date
098f188552 update readme 2015-01-10 14:53:08 +02:00
e68a458105 improve consistency 2015-01-10 14:22:54 +02:00
86a27b48bc update readme 2015-01-10 03:43:48 +02:00
c45dee6850 update readme 2015-01-10 03:41:29 +02:00
06135cd75a improve CommonMark compliance 2015-01-10 02:45:51 +02:00
7d3af6bf83 update commonmark test 2015-01-09 00:08:14 +02:00
dfacf7a71a add urlsLinked setter 2015-01-08 16:13:55 +02:00
fd0d8125e7 introduce more structure to parsing of unmarked inlines 2015-01-08 15:19:43 +02:00
b1be886d65 improve names of protected members 2015-01-05 15:05:18 +02:00
19bc6a7083 update variable names to match updated member names 2015-01-05 14:22:06 +02:00
b5efe98e2f improve names of protected members 2015-01-05 14:22:06 +02:00
5639ef7d69 fix PHPDoc 2015-01-05 14:22:06 +02:00
d42fcdc423 improve readme 2015-01-05 14:18:36 +02:00
d29d879ec6 separate parsing of inlines that don't have markers to improve simplicity 2015-01-04 18:37:24 +02:00
c9b4de3c9d resolve #253 2014-12-21 13:51:16 +02:00
38cc1ca7e0 resolve #251 2014-12-16 13:58:33 +02:00
23c4097fde restore support for PHP 5.2 2014-12-15 13:59:37 +02:00
05e87566a9 Merge branch 'master' of https://github.com/erusev/parsedown 2014-12-15 01:08:15 +02:00
ac68800717 improve extensibility 2014-12-15 01:07:29 +02:00
1aade35c5e update test 2014-12-15 00:56:22 +02:00
361febf7c6 improve CommonMark compliance 2014-12-15 00:52:03 +02:00
715f7572ad improve readme 2014-12-12 02:30:45 +02:00
907bd11613 improve readme 2014-12-11 15:30:40 +02:00
56c6169822 improve readme 2014-12-11 14:34:58 +02:00
6d54fda73a improve readme 2014-12-10 20:37:33 +02:00
3b5e4e23ec improve readme 2014-12-10 20:36:15 +02:00
85ee06898b resolve #182 2014-12-10 17:19:05 +02:00
4c24e68b42 Merge remote-tracking branch 'origin/commonmark'
Conflicts:
	Parsedown.php
	phpunit.xml.dist
	test/ParsedownTest.php
2014-12-06 02:50:54 +02:00
094cb88dac update test 2014-12-02 23:53:19 +02:00
7ab3c60a77 improve CommonMark compliance 2014-12-02 22:23:43 +02:00
2438c1a43d improve output readability 2014-11-29 23:53:38 +02:00
46196c1ac3 markup formatting shouldn't impact results 2014-11-29 22:58:42 +02:00
aa3d4d6eb7 simplify 2014-11-29 21:39:42 +02:00
6fb534bc34 improve consistency 2014-11-29 21:34:46 +02:00
28a202ee9e simplify 2014-11-29 20:18:23 +02:00
e46be110fb Merge branch 'master' into commonmark 2014-11-29 16:42:04 +02:00
d53c7dbcd9 Merge pull request #221 from hkdobrev/commonmark-renaming
Rename everything to CommonMark
2014-09-14 00:29:04 +03:00
42222e6b01 Rename everything to CommonMark 2014-09-14 00:11:18 +03:00
e7d160049e Merge pull request #218 from hkdobrev/common-mark
Rename Standard Markdown to CommonMark
2014-09-06 01:17:15 +03:00
ce4a29aec5 Rename Standard Markdown to CommonMark
http://blog.codinghorror.com/standard-markdown-is-now-common-markdown/

2d37920c39
2014-09-06 01:12:35 +03:00
8ecf828777 Merge pull request #217 from hkdobrev/standard-markdown
Standard markdown
2014-09-05 23:38:01 +03:00
c18ff7f370 Add Docblock and attribution to JS test runner 2014-09-05 23:28:07 +03:00
6f1fac9823 Add Standard Markdown testsuite.
You could run the Parsedown testsuite only with:
    phpunit --testsuite ParsedownTests

And you could run the Standard Markdown one with:
    phpunit --testsuite StandardMarkdown

See more at http://standardmarkdown.com/
2014-09-05 23:12:33 +03:00
12 changed files with 513 additions and 281 deletions

File diff suppressed because it is too large Load Diff

View File

@ -11,8 +11,8 @@ Better Markdown Parser in PHP
* [GitHub flavored](https://help.github.com/articles/github-flavored-markdown)
* [Tested](http://parsedown.org/tests/) in PHP 5.2, 5.3, 5.4, 5.5, 5.6 and [hhvm](http://www.hhvm.com/)
* Extensible
* [Markdown Extra extension](https://github.com/erusev/parsedown-extra) <sup>new</sup>
* [JavaScript port](https://github.com/hkdobrev/parsedown.js) under development <sup>new</sup>
* [Markdown Extra extension](https://github.com/erusev/parsedown-extra)
* [JavaScript port](https://github.com/hkdobrev/parsedown.js) under development
### Installation
@ -31,13 +31,16 @@ More examples in [the wiki](https://github.com/erusev/parsedown/wiki/Usage) and
### Questions
**How does Parsedown work?**<br/>
Parsedown recognises that the Markdown syntax is optimised for humans so it tries to read like one. It goes through text line by line. It looks at how lines start to identify blocks. It looks for special characters to identify inline elements.
It tries to read Markdown like a human. First, it looks at the lines. Its interested in how the lines start. This helps it recognise blocks. It knows, for example, that if a line start with a `-` then it perhaps belong to a list. Once it recognises the blocks, it continues to the content. As it reads, it watches out for special characters. This helps it recognise inline elements (or inlines).
**Why doesnt Parsedown use namespaces?**<br/>
Using namespaces would mean dropping support for PHP 5.2. We believe that since Parsedown is a single class with an uncommon name, making this trade wouldn't be worth it.
It'd mean no support for PHP 5.2. Would it be worth it?
**Is Parsedown compliant with CommonMark?**<br/>
We are [working on it](https://github.com/erusev/parsedown/tree/commonmark).
The majority of the CommonMark tests pass. Most of the tests that don't pass deal with cases that are quite extreme. Yet, we are working on them. As CommonMark matures, compliance should improve.
**Who uses Parsedown?**<br/>
[phpDocumentor](http://www.phpdoc.org/), [October CMS](http://octobercms.com/), [Bolt CMS](http://bolt.cm/), [RaspberryPi.org](http://www.raspberrypi.org/) and [more](https://www.versioneye.com/php/erusev:parsedown/references).
[phpDocumentor](http://www.phpdoc.org/), [October CMS](http://octobercms.com/), [Bolt CMS](http://bolt.cm/), [Kirby CMS](http://getkirby.com/), [RaspberryPi.org](http://www.raspberrypi.org/) and [more](https://www.versioneye.com/php/erusev:parsedown/references).
**How can I help?**<br/>
Use the project, tell friends about it and if you feel generous, [donate some money](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=528P3NZQMP8N2).

74
test/CommonMarkTest.php Normal file
View File

@ -0,0 +1,74 @@
<?php
/**
* Test Parsedown against the CommonMark spec.
*
* Some code based on the original JavaScript test runner by jgm.
*
* @link http://commonmark.org/ CommonMark
* @link http://git.io/8WtRvQ JavaScript test runner
*/
class CommonMarkTest extends PHPUnit_Framework_TestCase
{
const SPEC_URL = 'https://raw.githubusercontent.com/jgm/stmd/master/spec.txt';
/**
* @dataProvider data
* @param $section
* @param $markdown
* @param $expectedHtml
*/
function test_($section, $markdown, $expectedHtml)
{
$Parsedown = new Parsedown();
$Parsedown->setUrlsLinked(false);
$actualHtml = $Parsedown->text($markdown);
$actualHtml = $this->normalizeMarkup($actualHtml);
$this->assertEquals($expectedHtml, $actualHtml);
}
function data()
{
$spec = file_get_contents(self::SPEC_URL);
$spec = strstr($spec, '<!-- END TESTS -->', true);
$tests = array();
$currentSection = '';
preg_replace_callback(
'/^\.\n([\s\S]*?)^\.\n([\s\S]*?)^\.$|^#{1,6} *(.*)$/m',
function($matches) use ( & $tests, & $currentSection, & $testCount) {
if (isset($matches[3]) and $matches[3]) {
$currentSection = $matches[3];
} else {
$testCount++;
$markdown = $matches[1];
$markdown = preg_replace('/→/', "\t", $markdown);
$expectedHtml = $matches[2];
$expectedHtml = $this->normalizeMarkup($expectedHtml);
$tests []= array(
$currentSection, # section
$markdown, # markdown
$expectedHtml, # html
);
}
},
$spec
);
return $tests;
}
private function normalizeMarkup($markup)
{
$markup = preg_replace("/\n+/", "\n", $markup);
$markup = preg_replace('/^\s+/m', '', $markup);
$markup = preg_replace('/^((?:<[\w]+>)+)\n/m', '$1', $markup);
$markup = preg_replace('/\n((?:<\/[\w]+>)+)$/m', '$1', $markup);
$markup = trim($markup);
return $markup;
}
}

View File

@ -116,21 +116,21 @@ comment
MARKDOWN_WITH_MARKUP;
$expectedHtml = <<<EXPECTED_HTML
<p>&lt;div><em>content</em>&lt;/div></p>
<p>&lt;div&gt;<em>content</em>&lt;/div&gt;</p>
<p>sparse:</p>
<p>&lt;div>
&lt;div class="inner">
<p>&lt;div&gt;
&lt;div class=&quot;inner&quot;&gt;
<em>content</em>
&lt;/div>
&lt;/div></p>
&lt;/div&gt;
&lt;/div&gt;</p>
<p>paragraph</p>
<p>&lt;style type="text/css"></p>
<pre><code>p {
color: red;
}</code></pre>
<p>&lt;/style></p>
<p>&lt;style type=&quot;text/css&quot;&gt;
p {
color: red;
}
&lt;/style&gt;</p>
<p>comment</p>
<p>&lt;!-- html comment --></p>
<p>&lt;!-- html comment --&gt;</p>
EXPECTED_HTML;
$parsedownWithNoMarkup = new Parsedown();
$parsedownWithNoMarkup->setMarkupEscaped(true);

View File

@ -4,6 +4,6 @@
<h4>h4</h4>
<h5>h5</h5>
<h6>h6</h6>
<h6>h6</h6>
<p>####### not a heading</p>
<h1>closed h1</h1>
<p>#</p>

View File

@ -10,7 +10,7 @@
###### h6
####### h6
####### not a heading
# closed h1 #

View File

@ -1 +1,2 @@
<p><img alt="Markdown Logo" src="/md.png" /></p>
<p><img src="/md.png" alt="Markdown Logo" /></p>
<p>![missing reference]</p>

View File

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

View File

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

View File

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

View File

@ -1,12 +1,12 @@
<hr>
<hr />
<p>paragraph</p>
<hr/>
<hr />
<p>paragraph</p>
<hr />
<p>paragraph</p>
<hr class="foo" id="bar" />
<p>paragraph</p>
<hr class="foo" id="bar"/>
<hr class="foo" id="bar" />
<p>paragraph</p>
<hr class="foo" id="bar" >
<hr class="foo" id="bar" />
<p>paragraph</p>

View File

@ -1,6 +1,6 @@
<p>AT&amp;T has an ampersand in their name</p>
<p>this &amp; that</p>
<p>4 &lt; 5 and 6 > 5</p>
<p>4 &lt; 5 and 6 &gt; 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>