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

Compare commits

...

36 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
26 changed files with 1447 additions and 1088 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,20 +0,0 @@
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

@ -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,54 +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_($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);
parent::__construct($name, $data, $dataName);
}
$actual_markup = Parsedown::instance()->parse($markdown);
private $dataDir;
$this->assertEquals($expected_markup, $actual_markup);
}
/**
* @dataProvider data
*/
function test_($filename)
{
$markdown = file_get_contents($this->dataDir . $filename . '.md');
function provider()
{
$provider = array();
$expectedMarkup = file_get_contents($this->dataDir . $filename . '.html');
$path = $this->get_data_path();
$DirectoryIterator = new DirectoryIterator($path);
$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');
if (file_exists($path.$basename.'.html')) {
$provider [] = array($basename);
}
}
}
$Folder = new DirectoryIterator($this->dataDir);
return $provider;
}
foreach ($Folder as $File)
{
/** @var $File DirectoryIterator */
function get_data_path()
{
return dirname(__FILE__).'/'.self::provider_dir;
}
}
if ( ! $File->isFile())
{
continue;
}
$filename = $File->getFilename();
$extension = pathinfo($filename, PATHINFO_EXTENSION);
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

@ -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,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 |