mirror of
https://github.com/erusev/parsedown.git
synced 2023-08-10 21:13:06 +03:00
Compare commits
74 Commits
Author | SHA1 | Date | |
---|---|---|---|
a4fb0651d5 | |||
50a58eab16 | |||
1f347e17eb | |||
df3db71698 | |||
a37f5ff31e | |||
8e6f4cf7b8 | |||
ee9a1e92c0 | |||
689ef24cc5 | |||
4403fe4d96 | |||
400c8f7d46 | |||
379cbf34b3 | |||
b6c8cac512 | |||
0e9202689e | |||
7249d02cff | |||
ecf86b073e | |||
b12973415f | |||
6d113f47fb | |||
d4d3612710 | |||
2e314ad474 | |||
e475602e2f | |||
f43f54b877 | |||
d733acc94e | |||
6a0695deb9 | |||
5dd40e7adf | |||
b9808f23e0 | |||
47b1789430 | |||
f8119fa3cb | |||
d306ee3db5 | |||
e15241cb92 | |||
7ab71ade06 | |||
64f82e1e2a | |||
f40dbdfb65 | |||
033c2b78c1 | |||
34035316df | |||
f13214cfa7 | |||
238b1029c0 | |||
bc27850c41 | |||
3afeee3b19 | |||
a94a45f955 | |||
4af89c5087 | |||
0352f01c7e | |||
40c2dcfac7 | |||
097ec5e8a5 | |||
8ac52a2f30 | |||
4a6bb88239 | |||
609ad47c38 | |||
7d7e89f5c3 | |||
5aad1d42d2 | |||
3ff5c623f2 | |||
637b516694 | |||
31b811d3fe | |||
8954b94516 | |||
4e64695055 | |||
b29c2459e0 | |||
15f20fb59e | |||
69a620110a | |||
e4f9620e98 | |||
8c59d05478 | |||
26c02dafed | |||
5de50f101a | |||
7ace421f6d | |||
78cad3964c | |||
8ed3b3d484 | |||
41bf9733b0 | |||
99bf0d4bba | |||
f29981d0a3 | |||
2f051b821c | |||
85dd9fd965 | |||
69de4c46d5 | |||
5bbbabe8aa | |||
ec5f2c6f31 | |||
66f9baf013 | |||
7b091b8915 | |||
0a0a126827 |
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,2 +1,3 @@
|
||||
.DS_Store
|
||||
.idea
|
||||
nbproject
|
11
.travis.yml
Normal file
11
.travis.yml
Normal file
@ -0,0 +1,11 @@
|
||||
language: php
|
||||
|
||||
php:
|
||||
- 5.5
|
||||
- 5.4
|
||||
- 5.3
|
||||
- 5.2
|
||||
|
||||
matrix:
|
||||
allow_failures:
|
||||
- php: 5.2
|
35
LICENSE.txt
35
LICENSE.txt
@ -1,21 +1,20 @@
|
||||
Copyright 2013 Emanuil Rusev
|
||||
http://erusev.com
|
||||
The MIT License (MIT)
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
Copyright (c) 2013 Emanuil Rusev, erusev.com
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
the Software without restriction, including without limitation the rights to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
subject to the following conditions:
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
1051
Parsedown.php
1051
Parsedown.php
File diff suppressed because it is too large
Load Diff
20
README.md
20
README.md
@ -1,4 +1,20 @@
|
||||
Parsedown is a parser for Markdown. It parses Markdown text the way people do. First, it divides texts into blocks. Then it looks at how these blocks start and how they relate to each other. Finally, it looks for special characters to identify inline elements. As a result, Parsedown is (super) fast, predictable and its (open) source code - easy to read.
|
||||
## Parsedown PHP
|
||||
|
||||
Parsedown is a parser for Markdown. It parses Markdown text the way people do. First, it divides texts into blocks. Then it looks at how these blocks start and how they relate to each other. Finally, it looks for special characters to identify inline elements. As a result, Parsedown is (super) fast, consistent and clean.
|
||||
|
||||
[Explorer (demo)](http://parsedown.org/explorer/)
|
||||
[Tests](http://parsedown.org/tests/)
|
||||
[Tests](http://parsedown.org/tests/)
|
||||
|
||||
### Installation
|
||||
|
||||
Include `Parsedown.php` or install [the composer package](https://packagist.org/packages/erusev/parsedown).
|
||||
|
||||
### Example
|
||||
|
||||
```php
|
||||
$text = 'Hello **Parsedown**!';
|
||||
|
||||
$result = Parsedown::instance()->parse($text);
|
||||
|
||||
echo $result; # prints: <p>Hello <strong>Parsedown</strong>!</p>
|
||||
```
|
8
phpunit.xml.dist
Normal file
8
phpunit.xml.dist
Normal file
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<phpunit colors="true">
|
||||
<testsuites>
|
||||
<testsuite>
|
||||
<file>tests/Test.php</file>
|
||||
</testsuite>
|
||||
</testsuites>
|
||||
</phpunit>
|
@ -1,7 +0,0 @@
|
||||
RewriteEngine on
|
||||
RewriteBase /
|
||||
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
RewriteCond %{REQUEST_FILENAME} !-d
|
||||
|
||||
RewriteRule ^(.*)$ tests/index.php?$1 [L]
|
47
tests/Test.php
Normal file
47
tests/Test.php
Normal file
@ -0,0 +1,47 @@
|
||||
<?php
|
||||
|
||||
include 'Parsedown.php';
|
||||
|
||||
class Test extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
const provider_dir = 'data/';
|
||||
|
||||
/**
|
||||
* @dataProvider provider
|
||||
*/
|
||||
function test_($markdown, $expected_markup)
|
||||
{
|
||||
$actual_markup = Parsedown::instance()->parse($markdown);
|
||||
|
||||
$this->assertEquals($expected_markup, $actual_markup);
|
||||
}
|
||||
|
||||
function provider()
|
||||
{
|
||||
$provider = array();
|
||||
|
||||
$DirectoryIterator = new DirectoryIterator(__DIR__ . '/' . self::provider_dir);
|
||||
|
||||
foreach ($DirectoryIterator as $Item)
|
||||
{
|
||||
if ($Item->isFile() and $Item->getExtension() === 'md')
|
||||
{
|
||||
$basename = $Item->getBasename('.md');
|
||||
|
||||
$markdown = file_get_contents(__DIR__ . '/' . self::provider_dir . $basename . '.md');
|
||||
|
||||
if (!$markdown)
|
||||
continue;
|
||||
|
||||
$expected_markup = file_get_contents(__DIR__ . '/' . 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;
|
||||
}
|
||||
}
|
||||
|
6
tests/data/atx_heading.html
Normal file
6
tests/data/atx_heading.html
Normal file
@ -0,0 +1,6 @@
|
||||
<h1>This is an h1</h1>
|
||||
<h2>This is an h2</h2>
|
||||
<h3>This is an h3</h3>
|
||||
<h4>This is an h4</h4>
|
||||
<h5>This is an h5</h5>
|
||||
<h6>This is an h6</h6>
|
11
tests/data/atx_heading.md
Normal file
11
tests/data/atx_heading.md
Normal file
@ -0,0 +1,11 @@
|
||||
# This is an h1
|
||||
|
||||
## This is an h2
|
||||
|
||||
### This is an h3
|
||||
|
||||
#### This is an h4
|
||||
|
||||
##### This is an h5
|
||||
|
||||
###### This is an h6
|
6
tests/data/atx_heading_-_closed.html
Normal file
6
tests/data/atx_heading_-_closed.html
Normal file
@ -0,0 +1,6 @@
|
||||
<h1>h1</h1>
|
||||
<h2>h2</h2>
|
||||
<h3>h3</h3>
|
||||
<h4>h4</h4>
|
||||
<h5>h5</h5>
|
||||
<h6>h6</h6>
|
11
tests/data/atx_heading_-_closed.md
Normal file
11
tests/data/atx_heading_-_closed.md
Normal file
@ -0,0 +1,11 @@
|
||||
# h1 #
|
||||
|
||||
## h2 ##
|
||||
|
||||
### h3 ###
|
||||
|
||||
#### h4 ####
|
||||
|
||||
##### h5 #####
|
||||
|
||||
###### h6 ######
|
9
tests/data/blockquote.html
Normal file
9
tests/data/blockquote.html
Normal file
@ -0,0 +1,9 @@
|
||||
<p>Here's a blockquote:</p>
|
||||
<blockquote>
|
||||
<p>blockquote</p>
|
||||
</blockquote>
|
||||
<p>Here's one on multiple lines:</p>
|
||||
<blockquote>
|
||||
<p>line 1
|
||||
line 2</p>
|
||||
</blockquote>
|
8
tests/data/blockquote.md
Normal file
8
tests/data/blockquote.md
Normal file
@ -0,0 +1,8 @@
|
||||
Here's a blockquote:
|
||||
|
||||
> blockquote
|
||||
|
||||
Here's one on multiple lines:
|
||||
|
||||
> line 1
|
||||
> line 2
|
@ -1,11 +1,3 @@
|
||||
<p>Here's a regular blockquote:</p>
|
||||
<blockquote>
|
||||
<p>This is a blockquote.</p>
|
||||
</blockquote>
|
||||
<p>Here's one with no space after the ">":</p>
|
||||
<blockquote>
|
||||
<p>This is a blockquote.</p>
|
||||
</blockquote>
|
||||
<p>Here's one with multiple paragraphs:</p>
|
||||
<blockquote>
|
||||
<p>This is line one.</p>
|
||||
@ -21,5 +13,4 @@
|
||||
<blockquote>
|
||||
<p>This is a nested quote block.</p>
|
||||
</blockquote>
|
||||
<p>This is another paragraph.</p>
|
||||
</blockquote>
|
@ -1,11 +1,3 @@
|
||||
Here's a regular blockquote:
|
||||
|
||||
> This is a blockquote.
|
||||
|
||||
Here's one with no space after the ">":
|
||||
|
||||
>This is a blockquote.
|
||||
|
||||
Here's one with multiple paragraphs:
|
||||
|
||||
> This is line one.
|
||||
@ -19,6 +11,4 @@ Here's one with multiple types of blocks:
|
||||
> - This is a list item of a quoted list.
|
||||
> - This is another list item.
|
||||
>
|
||||
> > This is a nested quote block.
|
||||
>
|
||||
> This is another paragraph.
|
||||
> > This is a nested quote block.
|
11
tests/data/blockquote_-_lazy.html
Normal file
11
tests/data/blockquote_-_lazy.html
Normal file
@ -0,0 +1,11 @@
|
||||
<p>Here's a lazy blockquote:</p>
|
||||
<blockquote>
|
||||
<p>line
|
||||
line</p>
|
||||
</blockquote>
|
||||
<p>Here's one with multiple lines:</p>
|
||||
<blockquote>
|
||||
<p>line
|
||||
line
|
||||
line</p>
|
||||
</blockquote>
|
10
tests/data/blockquote_-_lazy.md
Normal file
10
tests/data/blockquote_-_lazy.md
Normal file
@ -0,0 +1,10 @@
|
||||
Here's a lazy blockquote:
|
||||
|
||||
> line
|
||||
line
|
||||
|
||||
Here's one with multiple lines:
|
||||
|
||||
> line
|
||||
line
|
||||
line
|
12
tests/data/blockquote_-_whitespace.html
Normal file
12
tests/data/blockquote_-_whitespace.html
Normal file
@ -0,0 +1,12 @@
|
||||
<p>Here's a blockquote with no space after the ">":</p>
|
||||
<blockquote>
|
||||
<p>blockquote</p>
|
||||
</blockquote>
|
||||
<p>Here's a blockquote with leading space:</p>
|
||||
<blockquote>
|
||||
<p>blockquote</p>
|
||||
</blockquote>
|
||||
<p>Here's a blockquote on the next line:</p>
|
||||
<blockquote>
|
||||
<p>blockquote</p>
|
||||
</blockquote>
|
10
tests/data/blockquote_-_whitespace.md
Normal file
10
tests/data/blockquote_-_whitespace.md
Normal file
@ -0,0 +1,10 @@
|
||||
Here's a blockquote with no space after the ">":
|
||||
|
||||
>blockquote
|
||||
|
||||
Here's a blockquote with leading space:
|
||||
|
||||
> blockquote
|
||||
|
||||
Here's a blockquote on the next line:
|
||||
> blockquote
|
5
tests/data/code_block.html
Normal file
5
tests/data/code_block.html
Normal file
@ -0,0 +1,5 @@
|
||||
<p>Here's a code block:</p>
|
||||
<pre><code><?php
|
||||
|
||||
$message = 'Hello World!';
|
||||
echo $message;</code></pre>
|
6
tests/data/code_block.md
Normal file
6
tests/data/code_block.md
Normal file
@ -0,0 +1,6 @@
|
||||
Here's a code block:
|
||||
|
||||
<?php
|
||||
|
||||
$message = 'Hello World!';
|
||||
echo $message;
|
11
tests/data/emphasis.html
Normal file
11
tests/data/emphasis.html
Normal file
@ -0,0 +1,11 @@
|
||||
<p>Here's <em>an emphasis</em>.</p>
|
||||
<p>A short one <em>a</em> <em>b</em> .</p>
|
||||
<p>Here's <strong>a strong one</strong>. </p>
|
||||
<p>Here's <em>one that uses underscores</em>. </p>
|
||||
<p>Here's <strong>a strong one that uses underscores</strong>.</p>
|
||||
<p>This is not _ one _ neither is * this * neither is _ this_ neither is _this _.</p>
|
||||
<p>An empty emphasis ** is not __ an emphasis.</p>
|
||||
<p>A <em>multi-line
|
||||
emphasis</em></p>
|
||||
<p>A <strong>multi-line
|
||||
strong emphasis</strong></p>
|
19
tests/data/emphasis.md
Normal file
19
tests/data/emphasis.md
Normal file
@ -0,0 +1,19 @@
|
||||
Here's *an emphasis*.
|
||||
|
||||
A short one _a_ *b* .
|
||||
|
||||
Here's **a strong one**.
|
||||
|
||||
Here's _one that uses underscores_.
|
||||
|
||||
Here's __a strong one that uses underscores__.
|
||||
|
||||
This is not _ one _ neither is * this * neither is _ this_ neither is _this _.
|
||||
|
||||
An empty emphasis ** is not __ an emphasis.
|
||||
|
||||
A *multi-line
|
||||
emphasis*
|
||||
|
||||
A **multi-line
|
||||
strong emphasis**
|
5
tests/data/emphasis_-_em_strong.html
Normal file
5
tests/data/emphasis_-_em_strong.html
Normal file
@ -0,0 +1,5 @@
|
||||
<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>
|
9
tests/data/emphasis_-_em_strong.md
Normal file
9
tests/data/emphasis_-_em_strong.md
Normal file
@ -0,0 +1,9 @@
|
||||
___em strong___
|
||||
|
||||
___one_ at the start__
|
||||
|
||||
__one at the _end___
|
||||
|
||||
__one _in the_ middle__
|
||||
|
||||
**one with *asterisks***
|
2
tests/data/escaping.html
Normal file
2
tests/data/escaping.html
Normal file
@ -0,0 +1,2 @@
|
||||
<p>Here's an <em>emphasis</em> and here's an escaped *emphasis*. Here are also an escaped `code span`, an escaped [inline link](http://example.com) and an escaped <code>\*emphasis\*</code> inside of a code span.</p>
|
||||
<pre><code>An escaped \*emphasis\* inside of a code block.</code></pre>
|
3
tests/data/escaping.md
Normal file
3
tests/data/escaping.md
Normal file
@ -0,0 +1,3 @@
|
||||
Here's an *emphasis* and here's an escaped \*emphasis\*. Here are also an escaped \`code span\`, an escaped \[inline link](http://example.com) and an escaped `\*emphasis\*` inside of a code span.
|
||||
|
||||
An escaped \*emphasis\* inside of a code block.
|
10
tests/data/horizontal_rule.html
Normal file
10
tests/data/horizontal_rule.html
Normal file
@ -0,0 +1,10 @@
|
||||
<p>Dashes:</p>
|
||||
<hr />
|
||||
<hr />
|
||||
<hr />
|
||||
<p>Asterisks:</p>
|
||||
<hr />
|
||||
<p>Underscores:</p>
|
||||
<hr />
|
||||
<p>On the next line:</p>
|
||||
<hr />
|
18
tests/data/horizontal_rule.md
Normal file
18
tests/data/horizontal_rule.md
Normal file
@ -0,0 +1,18 @@
|
||||
Dashes:
|
||||
|
||||
---
|
||||
|
||||
- - -
|
||||
|
||||
- - -
|
||||
|
||||
Asterisks:
|
||||
|
||||
***
|
||||
|
||||
Underscores:
|
||||
|
||||
___
|
||||
|
||||
On the next line:
|
||||
___
|
15
tests/data/html.html
Normal file
15
tests/data/html.html
Normal file
@ -0,0 +1,15 @@
|
||||
<p>A self-closing tag:</p>
|
||||
<hr/>
|
||||
<p>One with attributes:</p>
|
||||
<hr style="background: #eaa" />
|
||||
<p>A bare element:</p>
|
||||
<div>content</div>
|
||||
<p>One with attributes:</p>
|
||||
<a href="http://example.com">link</a>
|
||||
<p>Nested elements:</p>
|
||||
<div>
|
||||
parent
|
||||
<div>
|
||||
child
|
||||
</div>
|
||||
</div>
|
24
tests/data/html.md
Normal file
24
tests/data/html.md
Normal file
@ -0,0 +1,24 @@
|
||||
A self-closing tag:
|
||||
|
||||
<hr/>
|
||||
|
||||
One with attributes:
|
||||
|
||||
<hr style="background: #eaa" />
|
||||
|
||||
A bare element:
|
||||
|
||||
<div>content</div>
|
||||
|
||||
One with attributes:
|
||||
|
||||
<a href="http://example.com">link</a>
|
||||
|
||||
Nested elements:
|
||||
|
||||
<div>
|
||||
parent
|
||||
<div>
|
||||
child
|
||||
</div>
|
||||
</div>
|
2
tests/data/inline_link.html
Normal file
2
tests/data/inline_link.html
Normal file
@ -0,0 +1,2 @@
|
||||
<p>Here's a <a href="http://example.com">link</a>.</p>
|
||||
<p>Here's one that is based on an image: <a href="http://daringfireball.net/projects/markdown/"><img alt="MD Logo" src="http://parsedown.org/md.png"></a>.</p>
|
3
tests/data/inline_link.md
Normal file
3
tests/data/inline_link.md
Normal file
@ -0,0 +1,3 @@
|
||||
Here's a [link](http://example.com).
|
||||
|
||||
Here's one that is based on an image: [](http://daringfireball.net/projects/markdown/).
|
2
tests/data/line_break.html
Normal file
2
tests/data/line_break.html
Normal file
@ -0,0 +1,2 @@
|
||||
<p>line<br />
|
||||
line</p>
|
2
tests/data/line_break.md
Normal file
2
tests/data/line_break.md
Normal file
@ -0,0 +1,2 @@
|
||||
line
|
||||
line
|
5
tests/data/list.html
Normal file
5
tests/data/list.html
Normal file
@ -0,0 +1,5 @@
|
||||
<p>Here's a list:</p>
|
||||
<ul>
|
||||
<li>li</li>
|
||||
<li>li</li>
|
||||
</ul>
|
4
tests/data/list.md
Normal file
4
tests/data/list.md
Normal file
@ -0,0 +1,4 @@
|
||||
Here's a list:
|
||||
|
||||
- li
|
||||
- li
|
@ -6,5 +6,4 @@ Here's a compound list:
|
||||
|
||||
- This is another list item.
|
||||
|
||||
> This is a quote block that belongs to it.
|
||||
|
||||
> This is a quote block that belongs to it.
|
4
tests/data/list_-_lazy.html
Normal file
4
tests/data/list_-_lazy.html
Normal file
@ -0,0 +1,4 @@
|
||||
<ul>
|
||||
<li>li
|
||||
more text</li>
|
||||
</ul>
|
2
tests/data/list_-_lazy.md
Normal file
2
tests/data/list_-_lazy.md
Normal file
@ -0,0 +1,2 @@
|
||||
- li
|
||||
more text
|
@ -2,7 +2,6 @@
|
||||
<ol>
|
||||
<li>one</li>
|
||||
<li>two</li>
|
||||
<li>three</li>
|
||||
</ol>
|
||||
<p>Here's one with repeating numbers:</p>
|
||||
<ol>
|
||||
@ -12,5 +11,4 @@
|
||||
<p>Here's one with large numbers:</p>
|
||||
<ol>
|
||||
<li>one</li>
|
||||
<li>two</li>
|
||||
</ol>
|
@ -2,7 +2,6 @@ Here's a regular ordered list:
|
||||
|
||||
1. one
|
||||
2. two
|
||||
3. three
|
||||
|
||||
Here's one with repeating numbers:
|
||||
|
||||
@ -11,6 +10,4 @@ Here's one with repeating numbers:
|
||||
|
||||
Here's one with large numbers:
|
||||
|
||||
123. one
|
||||
123. two
|
||||
|
||||
123. one
|
16
tests/data/list_-_sparse.html
Normal file
16
tests/data/list_-_sparse.html
Normal file
@ -0,0 +1,16 @@
|
||||
<p>Here's a sparse list:</p>
|
||||
<ul>
|
||||
<li>
|
||||
<p>list item</p>
|
||||
</li>
|
||||
<li>another list item</li>
|
||||
</ul>
|
||||
<p>Here's one with an indented list item:</p>
|
||||
<ul>
|
||||
<li>
|
||||
<p>li</p>
|
||||
<ul>
|
||||
<li>li</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
11
tests/data/list_-_sparse.md
Normal file
11
tests/data/list_-_sparse.md
Normal file
@ -0,0 +1,11 @@
|
||||
Here's a sparse list:
|
||||
|
||||
- list item
|
||||
|
||||
- another list item
|
||||
|
||||
Here's one with an indented list item:
|
||||
|
||||
- li
|
||||
|
||||
- li
|
11
tests/data/list_-_unordered.html
Normal file
11
tests/data/list_-_unordered.html
Normal file
@ -0,0 +1,11 @@
|
||||
<p>Here's an unordered list:</p>
|
||||
<ul>
|
||||
<li>li</li>
|
||||
<li>li</li>
|
||||
</ul>
|
||||
<p>Here's one with mixed markers:</p>
|
||||
<ul>
|
||||
<li>li</li>
|
||||
<li>li</li>
|
||||
<li>li</li>
|
||||
</ul>
|
10
tests/data/list_-_unordered.md
Normal file
10
tests/data/list_-_unordered.md
Normal file
@ -0,0 +1,10 @@
|
||||
Here's an unordered list:
|
||||
|
||||
- li
|
||||
- li
|
||||
|
||||
Here's one with mixed markers:
|
||||
|
||||
- li
|
||||
+ li
|
||||
* li
|
5
tests/data/list_-_whitespace.html
Normal file
5
tests/data/list_-_whitespace.html
Normal file
@ -0,0 +1,5 @@
|
||||
<p>Here's one with white space around items:</p>
|
||||
<ul>
|
||||
<li>li </li>
|
||||
<li>li </li>
|
||||
</ul>
|
4
tests/data/list_-_whitespace.md
Normal file
4
tests/data/list_-_whitespace.md
Normal file
@ -0,0 +1,4 @@
|
||||
Here's one with white space around items:
|
||||
|
||||
- li
|
||||
- li
|
7
tests/data/reference_link.html
Normal file
7
tests/data/reference_link.html
Normal file
@ -0,0 +1,7 @@
|
||||
<p>Here's a <a href="http://example.com">reference link</a>.</p>
|
||||
<p>Here's <a href="http://example.com">one</a> with a semantic name.</p>
|
||||
<p>Here's <a href="http://example.com">one</a> with an upper case label definition.</p>
|
||||
<p>Here's <a href="http://example.com">one</a> with definition name on the next line.</p>
|
||||
<p>Here's [one][404] with no definition.</p>
|
||||
<p>Here's a <a href="http://example.com">multiline
|
||||
one</a> defined on 2 lines.</p>
|
19
tests/data/reference_link.md
Normal file
19
tests/data/reference_link.md
Normal file
@ -0,0 +1,19 @@
|
||||
Here's a [reference link][1].
|
||||
|
||||
[1]: http://example.com
|
||||
|
||||
Here's [one][website] with a semantic name.
|
||||
|
||||
[website]: http://example.com
|
||||
|
||||
Here's [one][case] with an upper case label definition.
|
||||
|
||||
[CASE]: http://example.com
|
||||
|
||||
Here's [one]
|
||||
[website] with definition name on the next line.
|
||||
|
||||
Here's [one][404] with no definition.
|
||||
|
||||
Here's a [multiline
|
||||
one][website] defined on 2 lines.
|
1
tests/data/reference_link_-_image.html
Normal file
1
tests/data/reference_link_-_image.html
Normal file
@ -0,0 +1 @@
|
||||
<p>Here's an image: <img alt="Markdown Logo" src="/md.png"></p>
|
3
tests/data/reference_link_-_image.md
Normal file
3
tests/data/reference_link_-_image.md
Normal file
@ -0,0 +1,3 @@
|
||||
Here's an image: ![Markdown Logo][image]
|
||||
|
||||
[image]: /md.png
|
2
tests/data/reference_link_-_implicit.html
Normal file
2
tests/data/reference_link_-_implicit.html
Normal file
@ -0,0 +1,2 @@
|
||||
<p>Here's an <a href="http://example.com">implicit</a> reference link.</p>
|
||||
<p>Here's an <a href="http://example.com">implicit</a> one with an empty link definition.</p>
|
5
tests/data/reference_link_-_implicit.md
Normal file
5
tests/data/reference_link_-_implicit.md
Normal file
@ -0,0 +1,5 @@
|
||||
Here's an [implicit] reference link.
|
||||
|
||||
[implicit]: http://example.com
|
||||
|
||||
Here's an [implicit][] one with an empty link definition.
|
1
tests/data/reference_link_-_whitespace.html
Normal file
1
tests/data/reference_link_-_whitespace.html
Normal file
@ -0,0 +1 @@
|
||||
<p>Here's a <a href="http://example.com">reference link</a> with a definition on the next line.</p>
|
2
tests/data/reference_link_-_whitespace.md
Normal file
2
tests/data/reference_link_-_whitespace.md
Normal file
@ -0,0 +1,2 @@
|
||||
Here's a [reference link][2] with a definition on the next line.
|
||||
[2]: http://example.com
|
5
tests/data/setext_header.html
Normal file
5
tests/data/setext_header.html
Normal file
@ -0,0 +1,5 @@
|
||||
<h1>h1</h1>
|
||||
<h2>h2</h2>
|
||||
<h2>single character</h2>
|
||||
<p>not a header</p>
|
||||
<hr />
|
12
tests/data/setext_header.md
Normal file
12
tests/data/setext_header.md
Normal file
@ -0,0 +1,12 @@
|
||||
h1
|
||||
==
|
||||
|
||||
h2
|
||||
--
|
||||
|
||||
single character
|
||||
-
|
||||
|
||||
not a header
|
||||
|
||||
------------
|
1
tests/data/span_level_html.html
Normal file
1
tests/data/span_level_html.html
Normal file
@ -0,0 +1 @@
|
||||
<p>Here's an <b>important</b> <a href=''>link</a>.</p>
|
1
tests/data/span_level_html.md
Normal file
1
tests/data/span_level_html.md
Normal file
@ -0,0 +1 @@
|
||||
Here's an <b>important</b> <a href=''>link</a>.
|
7
tests/data/special_characters.html
Normal file
7
tests/data/special_characters.html
Normal file
@ -0,0 +1,7 @@
|
||||
<p>AT&T has an ampersand in their name.</p>
|
||||
<p>AT&T is another way to write it.</p>
|
||||
<p>This & that.</p>
|
||||
<p>4 < 5 and 6 > 5.</p>
|
||||
<p>Here's an autolink <a href="http://example.com/autolink?a=1&b=2">http://example.com/autolink?a=1&b=2</a></p>
|
||||
<p>Here's an inline <a href="/script?a=1&b=2">link</a>.</p>
|
||||
<p>Here's a reference <a href="http://example.com/?a=1&b=2">link</a> with an ampersand in the URL.</p>
|
15
tests/data/special_characters.md
Normal file
15
tests/data/special_characters.md
Normal file
@ -0,0 +1,15 @@
|
||||
AT&T has an ampersand in their name.
|
||||
|
||||
AT&T is another way to write it.
|
||||
|
||||
This & that.
|
||||
|
||||
4 < 5 and 6 > 5.
|
||||
|
||||
Here's an autolink <http://example.com/autolink?a=1&b=2>
|
||||
|
||||
Here's an inline [link](/script?a=1&b=2).
|
||||
|
||||
Here's a reference [link] [1] with an ampersand in the URL.
|
||||
|
||||
[1]: http://example.com/?a=1&b=2
|
1
tests/data/whitespace.html
Normal file
1
tests/data/whitespace.html
Normal file
@ -0,0 +1 @@
|
||||
<pre><code>This text starts with a line that consists of 4 spaces and it ends with one. This is a code block to make sure that leading spaces don't get trimmed.</code></pre>
|
5
tests/data/whitespace.md
Normal file
5
tests/data/whitespace.md
Normal file
@ -0,0 +1,5 @@
|
||||
|
||||
|
||||
This text starts with a line that consists of 4 spaces and it ends with one. This is a code block to make sure that leading spaces don't get trimmed.
|
||||
|
||||
|
@ -1,51 +0,0 @@
|
||||
|
||||
|
||||
.page {
|
||||
margin: 0 auto;
|
||||
width: 640px;
|
||||
}
|
||||
|
||||
.header {
|
||||
background: #555;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.odd {
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.even {
|
||||
background: #eee;
|
||||
}
|
||||
|
||||
div.fail {
|
||||
background: #f55;
|
||||
}
|
||||
|
||||
div.pass {
|
||||
background: #595;
|
||||
}
|
||||
|
||||
span.fail {
|
||||
color: #d55;
|
||||
}
|
||||
|
||||
span.pass {
|
||||
color: #595;
|
||||
}
|
||||
|
||||
/* ~ */
|
||||
|
||||
p {
|
||||
margin: 10px 0;
|
||||
}
|
||||
|
||||
th {
|
||||
font-weight: normal;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
th, td {
|
||||
border-bottom: 1px solid #ddd;
|
||||
padding: 5px 10px;
|
||||
}
|
@ -1,12 +0,0 @@
|
||||
<?php
|
||||
|
||||
include '../Parsedown.php';
|
||||
|
||||
$page = $_SERVER['QUERY_STRING']
|
||||
? 'test'
|
||||
: 'index';
|
||||
|
||||
$dir = 'tests/';
|
||||
|
||||
include $page.'_controller.php';
|
||||
include $page.'_view.php';
|
@ -1,46 +0,0 @@
|
||||
<?php
|
||||
|
||||
$DirectoryIterator = new DirectoryIterator($dir);
|
||||
|
||||
$failed_test_count = 0;
|
||||
|
||||
foreach ($DirectoryIterator as $Item)
|
||||
{
|
||||
if ($Item->isFile() and $Item->getBasename() != '.DS_Store')
|
||||
{
|
||||
if ($Item->getExtension() === 'md')
|
||||
{
|
||||
$basename = $Item->getBasename('.md');
|
||||
|
||||
$markdown = file_get_contents($dir.$basename.'.md');
|
||||
$expected_markup = file_get_contents($dir.$basename.'.html');
|
||||
|
||||
if ( ! $markdown)
|
||||
continue;
|
||||
|
||||
$Parsedown = Parsedown::instance();
|
||||
|
||||
$start = microtime(true);
|
||||
|
||||
$actual_markup = $Parsedown->parse($markdown);
|
||||
|
||||
$time = microtime(true) - $start;
|
||||
$time = $time * 1000; # ms?
|
||||
$time = round($time, 2);
|
||||
|
||||
$result = $expected_markup === $actual_markup
|
||||
? 'pass'
|
||||
: 'fail';
|
||||
|
||||
$result === 'fail' and $failed_test_count ++;
|
||||
|
||||
$Tests []= array(
|
||||
'basename' => $basename,
|
||||
'name' => str_replace('_', ' ', $basename),
|
||||
'result' => $result,
|
||||
'time' => $time,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,54 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
|
||||
<!-- (c) 2009 - 2013 Emanuil Rusev, All rights reserved. -->
|
||||
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||
|
||||
<head>
|
||||
|
||||
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
|
||||
|
||||
<link href="reset.css" rel="stylesheet" type="text/css" />
|
||||
<link href="index.css" rel="stylesheet" type="text/css" />
|
||||
|
||||
<title>Parsedown Test</title>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div style="padding: 50px; width: 500px;">
|
||||
|
||||
<h1 style="margin: 0;"><a href="/">Parsedown PHP</a> » Tests</h1>
|
||||
|
||||
<br/>
|
||||
|
||||
<table>
|
||||
|
||||
<tr class="header">
|
||||
<th style="width: 480px;">Test</th>
|
||||
<th style="text-align: right; width: 120px">Time</th>
|
||||
</tr>
|
||||
|
||||
<?php foreach ($Tests as $index => $Test): ?>
|
||||
<tr class="<?= $index % 2 ? 'even' : 'odd' ?>">
|
||||
<td><a href="/tests/<?= $Test['basename'] ?>"><?= $Test['name'] ?></a> - <span class="<?= $Test['result'] ?>"><?= $Test['result'] ?></span></td>
|
||||
<td style="text-align: right;"><?= $Test['time'] ?> ms</td>
|
||||
</tr>
|
||||
<?php endforeach ?>
|
||||
|
||||
</table>
|
||||
|
||||
<div class="<?= $failed_test_count ? 'fail' : 'pass' ?>" style="border-top: 1px solid #555; color: #fff; margin-top: 1px; padding:5px 10px;">
|
||||
<?php if ($failed_test_count): ?>
|
||||
<?= $failed_test_count ?> tests failed.
|
||||
<?php else: ?>
|
||||
All <?= count($Tests) ?> tests passed.
|
||||
<?php endif ?>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
108
tests/reset.css
108
tests/reset.css
@ -1,108 +0,0 @@
|
||||
/*
|
||||
*
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
a {
|
||||
color: #159;
|
||||
outline: none;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a img {
|
||||
border: none;
|
||||
}
|
||||
|
||||
abbr {
|
||||
border-bottom: 1px solid #ddd;
|
||||
cursor: help;
|
||||
padding: 2px 3px;
|
||||
}
|
||||
|
||||
body {
|
||||
background: #ddd;
|
||||
color: #333;
|
||||
font-family: Verdana, Sans-serif;
|
||||
font-size: 14px;
|
||||
height: 100%;
|
||||
line-height: 20px;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
background: #eee;
|
||||
margin: 0 0 10px 0;
|
||||
padding: 10px 10px 1px 10px;
|
||||
}
|
||||
|
||||
form {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
font-family: Georgia, "Times New Roman", Times, serif;
|
||||
font-weight: normal;
|
||||
letter-spacing: 1px;
|
||||
margin: 20px 0;
|
||||
}
|
||||
|
||||
h1 {
|
||||
line-height: 30px;
|
||||
}
|
||||
|
||||
html {
|
||||
height: 100%;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
|
||||
img {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
input {
|
||||
font-family: Verdana, Sans-serif;
|
||||
font-size: 14px;
|
||||
line-height: 20px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
object {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
p {
|
||||
margin-top: 0;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
select {
|
||||
font-family: Verdana, Sans-serif;
|
||||
font-size: 14px;
|
||||
/* Makes for the same height as <input>. */
|
||||
height: 40px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
table {
|
||||
border-spacing: 0;
|
||||
}
|
||||
|
||||
textarea {
|
||||
background: #fff;
|
||||
font-family: Verdana, Sans-serif;
|
||||
font-size: 14px;
|
||||
line-height: 20px;
|
||||
margin: 0;
|
||||
padding: 9px;
|
||||
width: 280px;
|
||||
}
|
||||
|
||||
ul {
|
||||
list-style-type: square;
|
||||
}
|
||||
|
@ -1,58 +0,0 @@
|
||||
/*
|
||||
*
|
||||
* ...
|
||||
*
|
||||
*/
|
||||
|
||||
tr.header td {
|
||||
background: #333;
|
||||
color: #fff;
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
tr.header a {
|
||||
color: #fff;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
tr.body td {
|
||||
background: #fff;
|
||||
padding: 20px;
|
||||
width: 35%;
|
||||
}
|
||||
|
||||
tr.footer td {
|
||||
background: #fff;
|
||||
border-top: 1px solid #999;
|
||||
padding: 10px 20px;
|
||||
}
|
||||
|
||||
/* ~ */
|
||||
|
||||
tr.fail td {
|
||||
background: #f55;
|
||||
}
|
||||
|
||||
tr.pass td {
|
||||
background: #5d5;
|
||||
}
|
||||
|
||||
/* ~ */
|
||||
|
||||
code {
|
||||
font-family: Source Code Pro, Monaco, monospace;
|
||||
}
|
||||
|
||||
pre {
|
||||
margin: 0;
|
||||
white-space: -moz-pre-wrap; /* Mozilla, supported since 1999 */
|
||||
white-space: -pre-wrap; /* Opera */
|
||||
white-space: -o-pre-wrap; /* Opera */
|
||||
white-space: pre-wrap; /* CSS3 - Text module (Candidate Recommendation) http://www.w3.org/TR/css3-text/#white-space */
|
||||
word-wrap: break-word; /* IE 5.5+ */
|
||||
}
|
||||
|
||||
span.tag {
|
||||
color: #b19;
|
||||
}
|
||||
|
@ -1,27 +0,0 @@
|
||||
<?php
|
||||
|
||||
$test = $_SERVER['QUERY_STRING'];
|
||||
|
||||
preg_match('/^\w+$/', $test) or die('illegal test name');
|
||||
|
||||
$md_file = $dir.$test.'.md';
|
||||
$mu_file = $dir.$test.'.html';
|
||||
|
||||
file_exists($md_file) or die("$md_file not found");
|
||||
file_exists($mu_file) or die("$mu_file not found");
|
||||
|
||||
$md = file_get_contents($md_file);
|
||||
|
||||
$expected_mu = file_get_contents($mu_file);
|
||||
$actual_mu = Parsedown::instance()->parse($md);
|
||||
|
||||
$result = $expected_mu === $actual_mu
|
||||
? 'pass'
|
||||
: 'fail';
|
||||
|
||||
$md = htmlentities($md, ENT_NOQUOTES);
|
||||
$expected_mu = htmlentities($expected_mu, ENT_NOQUOTES);
|
||||
$actual_mu = htmlentities($actual_mu, ENT_NOQUOTES);
|
||||
|
||||
$name = str_replace('_', ' ', $test);
|
||||
$name = ucwords($name);
|
@ -1,62 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
|
||||
<!-- (c) 2009 - 2013 Emanuil Rusev, All rights reserved. -->
|
||||
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||
|
||||
<head>
|
||||
|
||||
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
|
||||
|
||||
<link href="reset.css" rel="stylesheet" type="text/css" />
|
||||
<link href="test.css" rel="stylesheet" type="text/css" />
|
||||
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/prettify/r224/prettify.js" type="text/javascript"></script>
|
||||
<script src="http://code.jquery.com/jquery-2.0.0.min.js" type="text/javascript"></script>
|
||||
|
||||
<title><?= $name ?> « Parsedown Test</title>
|
||||
|
||||
</head>
|
||||
|
||||
<body onload="prettyPrint();">
|
||||
|
||||
<table style="width: 100%; height: 100%;">
|
||||
<tr class="<?= $result ?>">
|
||||
<td colspan="3"></td>
|
||||
</tr>
|
||||
<tr class="header">
|
||||
<td colspan="2"><a href="/">Parsedown PHP</a> » <a href=".">Tests</a> » <?= $name ?></td>
|
||||
<td style="text-align: right;">
|
||||
<form action="http://parsedown.org<?= $_SERVER['SERVER_NAME'] === 'parsedown.org.local' ? '.local' : '' ?>/explorer/" method="post">
|
||||
<input type="hidden" name="text" />
|
||||
<a id="explorer" href="">Open in Explorer</a>
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="body" style="height: 100%; vertical-align: top;">
|
||||
<td style="background: #eee; width: 30%;">
|
||||
<pre id="md" style="word-wrap: break-word;"><?= $md ?></pre>
|
||||
</td>
|
||||
<td><pre class="prettyprint"><code><?= $expected_mu ?></code></pre></td>
|
||||
<td><pre class="prettyprint"><code><?= $actual_mu ?></code></pre></td>
|
||||
</tr>
|
||||
<tr class="footer">
|
||||
<td style="background: #eee;">Markdown</td>
|
||||
<td>Expected Markup</td>
|
||||
<td>Actual Markup</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
$('#explorer').click(function(e) {
|
||||
$('input[name=text]').val($('#md').text());
|
||||
$('form').submit();
|
||||
return false;
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
@ -1,2 +0,0 @@
|
||||
<h1>This is an h1</h1>
|
||||
<h2>This is an h2</h2>
|
@ -1,3 +0,0 @@
|
||||
# This is an h1
|
||||
|
||||
## This is an h2
|
@ -1,9 +0,0 @@
|
||||
<p>Here's a regular code block:</p>
|
||||
<pre><code><?php
|
||||
|
||||
echo 'Hello World!';
|
||||
|
||||
?></code></pre>
|
||||
<p>Here's one that holds a list:</p>
|
||||
<pre><code>- list item
|
||||
- another list item</code></pre>
|
@ -1,13 +0,0 @@
|
||||
Here's a regular code block:
|
||||
|
||||
<?php
|
||||
|
||||
echo 'Hello World!';
|
||||
|
||||
?>
|
||||
|
||||
Here's one that holds a list:
|
||||
|
||||
- list item
|
||||
- another list item
|
||||
|
@ -1,5 +0,0 @@
|
||||
<p>Here's <em>an emphasis</em>.</p>
|
||||
<p>Here's <strong>a strong one</strong>. </p>
|
||||
<p>Here's <em>an emphasis that uses underscores</em>. </p>
|
||||
<p>Here's <strong>a strong emphasis that uses underscores</strong>.</p>
|
||||
<p>This is _ not an emphasis _.</p>
|
@ -1,9 +0,0 @@
|
||||
Here's *an emphasis*.
|
||||
|
||||
Here's **a strong one**.
|
||||
|
||||
Here's _an emphasis that uses underscores_.
|
||||
|
||||
Here's __a strong emphasis that uses underscores__.
|
||||
|
||||
This is _ not an emphasis _.
|
@ -1,6 +0,0 @@
|
||||
<p>Here's an <em>emphasis</em> and here's an escaped *emphasis*. Here are also an escaped `code span`, escaped [inline link](http://example.com).</p>
|
||||
<p>Here's <code>an escaped \*emphasis\* inside of a code span</code>.</p>
|
||||
<p>Here's one inside of a code block:</p>
|
||||
<pre><code>An escaped \*emphasis\*.</code></pre>
|
||||
<p>Finally, an escaped reference:</p>
|
||||
<p>[1]: http://example.com</p>
|
@ -1,11 +0,0 @@
|
||||
Here's an *emphasis* and here's an escaped \*emphasis\*. Here are also an escaped \`code span\`, escaped \[inline link](http://example.com).
|
||||
|
||||
Here's `an escaped \*emphasis\* inside of a code span`.
|
||||
|
||||
Here's one inside of a code block:
|
||||
|
||||
An escaped \*emphasis\*.
|
||||
|
||||
Finally, an escaped reference:
|
||||
|
||||
\[1]: http://example.com
|
@ -1,5 +0,0 @@
|
||||
<p>Here's a list that's "inside" a paragraph:</p>
|
||||
<ul>
|
||||
<li>list item</li>
|
||||
<li>another list item</li>
|
||||
</ul>
|
@ -1,4 +0,0 @@
|
||||
Here's a list that's "inside" a paragraph:
|
||||
- list item
|
||||
- another list item
|
||||
|
@ -1,20 +0,0 @@
|
||||
<p>Here's a regular quote block:</p>
|
||||
<blockquote>
|
||||
<p>Some quoted text.
|
||||
Here goes some more.</p>
|
||||
</blockquote>
|
||||
<p>Here's one with space before lines:</p>
|
||||
<blockquote>
|
||||
<p>Some quoted text.
|
||||
Here goes some more.</p>
|
||||
</blockquote>
|
||||
<p>Here's one with no space after >:</p>
|
||||
<blockquote>
|
||||
<p>Some quoted text.
|
||||
Here goes some more.</p>
|
||||
</blockquote>
|
||||
<p>Here's one with no > on the second line:</p>
|
||||
<blockquote>
|
||||
<p>Some quoted text.
|
||||
Here goes some more.</p>
|
||||
</blockquote>
|
@ -1,19 +0,0 @@
|
||||
Here's a regular quote block:
|
||||
|
||||
> Some quoted text.
|
||||
> Here goes some more.
|
||||
|
||||
Here's one with space before lines:
|
||||
|
||||
> Some quoted text.
|
||||
> Here goes some more.
|
||||
|
||||
Here's one with no space after >:
|
||||
|
||||
>Some quoted text.
|
||||
>Here goes some more.
|
||||
|
||||
Here's one with no > on the second line:
|
||||
|
||||
> Some quoted text.
|
||||
Here goes some more.
|
@ -1,8 +0,0 @@
|
||||
<p>Here's a <a href="http://parsedown.org">reference link</a>.</p>
|
||||
<p>Here's <a href="http://parsedown.org">one</a> with an alternative syntax.</p>
|
||||
<p>Here's <a href="http://parsedown.org">one</a> on the next line.</p>
|
||||
<p>Here's <a href="http://parsedown.org">one</a> on 2 lines.</p>
|
||||
<p>Here's <a href="http://parsedown.org/tests/">one</a> with a different URL.</p>
|
||||
<p>Here's <a href="http://parsedown.org">one</a> with a semantic name.</p>
|
||||
<p>Here's [one][404] with no definition.</p>
|
||||
<p>Here's an image: <img alt="Markdown Logo" src="https://raw.github.com/dcurtis/markdown-mark/master/png/32x20-solid.png"></p>
|
@ -1,29 +0,0 @@
|
||||
Here's a [reference link][1].
|
||||
|
||||
[1]: http://parsedown.org
|
||||
|
||||
Here's [one] [2] with an alternative syntax.
|
||||
|
||||
[2] :http://parsedown.org
|
||||
|
||||
Here's [one][3] on the next line.
|
||||
[3]: http://parsedown.org
|
||||
|
||||
Here's [one][4] on 2 lines.
|
||||
|
||||
[4]:
|
||||
http://parsedown.org
|
||||
|
||||
Here's [one][5] with a different URL.
|
||||
|
||||
[5]: http://parsedown.org/tests/
|
||||
|
||||
Here's [one][the website] with a semantic name.
|
||||
|
||||
[the website]: http://parsedown.org
|
||||
|
||||
Here's [one][404] with no definition.
|
||||
|
||||
Here's an image: ![Markdown Logo][image]
|
||||
|
||||
[image]: https://raw.github.com/dcurtis/markdown-mark/master/png/32x20-solid.png
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user