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

Compare commits

...

51 Commits

Author SHA1 Message Date
6081954185 resolve #154 2014-04-18 00:19:22 +03:00
d841003c65 fenced code blocks should respect indnetation 2014-04-17 23:09:10 +03:00
f310bbe13f nested calls to lines should not reset reference definitions 2014-04-17 15:07:09 +03:00
2595f366d9 texts should not share reference definitions 2014-04-17 14:43:45 +03:00
e5dc563804 replace tabs with spaces 2014-04-17 13:34:17 +03:00
e0901ee9c7 remove CONTRIBUTING.md 2014-04-17 11:47:53 +03:00
5316a2e0dd improve readme 2014-04-17 11:22:49 +03:00
5be4491943 make parser class more extensible 2014-04-17 10:59:35 +03:00
4e670129c8 simplify test class 2014-04-17 10:46:07 +03:00
159c3cede6 move deprecated methods to the bottom of the class 2014-04-17 01:11:30 +03:00
c10bde0174 common rules should be in a global .gitignore 2014-03-24 23:08:52 +02:00
24d872383c resolve #140 2014-03-19 00:58:26 +02:00
7ef45894a7 Merge pull request #128 from wkpark/fixup_table
resolve #125 using strpos()
2014-02-28 14:05:10 +02:00
9bf64d2e31 resolve #125 using strpos() 2014-02-27 23:58:24 +09:00
886c620440 Merge pull request #122 from wkpark/marker_index
use $closestMarkerIndex
2014-02-27 14:14:14 +02:00
e156c418d6 fixup regression due to commit 59907ff7 "simplify em/strong routine"
use $closestMarkerIndex correctly
2014-02-26 14:14:56 +09:00
1734f6fc85 Merge pull request #124 from hkdobrev/psr-2-bc
Add set_breaks_enabled() as an alias for BC
2014-02-25 00:48:28 +02:00
d8650cd77c Add set_breaks_enabled() as an alias for BC
Backwards-compatibility is kept with versions before PSR-2 naming.

See http://git.io/SsTarw
2014-02-25 00:43:09 +02:00
3fa9d62572 psr-2 names 2014-02-24 01:38:58 +02:00
4f851205a7 simplify content types 2014-02-24 00:55:34 +02:00
0985c2ef29 fix [0] reference labels 2014-02-23 23:43:18 +02:00
9fd9262f16 implement tables 2014-02-23 18:55:34 +02:00
a6756fd4fa resolve #117 2014-02-22 12:35:54 +02:00
1243fcf3e0 simplify example 2014-02-21 02:49:59 +02:00
1e8d917f7a replace synopsis with a more appropriate word 2014-02-21 02:26:23 +02:00
324eaf7c15 move synopsis to the top 2014-02-21 02:23:17 +02:00
f972f7f15d arrange methods 2014-02-21 02:22:31 +02:00
688b761d32 remove obsolete variables 2014-02-21 02:02:36 +02:00
b8bd12f565 parser should be less dependent on compiler 2014-02-21 01:54:23 +02:00
7a20a9fb60 Merge pull request #114 from wkpark/fixup_reference_label
fixup internal reference labling to make code more readable
2014-02-20 13:41:18 +02:00
6fed312d3c fixup internal reference labling to make code more readable 2014-02-19 13:30:46 +09:00
d0784d1006 Merge pull request #110 from wkpark/hr_heading
support HTML hr and headings
2014-02-17 21:29:57 +02:00
446fead459 simple html cases 2014-02-17 23:33:56 +09:00
ccbdfabaff support HR and headings as block markups 2014-02-17 23:31:08 +09:00
bc30ad8e30 Merge pull request #98 from hkdobrev/php-5.6
Run the testsuite on PHP 5.6
2014-02-12 21:45:52 +02:00
d9f325903a Run the testsuite on PHP 5.6 2014-02-12 19:13:14 +02:00
d29ff18299 resolve #92 2014-02-06 14:16:14 +02:00
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
34 changed files with 1475 additions and 1061 deletions

3
.gitignore vendored
View File

@ -1,3 +0,0 @@
.DS_Store
.idea
nbproject

View File

@ -1,8 +1,9 @@
language: php
php:
- 5.6
- 5.5
- 5.4
- 5.3
- 5.2
- hhvm
- hhvm

View File

@ -1,15 +0,0 @@
Do create pull requests that:
* resolve an issue
* optimise an existing feature or text
Do NOT create pull requests that:
* introduce a feature or text
* change the currently used coding style
Pull requests should do only ONE thing. If a pull request contains unrelated updates, they should be submitted as separate pull requests.
By contributing to the project, you grant to the creator of the project a perpetual, worldwide, no-charge, 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

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

View File

@ -4,52 +4,64 @@ include 'Parsedown.php';
class Test extends PHPUnit_Framework_TestCase
{
const provider_dir = 'data/';
public function __construct($name = null, array $data = array(), $dataName = '')
{
$this->dataDir = dirname(__FILE__).'/data/';
/**
* @dataProvider provider
*/
function test_($markdown, $expected_markup)
{
$actual_markup = Parsedown::instance()->parse($markdown);
parent::__construct($name, $data, $dataName);
}
$this->assertEquals($expected_markup, $actual_markup);
}
private $dataDir;
function provider()
{
$provider = array();
/**
* @dataProvider data
*/
function test_($filename)
{
$markdown = file_get_contents($this->dataDir . $filename . '.md');
$path = dirname(__FILE__).'/';
$expectedMarkup = file_get_contents($this->dataDir . $filename . '.html');
$DirectoryIterator = new DirectoryIterator($path . '/' . self::provider_dir);
$expectedMarkup = str_replace("\r\n", "\n", $expectedMarkup);
$expectedMarkup = str_replace("\r", "\n", $expectedMarkup);
foreach ($DirectoryIterator as $Item)
{
if ($Item->isFile())
{
$filename = $Item->getFilename();
$actualMarkup = Parsedown::instance()->text($markdown);
$extension = pathinfo($filename, PATHINFO_EXTENSION);
$this->assertEquals($expectedMarkup, $actualMarkup);
}
if ($extension !== 'md')
continue;
function data()
{
$data = array();
$basename = $Item->getBasename('.md');
$Folder = new DirectoryIterator($this->dataDir);
$markdown = file_get_contents($path . '/' . self::provider_dir . $basename . '.md');
foreach ($Folder as $File)
{
/** @var $File DirectoryIterator */
if (!$markdown)
continue;
if ( ! $File->isFile())
{
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);
$filename = $File->getFilename();
$provider [] = array($markdown, $expected_markup);
}
}
$extension = pathinfo($filename, PATHINFO_EXTENSION);
return $provider;
}
}
if ($extension !== 'md')
{
continue;
}
$basename = $File->getBasename('.md');
if (file_exists($this->dataDir . $basename . '.html'))
{
$data []= array($basename);
}
}
return $data;
}
}

View File

@ -0,0 +1,18 @@
<table>
<thead>
<tr>
<th>header 1</th>
<th>header 2</th>
</tr>
</thead>
<tbody>
<tr>
<td>cell 1.1</td>
<td>cell 1.2</td>
</tr>
<tr>
<td>cell 2.1</td>
<td>cell 2.2</td>
</tr>
</tbody>
</table>

View File

@ -0,0 +1,4 @@
| header 1 | header 2 |
| -------- | -------- |
| cell 1.1 | cell 1.2 |
| cell 2.1 | cell 2.2 |

View File

@ -0,0 +1,21 @@
<table>
<thead>
<tr>
<th align="left">header 1</th>
<th align="center">header 2</th>
<th align="right">header 2</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">cell 1.1</td>
<td align="center">cell 1.2</td>
<td align="right">cell 1.3</td>
</tr>
<tr>
<td align="left">cell 2.1</td>
<td align="center">cell 2.2</td>
<td align="right">cell 2.3</td>
</tr>
</tbody>
</table>

View File

@ -0,0 +1,4 @@
| header 1 | header 2 | header 2 |
| :------- | :------: | -------: |
| cell 1.1 | cell 1.2 | cell 1.3 |
| cell 2.1 | cell 2.2 | cell 2.3 |

View File

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

View File

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

View File

@ -1,3 +1,6 @@
<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><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>
<p><code>sth `` sth</code></p>

View File

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

View File

@ -3,16 +3,10 @@
<ul>
<li>li
<ul>
<li>li
<ul>
<li>li</li>
</ul>
</li>
<li>li</li>
</ul>
</li>
</ul></li>
<li>li</li>
</ul>
</li>
</ul></li>
<li>li</li>
</ul>

View File

@ -1,7 +1,6 @@
- li
- li
- li
- li
- li
- li
- li

View File

@ -0,0 +1,28 @@
<p>Headings:</p>
<h2 id="overview">Overview</h2>
<p>blah</p>
<H2 id="block">Block Elements</H2>
<p>blah</p>
<h3 id="span">
Span Elements
</h3>
<p>blah</p>
<p>Hr's:</p>
<hr>
<p>blah</p>
<hr/>
<p>blah</p>
<hr />
<p>blah</p>
<hr>
<p>blah</p>
<hr/>
<p>blah</p>
<hr />
<p>blah</p>
<hr class="foo" id="bar" />
<p>blah</p>
<hr class="foo" id="bar"/>
<p>blah</p>
<hr class="foo" id="bar" >
<p>blah</p>

39
tests/data/html_simple.md Normal file
View File

@ -0,0 +1,39 @@
Headings:
<h2 id="overview">Overview</h2>
blah
<H2 id="block">Block Elements</H2>
blah
<h3 id="span">
Span Elements
</h3>
blah
Hr's:
<hr>
blah
<hr/>
blah
<hr />
blah
<hr>
blah
<hr/>
blah
<hr />
blah
<hr class="foo" id="bar" />
blah
<hr class="foo" id="bar"/>
blah
<hr class="foo" id="bar" >
blah

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

@ -1 +1,2 @@
<p><a href="http://example.com" title="Title">single quotes</a> and <a href="http://example.com" title="Title">double quotes</a></p>
<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

@ -1 +1,6 @@
[single quotes](http://example.com 'Title') and [double quotes](http://example.com "Title")
[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,37 @@
<table>
<thead>
<tr>
<th>header 1</th>
<th>header 2</th>
</tr>
</thead>
<tbody>
<tr>
<td>cell 1.1</td>
<td>cell 1.2</td>
</tr>
<tr>
<td>cell 2.1</td>
<td>cell 2.2</td>
</tr>
</tbody>
</table>
<hr />
<table>
<thead>
<tr>
<th align="left">header 1</th>
<th>header 2</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">cell 1.1</td>
<td>cell 1.2</td>
</tr>
<tr>
<td align="left">cell 2.1</td>
<td>cell 2.2</td>
</tr>
</tbody>
</table>

View File

@ -0,0 +1,11 @@
header 1 | header 2
-------- | --------
cell 1.1 | cell 1.2
cell 2.1 | cell 2.2
---
header 1 | header 2
:------- | --------
cell 1.1 | cell 1.2
cell 2.1 | cell 2.2

View File

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

View File

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

View File

@ -0,0 +1,18 @@
<table>
<thead>
<tr>
<th><em>header</em> 1</th>
<th>header 2</th>
</tr>
</thead>
<tbody>
<tr>
<td><em>cell</em> 1.1</td>
<td><del>cell</del> 1.2</td>
</tr>
<tr>
<td><code>cell</code> 2.1</td>
<td>cell 2.2</td>
</tr>
</tbody>
</table>

View File

@ -0,0 +1,4 @@
| _header_ 1 | header 2 |
| ------------ | ------------ |
| _cell_ 1.1 | ~~cell~~ 1.2 |
| `cell` 2.1 | cell 2.2 |

View File

@ -3,5 +3,6 @@
<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 a mixed case label and an upper case definition</p>
<p><a href="http://example.com">one</a> with the a label on the next line</p>
<p><a href="http://example.com"><code>link</code></a></p>

View File

@ -11,8 +11,11 @@
[multiline
one][website] defined on 2 lines
[one][label] with an upper case label
[one][Label] with a mixed case label and an upper case definition
[LABEL]: http://example.com
[one]
[1] with the a label on the next line
[`link`][website]

View File

@ -0,0 +1,18 @@
<table>
<thead>
<tr>
<th>header 1</th>
<th>header 2</th>
</tr>
</thead>
<tbody>
<tr>
<td>cell 1.1</td>
<td>cell 1.2</td>
</tr>
<tr>
<td>cell 2.1</td>
<td>cell 2.2</td>
</tr>
</tbody>
</table>

View File

@ -0,0 +1,4 @@
| header 1 | header 2 |
| ------------- | ----------- |
| cell 1.1 | cell 1.2 |
| cell 2.1 | cell 2.2 |

View File

@ -1,2 +1,3 @@
<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>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,3 +1,5 @@
an autolink http://example.com
inside of brackets [http://example.com], inside of braces {http://example.com}, inside of parentheses (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/