1
0
mirror of https://github.com/erusev/parsedown.git synced 2025-09-04 12:15:27 +02:00

Compare commits

...

348 Commits
0.7.2 ... 1.6.0

Author SHA1 Message Date
Emanuil Rusev
3ebbd730b5 1.6.0 2015-10-04 19:44:32 +03:00
Emanuil Rusev
1f02626ed6 add link to caret.io 2015-10-01 18:47:31 +03:00
Emanuil Rusev
fa005fdb95 Merge pull request #336 from hkdobrev/late-static-binding
Use late static binding for Parsedown::instance()
2015-08-13 15:16:23 +03:00
Haralan Dobrev
5f40cab3e7 Use late static binding for Parsedown::instance()
Fixes erusev/parsedown-extra#67.

This introduces PHP 5.3+ late static binding to the Singleton pattern in Parsedown.
It will return an instance of Parsedown which inherits the class which
called the `instance()` method rather than always returning instance of just `Parsedown`.

Tests are testing this feature with a test class which inherits from Parsedown.
Notice that calling `instance()` with the default arguments after an instance of
`Parsedown` was already created, it will return it even though it is from just
an instance of `Parsedown`. So this is fixing the problem just partially.
2015-08-13 13:29:33 +03:00
Emanuil Rusev
0e89e3714b 1.5.4 2015-08-03 12:24:05 +03:00
Emanuil Rusev
6b24125f06 clean up 2015-07-31 17:01:14 +03:00
Emanuil Rusev
a589bcac79 resolve #342 2015-07-31 01:33:21 +03:00
Emanuil Rusev
a9dfc97ddc opening code fence doesn't need 2 regex groups 2015-07-16 16:57:13 +03:00
Emanuil Rusev
28774a4359 improve readme 2015-07-15 11:59:59 +03:00
Emanuil Rusev
b8b5711ee5 improve readme 2015-07-15 11:59:40 +03:00
Emanuil Rusev
9579e5f5e5 improve readme 2015-07-15 11:57:45 +03:00
Emanuil Rusev
7f7f6418a3 improve readme 2015-07-15 09:21:38 +03:00
Emanuil Rusev
ee81967749 improve readme 2015-07-03 17:11:23 +03:00
Emanuil Rusev
96e0810188 improve readme 2015-07-03 17:11:08 +03:00
Emanuil Rusev
99bd1bd678 improve readme 2015-07-03 17:06:52 +03:00
Emanuil Rusev
e7a6a06166 improve readme 2015-07-03 16:46:25 +03:00
Emanuil Rusev
eca5bb8262 improve readme 2015-07-03 16:45:22 +03:00
Emanuil Rusev
1312908056 improve readme 2015-07-03 16:42:47 +03:00
Emanuil Rusev
76b7d7babd improve readme 2015-07-03 16:39:51 +03:00
Emanuil Rusev
ba802c1c8d replace the term "incomplete" 2015-07-02 01:01:14 +03:00
Emanuil Rusev
438874e9a8 improve line 2015-06-25 01:05:05 +03:00
Emanuil Rusev
8e26f45dee improve readme 2015-06-15 17:38:15 +03:00
Emanuil Rusev
e2bb3eaaf8 clean up 2015-06-15 12:28:35 +03:00
Emanuil Rusev
0de61e7b3a improve readme 2015-06-15 12:09:57 +03:00
Emanuil Rusev
5b72dceb26 improve readme 2015-06-15 00:10:09 +03:00
Emanuil Rusev
95699c9ba6 improve readme 2015-06-14 22:55:21 +03:00
Emanuil Rusev
790066e9a7 improve readme 2015-05-26 13:37:45 +03:00
Emanuil Rusev
b9e5228e92 version 1.5.3 2015-04-29 23:22:24 +03:00
Emanuil Rusev
31c8856f53 Merge pull request #312 from garoevans/patch-1
Fix check against $matches
2015-04-24 08:24:06 +03:00
Emanuil Rusev
d5823ad622 Merge pull request #295 from hkdobrev/nightly
Test on nightly releases of PHP (7.0) and HHVM
2015-04-24 01:44:07 +03:00
Gareth Evans
6736ba9a04 Fix check against $matches
Fixes inline reference links with int 0 as reference

The link [link][0] where [0] is set at the bottom of the md file current breaks and it's truthy value is false.
2015-04-20 16:24:11 +01:00
Emanuil Rusev
468d1e3da8 improve readme 2015-03-18 20:44:57 +02:00
Emanuil Rusev
7aa1d97bba improve readme 2015-03-18 20:43:30 +02:00
Emanuil Rusev
f768f9c63f improve readme 2015-03-18 20:42:44 +02:00
Emanuil Rusev
aa83968534 improve readme 2015-03-18 20:41:23 +02:00
Emanuil Rusev
85eadccc05 Merge pull request #297 from hkdobrev/patch-1
Remove "tested in PHP 5.2"
2015-03-18 20:39:40 +02:00
Haralan Dobrev
c94fa12d67 Remove "tested on PHP 5.2"
It is no longer tested on PHP 5.2 in Travis CI.

See https://github.com/erusev/parsedown/pull/286
2015-03-18 17:15:00 +02:00
Emanuil Rusev
11e02d45fa improve readme 2015-03-18 16:20:28 +02:00
Emanuil Rusev
ecd53f9add improve readme 2015-03-18 16:16:51 +02:00
Emanuil Rusev
844b2f49ea Merge pull request #249 from HelpingHand1/patch-1
Updated readme to display travis-ci.org build test
2015-03-18 16:08:13 +02:00
Haralan Dobrev
b2ad712644 Test on nightly releases of PHP (7.0) and HHVM
See https://github.com/erusev/parsedown/issues/294

See 12bf1c6d05 (commitcomment-10090016)

Nightly releases are allowed to fail since they are not stable and
could fail in unpredictable ways.

New versions of PHP could be added as they are released.
I think they should not be in the allowed to fail part of the matrix then.
2015-03-09 10:14:57 +02:00
Emanuil Rusev
65116c3cb0 Merge pull request #286 from henriquemoody/travis
Remove PHP version 5.2 from Travis builds
2015-02-09 01:04:08 +02:00
Henrique Moody
147003107a Remove PHP version 5.2 from Travis builds 2015-02-08 21:00:50 -02:00
Emanuil Rusev
618b26056c Merge pull request #284 from jstanden/master
Fixes #283
2015-02-04 00:39:05 +02:00
Jeff Standen
b828fe7c8d Fixes #283 2015-02-03 13:58:47 -08:00
Emanuil Rusev
6c9df528aa Merge pull request #280 from kelunik/master
Fixes PHP 7 compatibility
2015-02-02 02:33:38 +02:00
Niklas Keller
cb8cc57742 Fixes #279 2015-02-02 00:58:24 +01:00
Emanuil Rusev
9da19c1108 version 1.5.1 2015-01-24 15:01:47 +02:00
Emanuil Rusev
ffd9d3b407 improve tests 2015-01-24 14:37:40 +02:00
Emanuil Rusev
e94ecf4adc resolve #277 2015-01-24 14:21:55 +02:00
Emanuil Rusev
4d3079b908 resolve #274 2015-01-24 14:03:05 +02:00
Emanuil Rusev
70e7a17380 update readme 2015-01-24 04:54:01 +02:00
Emanuil Rusev
9518c8e384 improve readme 2015-01-24 04:51:13 +02:00
Emanuil Rusev
c581284231 improve readme 2015-01-24 02:33:41 +02:00
Emanuil Rusev
cb1940255a improve readme 2015-01-24 01:31:49 +02:00
Emanuil Rusev
93d0ec9397 improve readme 2015-01-24 01:27:48 +02:00
Emanuil Rusev
9c6e7e880a improve readme 2015-01-24 01:26:59 +02:00
Emanuil Rusev
2d62e29625 improve readme 2015-01-24 01:21:16 +02:00
Emanuil Rusev
595f33871e improve readme 2015-01-24 01:18:49 +02:00
Emanuil Rusev
97e1e0efaa improve readme 2015-01-24 01:15:08 +02:00
Emanuil Rusev
648419467a clean up 2015-01-21 01:32:20 +02:00
Emanuil Rusev
6ddb6b2b33 resolve #90 2015-01-19 17:11:13 +02:00
Emanuil Rusev
0008e69a83 clean up 2015-01-19 17:09:51 +02:00
Emanuil Rusev
c664785485 inline methods should be able to handle unmarked inline elements 2015-01-19 17:05:10 +02:00
Emanuil Rusev
bdf0ef024e setter variables should not be private 2015-01-18 19:38:57 +02:00
Emanuil Rusev
21a3e8790a no need for a separate method for every special character 2015-01-16 03:57:47 +02:00
Emanuil Rusev
e5e8d02934 improve order of methods 2015-01-16 03:18:07 +02:00
Emanuil Rusev
7ff0f97811 improve performance 2015-01-16 02:59:51 +02:00
Emanuil Rusev
596350d1f5 improve names of elements 2015-01-16 02:49:55 +02:00
Emanuil Rusev
2cbd3010e4 url elements should not be restricted to http 2015-01-16 02:31:58 +02:00
Emanuil Rusev
3b4aa6bff7 change the parsing order of tag elements to improve performance 2015-01-16 01:46:43 +02:00
Emanuil Rusev
05a8f16e95 improve CommonMark compliance 2015-01-16 01:44:35 +02:00
Emanuil Rusev
79d924040a improve CommonMark compliance 2015-01-16 01:24:02 +02:00
Emanuil Rusev
b4a8eb3315 resolve #156 2015-01-16 00:04:18 +02:00
Emanuil Rusev
4383cce85b resolve #143 2015-01-15 22:31:31 +02:00
Emanuil Rusev
ada39109e4 resolve #189 2015-01-15 22:04:02 +02:00
Emanuil Rusev
a06cdfb814 improve fix for #184 2015-01-15 21:32:18 +02:00
Emanuil Rusev
6bee326c92 resolve #184 2015-01-15 21:10:09 +02:00
Emanuil Rusev
3fe867d294 update readme 2015-01-15 18:28:11 +02:00
Emanuil Rusev
f08d017bcb resolve #196 2015-01-15 02:45:45 +02:00
Emanuil Rusev
e61a6114b0 resolve #175 2015-01-15 02:37:20 +02:00
Emanuil Rusev
9ed72ccd09 resolve #126 2015-01-15 02:24:39 +02:00
Emanuil Rusev
09e1184d9f resolve #265 2015-01-15 00:56:12 +02:00
Emanuil Rusev
2de60a9a8b improve readme 2015-01-13 15:28:18 +02:00
Emanuil Rusev
73a75299f5 improve readme 2015-01-13 15:18:35 +02:00
Emanuil Rusev
0d28808392 void markup blocks be marked 2015-01-12 23:24:13 +02:00
Emanuil Rusev
78960cf792 improve formatting 2015-01-12 18:53:24 +02:00
Emanuil Rusev
8f2e9c7cf6 definitions are blocks
in the old implementation it wasn’t possible to have multiline
definitions
2015-01-12 18:52:17 +02:00
Emanuil Rusev
3eb6d349f0 "src" and "alt" attributes should come first 2015-01-12 02:58:08 +02:00
Emanuil Rusev
859b1b10c1 update tests 2015-01-12 02:57:20 +02:00
Emanuil Rusev
08b01a1a29 blocks should be able to return markup 2015-01-12 02:55:00 +02:00
Emanuil Rusev
1686b2fbff we no longer call inline elements spans 2015-01-12 02:55:00 +02:00
Emanuil Rusev
15a32fcd0e no need to know the structure of markup blocks 2015-01-12 02:55:00 +02:00
Emanuil Rusev
4aca208f96 update readme 2015-01-11 16:23:43 +02:00
Emanuil Rusev
cedf96a64e update readme 2015-01-11 16:04:19 +02:00
Emanuil Rusev
9f58363e4b Merge pull request #260 from rhukster/master
Fix for Parsedown stripping classes on images supported by ParsedownExtra
2015-01-11 14:50:08 +02:00
Emanuil Rusev
6b4a459f97 Merge pull request #261 from naNuke/master
breaksEnabled fix
2015-01-11 14:08:17 +02:00
naNuke
05bf198d26 breaksEnabled fix 2015-01-11 06:12:01 +01:00
Andy Miller
30234a58fa No longer needed in this solution 2015-01-10 19:44:30 -07:00
Andy Miller
03ff22c7df Attempted fix for stripped classes on images with ParsedownExtra - re: https://github.com/erusev/parsedown-extra/issues/32 2015-01-10 19:40:39 -07:00
Emanuil Rusev
098f188552 update readme 2015-01-10 14:53:08 +02:00
Emanuil Rusev
e68a458105 improve consistency 2015-01-10 14:22:54 +02:00
Emanuil Rusev
86a27b48bc update readme 2015-01-10 03:43:48 +02:00
Emanuil Rusev
c45dee6850 update readme 2015-01-10 03:41:29 +02:00
Emanuil Rusev
06135cd75a improve CommonMark compliance 2015-01-10 02:45:51 +02:00
Emanuil Rusev
7d3af6bf83 update commonmark test 2015-01-09 00:08:14 +02:00
Emanuil Rusev
dfacf7a71a add urlsLinked setter 2015-01-08 16:13:55 +02:00
Emanuil Rusev
fd0d8125e7 introduce more structure to parsing of unmarked inlines 2015-01-08 15:19:43 +02:00
Emanuil Rusev
b1be886d65 improve names of protected members 2015-01-05 15:05:18 +02:00
Emanuil Rusev
19bc6a7083 update variable names to match updated member names 2015-01-05 14:22:06 +02:00
Emanuil Rusev
b5efe98e2f improve names of protected members 2015-01-05 14:22:06 +02:00
Emanuil Rusev
5639ef7d69 fix PHPDoc 2015-01-05 14:22:06 +02:00
Emanuil Rusev
d42fcdc423 improve readme 2015-01-05 14:18:36 +02:00
Emanuil Rusev
d29d879ec6 separate parsing of inlines that don't have markers to improve simplicity 2015-01-04 18:37:24 +02:00
Emanuil Rusev
c9b4de3c9d resolve #253 2014-12-21 13:51:16 +02:00
Emanuil Rusev
38cc1ca7e0 resolve #251 2014-12-16 13:58:33 +02:00
Emanuil Rusev
23c4097fde restore support for PHP 5.2 2014-12-15 13:59:37 +02:00
Emanuil Rusev
05e87566a9 Merge branch 'master' of https://github.com/erusev/parsedown 2014-12-15 01:08:15 +02:00
Emanuil Rusev
ac68800717 improve extensibility 2014-12-15 01:07:29 +02:00
Emanuil Rusev
1aade35c5e update test 2014-12-15 00:56:22 +02:00
Emanuil Rusev
361febf7c6 improve CommonMark compliance 2014-12-15 00:52:03 +02:00
HelpingHand1
4b7d7cdef2 updated readme.md per comment by cebe 2014-12-13 13:01:40 -05:00
Emanuil Rusev
715f7572ad improve readme 2014-12-12 02:30:45 +02:00
Emanuil Rusev
907bd11613 improve readme 2014-12-11 15:30:40 +02:00
Emanuil Rusev
56c6169822 improve readme 2014-12-11 14:34:58 +02:00
HelpingHand1
97e667ab30 Updated readme to display travis-ci.org build test 2014-12-10 18:13:48 -05:00
Emanuil Rusev
6d54fda73a improve readme 2014-12-10 20:37:33 +02:00
Emanuil Rusev
3b5e4e23ec improve readme 2014-12-10 20:36:15 +02:00
Emanuil Rusev
85ee06898b resolve #182 2014-12-10 17:19:05 +02:00
Emanuil Rusev
4c24e68b42 Merge remote-tracking branch 'origin/commonmark'
Conflicts:
	Parsedown.php
	phpunit.xml.dist
	test/ParsedownTest.php
2014-12-06 02:50:54 +02:00
Emanuil Rusev
094cb88dac update test 2014-12-02 23:53:19 +02:00
Emanuil Rusev
7ab3c60a77 improve CommonMark compliance 2014-12-02 22:23:43 +02:00
Emanuil Rusev
2438c1a43d improve output readability 2014-11-29 23:53:38 +02:00
Emanuil Rusev
46196c1ac3 markup formatting shouldn't impact results 2014-11-29 22:58:42 +02:00
Emanuil Rusev
aa3d4d6eb7 simplify 2014-11-29 21:39:42 +02:00
Emanuil Rusev
6fb534bc34 improve consistency 2014-11-29 21:34:46 +02:00
Emanuil Rusev
28a202ee9e simplify 2014-11-29 20:18:23 +02:00
Emanuil Rusev
e46be110fb Merge branch 'master' into commonmark 2014-11-29 16:42:04 +02:00
Emanuil Rusev
495e7ac73b resolve #247 2014-11-29 04:29:14 +02:00
Emanuil Rusev
5bc6d90f8b resolve #248 2014-11-28 14:03:12 +02:00
Emanuil Rusev
9816507a75 markup should preserve empty lines 2014-11-19 20:18:56 +02:00
Emanuil Rusev
7000cbc2d2 improve readme 2014-11-12 22:27:29 +02:00
Emanuil Rusev
6df242bc97 improve readme 2014-11-12 03:37:36 +02:00
Emanuil Rusev
f4453fd729 improve readme 2014-11-12 03:36:17 +02:00
Emanuil Rusev
d8011c00ab improve readme 2014-11-09 13:40:39 +02:00
Emanuil Rusev
da5d75e97e resolve #209 2014-10-29 22:29:46 +02:00
Emanuil Rusev
2adb87ef41 Merge pull request #236 from naNuke/escapeComment
Ignore html comments as well with markupEscape option.
2014-10-10 21:11:23 +03:00
naNuke
74926c9831 Add test of escaped html comment. 2014-10-10 20:07:41 +02:00
naNuke
68f3aea036 Ignore html comments as well with markupEscape option. 2014-10-10 19:07:25 +02:00
Emanuil Rusev
f91e4dece3 improve consistency 2014-09-26 13:06:40 +03:00
Emanuil Rusev
c62365adc4 improve extensibility of test case 2014-09-26 02:06:16 +03:00
Emanuil Rusev
bb7a3f41e3 improve readme 2014-09-22 12:01:39 +03:00
Emanuil Rusev
f64c1387f8 fix indents 2014-09-22 02:52:45 +03:00
Emanuil Rusev
59c77e706b improve consistency 2014-09-22 02:36:42 +03:00
Emanuil Rusev
e0965ce09b Merge pull request #224 from hkdobrev/no-markup-option
Add `noMarkup` option to escape user HTML
2014-09-21 23:19:23 +03:00
Haralan Dobrev
0a3fde3774 Add noMarkup option to escape user HTML
Resolves #106.

This change introduces a new option - `noMarkup`. You could set it the
`setNoMarkup()` method similar to the `setBreaksEnabled()` one.

Example usage:

``` php
<?php

$parsedown = new Parsedown();
$parsedown->setNoMarkup(true);
$parsedown->text('<div><strong>*Some text*</strong></div>');

// Outputs:
// <p>&lt;div>&lt;strong><em>Some text</em>&lts;/strong>&lt;/div></p>
```
2014-09-20 14:53:19 +03:00
Emanuil Rusev
93f7b26427 imp 2014-09-14 01:14:40 +03:00
Emanuil Rusev
d53c7dbcd9 Merge pull request #221 from hkdobrev/commonmark-renaming
Rename everything to CommonMark
2014-09-14 00:29:04 +03:00
Haralan Dobrev
42222e6b01 Rename everything to CommonMark 2014-09-14 00:11:18 +03:00
Emanuil Rusev
e1cb3b7b23 improve readme 2014-09-13 00:11:56 +03:00
Emanuil Rusev
5bf56ea041 improve readme 2014-09-12 23:52:06 +03:00
Emanuil Rusev
9e98ed04de improve readme 2014-09-11 15:47:59 +03:00
Emanuil Rusev
1c89e6f771 improve readme 2014-09-09 14:30:17 +03:00
Emanuil Rusev
e7d160049e Merge pull request #218 from hkdobrev/common-mark
Rename Standard Markdown to CommonMark
2014-09-06 01:17:15 +03:00
Haralan Dobrev
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
Emanuil Rusev
8ecf828777 Merge pull request #217 from hkdobrev/standard-markdown
Standard markdown
2014-09-05 23:38:01 +03:00
Haralan Dobrev
c18ff7f370 Add Docblock and attribution to JS test runner 2014-09-05 23:28:07 +03:00
Haralan Dobrev
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
Emanuil Rusev
0220a93010 Merge pull request #208 from apfelbox/max-h6
Limit generated headlines to h6
2014-08-26 09:31:52 +03:00
Jannik Zschiesche
512cc1f065 Limit generated headlines to h6 2014-08-25 21:06:03 +02:00
Emanuil Rusev
9437766539 Merge pull request #200 from hkdobrev/html-attributes-slashes
Allow slashes in HTML attributes
2014-08-14 01:27:48 +03:00
Haralan Dobrev
1127681d56 Allow slashes in HTML attributes 2014-08-13 23:54:52 +03:00
Emanuil Rusev
e33ac1c56e improve readme 2014-06-18 12:27:25 +03:00
Emanuil Rusev
d24439ada0 improve test suite 2014-05-21 23:20:46 +03:00
Emanuil Rusev
1ae100beab improve comment 2014-05-17 17:37:17 +03:00
Emanuil Rusev
82a5a78a36 improve readme 2014-05-17 17:13:00 +03:00
Emanuil Rusev
4ede4340ab improve readme 2014-05-16 03:34:43 +03:00
Emanuil Rusev
170a6bf770 improve readme 2014-05-16 01:27:54 +03:00
Emanuil Rusev
21db821324 improve readme 2014-05-16 01:15:21 +03:00
Emanuil Rusev
b384839d15 update readme 2014-05-14 20:07:52 +03:00
Emanuil Rusev
2da10d277b resolve #105 2014-05-14 13:14:49 +03:00
Emanuil Rusev
532b5ede35 resolve #129 2014-05-14 01:11:05 +03:00
Emanuil Rusev
2bd2f81f4f methods should not have more than one optional parameters 2014-05-12 16:18:00 +03:00
Emanuil Rusev
e318e66de5 improve consistency 2014-05-12 00:41:00 +03:00
Emanuil Rusev
0820d0a607 paragraph doesn't have to use a type 2014-05-12 00:34:47 +03:00
Emanuil Rusev
b8d1cfe91a improve extensibility 2014-05-11 22:31:02 +03:00
Emanuil Rusev
d85a233611 Merge pull request #171 from scarwu/master
identifyEscapeSequence() needs Array check
2014-05-11 20:57:05 +03:00
ScarWu
973d4a866d add array check 2014-05-11 23:36:01 +08:00
Emanuil Rusev
d19c2b6942 improve names 2014-05-10 16:28:00 +03:00
Emanuil Rusev
4dde57451d fix consecutive reference links 2014-05-06 17:05:49 +03:00
Emanuil Rusev
44686c4f1e improve extensibility 2014-05-06 01:12:27 +03:00
Emanuil Rusev
db02ecf259 "reference" is a definition 2014-05-05 14:43:31 +03:00
Emanuil Rusev
aa004d4595 improve code organisation 2014-05-05 14:39:40 +03:00
Emanuil Rusev
1bb65457ed remove unnecessary comments 2014-05-05 13:46:26 +03:00
Emanuil Rusev
0c9a4af8ab improve naming consistency 2014-05-03 18:02:06 +03:00
Emanuil Rusev
cc94c1b584 resolve #167 2014-05-02 18:21:10 +03:00
Emanuil Rusev
e8d8801db4 resolve #135 2014-05-01 02:44:35 +03:00
Emanuil Rusev
521803cdcd resolve #136 2014-05-01 02:42:01 +03:00
Emanuil Rusev
0eb480324c resolve #145 2014-05-01 02:02:14 +03:00
Emanuil Rusev
7c78aff578 resolve #163 2014-05-01 01:47:14 +03:00
Emanuil Rusev
2a5f99547c resolve #162 2014-05-01 01:05:31 +03:00
Emanuil Rusev
e373391e7d resolve #164 2014-05-01 00:29:21 +03:00
Emanuil Rusev
9fa415bcc5 resolve #160 2014-04-28 21:54:38 +03:00
Emanuil Rusev
37416b5f07 simplify folder name 2014-04-28 21:53:34 +03:00
Emanuil Rusev
83d3e3dbbf improve readability 2014-04-28 02:27:05 +03:00
Emanuil Rusev
307a987cb6 improve naming consistency 2014-04-28 02:14:46 +03:00
Emanuil Rusev
eab3cbf255 remove unnecessary nesting 2014-04-28 02:10:18 +03:00
Emanuil Rusev
cf7f32f891 definitions are not blocks 2014-04-27 01:54:52 +03:00
Emanuil Rusev
4150e00dc4 remove composer dependency 2014-04-26 01:09:28 +03:00
Emanuil Rusev
22affa124b travis should be able to run tests in 5.2 2014-04-26 01:06:15 +03:00
Emanuil Rusev
5e95242318 improve code consistency 2014-04-26 01:06:14 +03:00
Emanuil Rusev
504991a04e Merge pull request #158 from hkdobrev/travis-composer
Run composer install in Travis CI before tests
2014-04-25 00:06:06 +03:00
Haralan Dobrev
3d84201d74 Run composer install in Travis CI before tests
Tests are using the Composer autoloader since: cd1c030362

Because of that Composer should have actually dumped the autoloader in the `vendor/` folder,
before the tests are ran.
2014-04-25 00:01:20 +03:00
Emanuil Rusev
4f027386b1 "complete" calls should be more consistent 2014-04-24 23:52:42 +03:00
Emanuil Rusev
cd1c030362 tests should use autoloader 2014-04-24 22:44:30 +03:00
Emanuil Rusev
6081954185 resolve #154 2014-04-18 00:19:22 +03:00
Emanuil Rusev
d841003c65 fenced code blocks should respect indnetation 2014-04-17 23:09:10 +03:00
Emanuil Rusev
f310bbe13f nested calls to lines should not reset reference definitions 2014-04-17 15:07:09 +03:00
Emanuil Rusev
2595f366d9 texts should not share reference definitions 2014-04-17 14:43:45 +03:00
Emanuil Rusev
e5dc563804 replace tabs with spaces 2014-04-17 13:34:17 +03:00
Emanuil Rusev
e0901ee9c7 remove CONTRIBUTING.md 2014-04-17 11:47:53 +03:00
Emanuil Rusev
5316a2e0dd improve readme 2014-04-17 11:22:49 +03:00
Emanuil Rusev
5be4491943 make parser class more extensible 2014-04-17 10:59:35 +03:00
Emanuil Rusev
4e670129c8 simplify test class 2014-04-17 10:46:07 +03:00
Emanuil Rusev
159c3cede6 move deprecated methods to the bottom of the class 2014-04-17 01:11:30 +03:00
Emanuil Rusev
c10bde0174 common rules should be in a global .gitignore 2014-03-24 23:08:52 +02:00
Emanuil Rusev
24d872383c resolve #140 2014-03-19 00:58:26 +02:00
Emanuil Rusev
7ef45894a7 Merge pull request #128 from wkpark/fixup_table
resolve #125 using strpos()
2014-02-28 14:05:10 +02:00
Won-Kyu Park
9bf64d2e31 resolve #125 using strpos() 2014-02-27 23:58:24 +09:00
Emanuil Rusev
886c620440 Merge pull request #122 from wkpark/marker_index
use $closestMarkerIndex
2014-02-27 14:14:14 +02:00
Won-Kyu Park
e156c418d6 fixup regression due to commit 59907ff7 "simplify em/strong routine"
use $closestMarkerIndex correctly
2014-02-26 14:14:56 +09:00
Emanuil Rusev
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
Haralan Dobrev
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
Emanuil Rusev
3fa9d62572 psr-2 names 2014-02-24 01:38:58 +02:00
Emanuil Rusev
4f851205a7 simplify content types 2014-02-24 00:55:34 +02:00
Emanuil Rusev
0985c2ef29 fix [0] reference labels 2014-02-23 23:43:18 +02:00
Emanuil Rusev
9fd9262f16 implement tables 2014-02-23 18:55:34 +02:00
Emanuil Rusev
a6756fd4fa resolve #117 2014-02-22 12:35:54 +02:00
Emanuil Rusev
1243fcf3e0 simplify example 2014-02-21 02:49:59 +02:00
Emanuil Rusev
1e8d917f7a replace synopsis with a more appropriate word 2014-02-21 02:26:23 +02:00
Emanuil Rusev
324eaf7c15 move synopsis to the top 2014-02-21 02:23:17 +02:00
Emanuil Rusev
f972f7f15d arrange methods 2014-02-21 02:22:31 +02:00
Emanuil Rusev
688b761d32 remove obsolete variables 2014-02-21 02:02:36 +02:00
Emanuil Rusev
b8bd12f565 parser should be less dependent on compiler 2014-02-21 01:54:23 +02:00
Emanuil Rusev
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
Won-Kyu Park
6fed312d3c fixup internal reference labling to make code more readable 2014-02-19 13:30:46 +09:00
Emanuil Rusev
d0784d1006 Merge pull request #110 from wkpark/hr_heading
support HTML hr and headings
2014-02-17 21:29:57 +02:00
Won-Kyu Park
446fead459 simple html cases 2014-02-17 23:33:56 +09:00
Won-Kyu Park
ccbdfabaff support HR and headings as block markups 2014-02-17 23:31:08 +09:00
Emanuil Rusev
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
Haralan Dobrev
d9f325903a Run the testsuite on PHP 5.6 2014-02-12 19:13:14 +02:00
Emanuil Rusev
d29ff18299 resolve #92 2014-02-06 14:16:14 +02:00
Emanuil Rusev
95e9878fb0 improve tests 2014-02-06 02:37:09 +02:00
Emanuil Rusev
611aed179d simplify reference 2014-02-06 02:36:22 +02:00
Emanuil Rusev
abb88d59fa fix reference 2014-02-06 02:36:11 +02:00
Emanuil Rusev
14ab6d46fe resolve #82 2014-02-06 00:10:18 +02:00
Emanuil Rusev
ebfdace4c6 reference labels should be case insensitive 2014-02-05 14:18:05 +02:00
Emanuil Rusev
ba7f377290 resolve #88, resolve #81 2014-02-05 14:03:43 +02:00
Emanuil Rusev
548a6f7945 resolve #89 2014-02-05 14:03:43 +02:00
Emanuil Rusev
7a4d3c0f18 Merge pull request #85 from cebe/simplify-tests
simplify testing and improved output
2014-02-04 03:46:39 -08:00
Emanuil Rusev
7f68a3a2e1 improve contributing guidelines 2014-02-04 01:49:55 +02:00
Emanuil Rusev
7193e634b2 Merge pull request #84 from wkpark/fix-em-strong
simplify em/strong routine
2014-02-03 05:28:20 -08:00
Carsten Brandt
45c01d4673 simplify testing and improved output 2014-02-03 11:23:54 +01:00
Won-Kyu Park
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
Emanuil Rusev
6e93b68692 outdented is shorter and probably more accurate 2014-02-02 23:41:58 +02:00
Emanuil Rusev
5a525be070 improve contributing guidelines 2014-02-02 23:23:50 +02:00
Emanuil Rusev
f5f1706e58 improve consistency of list item 2014-02-02 22:27:22 +02:00
Emanuil Rusev
b257d0ecaa add contributing guidelines 2014-02-02 22:14:53 +02:00
Emanuil Rusev
a7510b97e7 dense list items that follow sparse ones should not be rendered as sparse ones 2014-01-31 03:03:52 +02:00
Emanuil Rusev
e9098aebfa improve parsing of list item and code block by measuring line indentation 2014-01-31 02:19:18 +02:00
Emanuil Rusev
72f4a375ef Merge pull request #69 from KaneCohen/master 2014-01-29 15:16:00 -08:00
Kane Cohen
07b738b1c8 Remove one unnecessary /u flag. 2014-01-29 23:05:05 +00:00
Kane Cohen
f7181ee9b6 Remove /u flag from '*' chars. Add /u to urls. 2014-01-29 22:57:29 +00:00
Emanuil Rusev
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
Carsten Brandt
d3c975d4d8 some edge case tests for the code tag 2014-01-29 15:36:41 +01:00
Kane Cohen
55f360a591 Add unicode support for strong/em regex. 2014-01-29 10:30:21 +00:00
Emanuil Rusev
215ff63594 improve comments 2014-01-29 02:14:59 +02:00
Emanuil Rusev
3d581dcaa9 simplify names of block types 2014-01-27 22:21:58 +02:00
Emanuil Rusev
bbce965a9a read-only fields should be static 2014-01-27 00:58:18 +02:00
Emanuil Rusev
6069fdac81 refactor parsing of html 2014-01-27 00:10:24 +02:00
Emanuil Rusev
0f090e1a6e remove trailing line break 2014-01-27 00:08:55 +02:00
Emanuil Rusev
618ab4e156 improve layout of class members 2014-01-26 19:53:24 +02:00
Emanuil Rusev
7661b7c8f9 simplify comments 2014-01-26 19:14:44 +02:00
Emanuil Rusev
8f6495ce86 ternaries should not do more than assign a value 2014-01-26 19:13:08 +02:00
Emanuil Rusev
250ba80356 expression assignments should be separate 2014-01-26 19:05:24 +02:00
Emanuil Rusev
3ac9b96e57 element » block 2014-01-26 13:47:56 +02:00
Emanuil Rusev
b764deca66 improve comments 2014-01-26 03:36:25 +02:00
Emanuil Rusev
65ef541fda improve comments 2014-01-25 18:47:44 +02:00
Emanuil Rusev
c7b6d0235d unset brackets should not be separated 2014-01-25 14:53:39 +02:00
Emanuil Rusev
1a2124daae Merge pull request #65 from hkdobrev/comments-imperative
Use imperative tense in comments
2014-01-25 04:53:19 -08:00
Haralan Dobrev
bf6c9a6db2 Use imperative tense in comments 2014-01-24 01:47:44 +02:00
Emanuil Rusev
0494c6b274 improve comments 2014-01-24 01:28:03 +02:00
Emanuil Rusev
3e0c010c1f improve comments 2014-01-23 23:48:38 +02:00
Emanuil Rusev
3a5eecc23d replace logical operators with conditionals to improve readability 2014-01-23 22:46:49 +02:00
Emanuil Rusev
c8c5ae9df8 control structures should use braces 2014-01-23 22:34:02 +02:00
Emanuil Rusev
843786c07c improve comments 2014-01-23 22:08:06 +02:00
Emanuil Rusev
0c61f71e3f rtrim » chop 2014-01-23 13:07:15 +02:00
Emanuil Rusev
01a147c574 replace tabs with spaces to improve compatibility with psr-2 2014-01-23 00:57:36 +02:00
Emanuil Rusev
f0fbdaa6ca backtick within code span 2014-01-22 21:28:29 +02:00
Emanuil Rusev
e20c0a29bd nested elements should render on a new line 2014-01-22 21:28:29 +02:00
Emanuil Rusev
712dd23d30 simplify parsing of list 2014-01-22 21:28:29 +02:00
Emanuil Rusev
68f2871996 resolve #3 2014-01-22 21:28:29 +02:00
Emanuil Rusev
17e7e33847 name image title test 2014-01-22 21:28:29 +02:00
Emanuil Rusev
7cb9646d98 simplify compiling of links 2014-01-22 21:28:29 +02:00
Emanuil Rusev
325bdd9ff6 improve readme 2014-01-21 23:15:02 +02:00
Emanuil Rusev
2a0700abda resolve #61 2014-01-20 22:19:23 +02:00
Emanuil Rusev
4e83d79d76 setters should know nothing 2014-01-20 09:26:25 +02:00
Emanuil Rusev
354842fd6e simplify compiling 2014-01-19 23:34:20 +02:00
Emanuil Rusev
2b73e94c6c simplify parsing of escaped characters 2014-01-19 22:49:43 +02:00
Emanuil Rusev
0182812d6c remove unnecessary blank lines 2014-01-19 15:37:05 +02:00
Emanuil Rusev
f5dd3455f9 resolve #58 2014-01-19 00:52:07 +02:00
Emanuil Rusev
1017f22cdd fix paragraph list 2014-01-18 16:45:39 +02:00
Emanuil Rusev
88854955d6 take $inline_tags out of the method 2014-01-18 16:45:39 +02:00
Emanuil Rusev
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
Emanuil Rusev
fee5b71998 improve readme 2014-01-17 01:33:20 +02:00
Emanuil Rusev
149b687ee7 improve tests 2014-01-17 01:25:41 +02:00
Emanuil Rusev
98b17e3354 setext heading doesn't have to use regex 2014-01-17 01:23:25 +02:00
Emanuil Rusev
da966b83f1 atx heading doesn't have to use regex 2014-01-17 00:36:11 +02:00
Emanuil Rusev
b9ab495cb4 parse method doesn't have to use regex 2014-01-16 23:43:34 +02:00
Emanuil Rusev
408cb5c21f code block doesn't have to use regex 2014-01-16 23:43:12 +02:00
Emanuil Rusev
5dd0e8cb7b $deindented_line >= ... doesn't make sense 2014-01-16 23:39:56 +02:00
Emanuil Rusev
5521afde31 refactor $element 2014-01-13 23:45:31 +02:00
Emanuil Rusev
4317add3a2 add hhvm to PHP versions to test against 2013-12-28 14:57:25 +02:00
Emanuil Rusev
47d8a1382b implement automatic line breaks as an option 2013-12-26 23:43:25 +02:00
Emanuil Rusev
fd42f2e864 improve tests 2013-12-26 21:55:33 +02:00
Emanuil Rusev
c0b7155572 implement link titles 2013-12-26 21:53:48 +02:00
Emanuil Rusev
be366b63ea improve parsing of emphasis
**strong** and *em* and **strong** and *em*
2013-12-24 23:40:12 +02:00
Emanuil Rusev
68484504ca separate compiling of link / image
there are 2 types of input that produce link / image
2013-12-24 16:05:13 +02:00
Emanuil Rusev
4fecd91f7d span elements should get parsed on a first-come, first-served basis 2013-12-24 03:17:23 +02:00
Emanuil Rusev
9dae844a6e post-increment operators should not be separated 2013-12-22 02:03:53 +02:00
Emanuil Rusev
df6fe915c6 Merge pull request #48 from kaamaru/master
Fix HTML Bug
2013-12-18 10:36:06 -08:00
kaamaru
576b0ea761 Fix HTML Bug
If you add markdown after HTML on the same line, all the remaining markdown will not be parsed.

Demo:
Add "<span></span> *test*" without quotes to the top of a markdown page on it's own line and then parse.
2013-12-18 12:32:49 +00:00
Emanuil Rusev
0f027dc04b Merge pull request #47 from malorisdead/link-titles
Add ability to specify link titles on inline and reference links.
2013-12-15 14:56:12 -08:00
Emanuil Rusev
179862bd6e improve readme 2013-12-15 03:32:34 +02:00
malorisdead
019a4af2af Added ability to specify link titles to inline and reference links.
Fixed whitespace bug with reference link regex.
Updated tests.
2013-12-14 02:13:53 -05:00
Emanuil Rusev
51a08fad85 improve parsing of emphasis 2013-12-07 17:21:36 +02:00
Emanuil Rusev
7fb08f334a improve comments 2013-12-07 10:54:05 +02:00
Emanuil Rusev
85ad014f74 parse code span after recursive types to resolve #44 2013-12-06 01:43:55 +02:00
Emanuil Rusev
22336a1bcc simplify special characters test 2013-12-06 00:45:26 +02:00
Emanuil Rusev
f713e380ee add comment for automatic link 2013-12-06 00:29:51 +02:00
Emanuil Rusev
5b01915a63 interrupted list items should not add nonexistent empty lines 2013-12-06 00:15:17 +02:00
Emanuil Rusev
18d112a614 improve readme 2013-12-03 23:19:50 +02:00
Emanuil Rusev
1b9641ad03 improve readme 2013-12-03 22:49:50 +02:00
Emanuil Rusev
8baf537c12 resolve #40 2013-12-02 23:26:43 +02:00
Emanuil Rusev
05823567bc simplify comments 2013-12-02 23:02:15 +02:00
Emanuil Rusev
b7029ab176 improve readme 2013-12-01 00:10:30 +02:00
Emanuil Rusev
102a947c7a improve readme 2013-11-23 15:58:58 +02:00
Emanuil Rusev
7bb70186c1 simplify test for em strong 2013-11-23 13:35:15 +02:00
139 changed files with 2358 additions and 962 deletions

3
.gitignore vendored
View File

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

View File

@@ -1,7 +1,16 @@
language: php
php:
- 7.0
- 5.6
- 5.5
- 5.4
- 5.3
- 5.2
- hhvm
- hhvm-nightly
matrix:
fast_finish: true
allow_failures:
- php: 7.0
- php: hhvm-nightly

File diff suppressed because it is too large Load Diff

View File

@@ -1,8 +1,22 @@
## Parsedown
Fast and consistent [Markdown][1] parser for PHP.
[![Build Status](https://img.shields.io/travis/erusev/parsedown/master.svg?style=flat-square)](https://travis-ci.org/erusev/parsedown)
<!--[![Total Downloads](http://img.shields.io/packagist/dt/erusev/parsedown.svg?style=flat-square)](https://packagist.org/packages/erusev/parsedown)-->
[Home](http://parsedown.org) &middot; [Demo](http://parsedown.org/explorer/) &middot; [Tests](http://parsedown.org/tests/)
Better Markdown Parser in PHP
[Demo](http://parsedown.org/demo) |
[Benchmarks](http://parsedown.org/speed) |
[Tests](http://parsedown.org/tests/) |
[Documentation](https://github.com/erusev/parsedown/wiki/)
### Features
* Super Fast
* [GitHub flavored](https://help.github.com/articles/github-flavored-markdown)
* Extensible
* Tested in 5.3 to 5.6
* [Markdown Extra extension](https://github.com/erusev/parsedown-extra)
### Installation
@@ -10,12 +24,34 @@ 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 <strong>Parsedown</strong>!</p>
echo $Parsedown->text('Hello _Parsedown_!'); # prints: <p>Hello <em>Parsedown</em>!</p>
```
[1]: http://daringfireball.net/projects/markdown/
More examples in [the wiki](https://github.com/erusev/parsedown/wiki/) and in [this video tutorial](http://youtu.be/wYZBY8DEikI).
### Questions
**How does Parsedown work?**
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).
We call this approach "line based". We believe that Parsedown is the first Markdown parser to use it. Since the release of Parsedown, other developers have used the same approach to develop other Markdown parsers in PHP and in other languages.
**Is it compliant with CommonMark?**
It passes most of the CommonMark tests. Most of the tests that don't pass deal with cases that are quite uncommon. Still, as CommonMark matures, compliance should improve.
**Who uses it?**
[phpDocumentor](http://www.phpdoc.org/), [October CMS](http://octobercms.com/), [Bolt CMS](http://bolt.cm/), [Kirby CMS](http://getkirby.com/), [Grav CMS](http://getgrav.org/), [Statamic CMS](http://www.statamic.com/), [RaspberryPi.org](http://www.raspberrypi.org/) and [more](https://www.versioneye.com/php/erusev:parsedown/references).
**How can I help?**
Use it, star it, share it and if you feel generous, [donate](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=528P3NZQMP8N2).
---
You might also like [Caret](http://caret.io) - our Markdown editor for the desktop.

View File

@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<phpunit colors="true">
<phpunit bootstrap="test/bootstrap.php" colors="true">
<testsuites>
<testsuite>
<file>tests/Test.php</file>
<file>test/ParsedownTest.php</file>
</testsuite>
</testsuites>
</phpunit>

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;
}
}

159
test/ParsedownTest.php Normal file
View File

@@ -0,0 +1,159 @@
<?php
class ParsedownTest extends PHPUnit_Framework_TestCase
{
final function __construct($name = null, array $data = array(), $dataName = '')
{
$this->dirs = $this->initDirs();
$this->Parsedown = $this->initParsedown();
parent::__construct($name, $data, $dataName);
}
private $dirs, $Parsedown;
/**
* @return array
*/
protected function initDirs()
{
$dirs []= dirname(__FILE__).'/data/';
return $dirs;
}
/**
* @return Parsedown
*/
protected function initParsedown()
{
$Parsedown = new Parsedown();
return $Parsedown;
}
/**
* @dataProvider data
* @param $test
* @param $dir
*/
function test_($test, $dir)
{
$markdown = file_get_contents($dir . $test . '.md');
$expectedMarkup = file_get_contents($dir . $test . '.html');
$expectedMarkup = str_replace("\r\n", "\n", $expectedMarkup);
$expectedMarkup = str_replace("\r", "\n", $expectedMarkup);
$actualMarkup = $this->Parsedown->text($markdown);
$this->assertEquals($expectedMarkup, $actualMarkup);
}
function data()
{
$data = array();
foreach ($this->dirs as $dir)
{
$Folder = new DirectoryIterator($dir);
foreach ($Folder as $File)
{
/** @var $File DirectoryIterator */
if ( ! $File->isFile())
{
continue;
}
$filename = $File->getFilename();
$extension = pathinfo($filename, PATHINFO_EXTENSION);
if ($extension !== 'md')
{
continue;
}
$basename = $File->getBasename('.md');
if (file_exists($dir . $basename . '.html'))
{
$data []= array($basename, $dir);
}
}
}
return $data;
}
public function test_no_markup()
{
$markdownWithHtml = <<<MARKDOWN_WITH_MARKUP
<div>_content_</div>
sparse:
<div>
<div class="inner">
_content_
</div>
</div>
paragraph
<style type="text/css">
p {
color: red;
}
</style>
comment
<!-- html comment -->
MARKDOWN_WITH_MARKUP;
$expectedHtml = <<<EXPECTED_HTML
<p>&lt;div&gt;<em>content</em>&lt;/div&gt;</p>
<p>sparse:</p>
<p>&lt;div&gt;
&lt;div class=&quot;inner&quot;&gt;
<em>content</em>
&lt;/div&gt;
&lt;/div&gt;</p>
<p>paragraph</p>
<p>&lt;style type=&quot;text/css&quot;&gt;
p {
color: red;
}
&lt;/style&gt;</p>
<p>comment</p>
<p>&lt;!-- html comment --&gt;</p>
EXPECTED_HTML;
$parsedownWithNoMarkup = new Parsedown();
$parsedownWithNoMarkup->setMarkupEscaped(true);
$this->assertEquals($expectedHtml, $parsedownWithNoMarkup->text($markdownWithHtml));
}
public function testLateStaticBinding()
{
include 'test/TestParsedown.php';
$parsedown = Parsedown::instance();
$this->assertInstanceOf('Parsedown', $parsedown);
// After instance is already called on Parsedown
// subsequent calls with the same arguments return the same instance
$sameParsedown = TestParsedown::instance();
$this->assertInstanceOf('Parsedown', $sameParsedown);
$this->assertSame($parsedown, $sameParsedown);
$testParsedown = TestParsedown::instance('test late static binding');
$this->assertInstanceOf('TestParsedown', $testParsedown);
$sameInstanceAgain = TestParsedown::instance('test late static binding');
$this->assertSame($testParsedown, $sameInstanceAgain);
}
}

5
test/TestParsedown.php Normal file
View File

@@ -0,0 +1,5 @@
<?php
class TestParsedown extends Parsedown
{
}

3
test/bootstrap.php Normal file
View File

@@ -0,0 +1,3 @@
<?php
include 'Parsedown.php';

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 style="text-align: left;">header 1</th>
<th style="text-align: center;">header 2</th>
<th style="text-align: right;">header 2</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">cell 1.1</td>
<td style="text-align: center;">cell 1.2</td>
<td style="text-align: right;">cell 1.3</td>
</tr>
<tr>
<td style="text-align: left;">cell 2.1</td>
<td style="text-align: center;">cell 2.2</td>
<td style="text-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,7 +1,9 @@
<h1>h1</h1>
<h2>h2</h2>
<h3>h3</h3>
<h4>h4</h4>
<h5>h5</h5>
<h6>h6</h6>
<h1>closed h1</h1>
<h1>h1</h1>
<h2>h2</h2>
<h3>h3</h3>
<h4>h4</h4>
<h5>h5</h5>
<h6>h6</h6>
<p>####### not a heading</p>
<h1>closed h1</h1>
<p>#</p>

View File

@@ -1,13 +1,17 @@
# h1
## h2
### h3
#### h4
##### h5
###### h6
# closed h1 #
# h1
## h2
### h3
#### h4
##### h5
###### h6
####### not a heading
# closed h1 #
#

View File

@@ -0,0 +1,12 @@
<div>_content_</div>
<p>paragraph</p>
<div>
<div class="inner">
_content_
</div>
</div>
<style type="text/css">
p {color: #789;}
</style>
<div>
<a href="/">home</a></div>

View File

@@ -0,0 +1,16 @@
<div>_content_</div>
paragraph
<div>
<div class="inner">
_content_
</div>
</div>
<style type="text/css">
p {color: #789;}
</style>
<div>
<a href="/">home</a></div>

View File

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

10
test/data/code_block.md Normal file
View File

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

6
test/data/code_span.html Normal file
View File

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

11
test/data/code_span.md Normal file
View File

@@ -0,0 +1,11 @@
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` ``
`sth `` sth`

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,12 @@
<ul>
<li>li
<ul>
<li>li
<ul>
<li>li</li>
<li>li</li>
</ul></li>
<li>li</li>
</ul></li>
<li>li</li>
</ul>

View File

@@ -0,0 +1,6 @@
- li
- li
- li
- li
- li
- li

8
test/data/em_strong.html Normal file
View File

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

15
test/data/em_strong.md Normal file
View File

@@ -0,0 +1,15 @@
___em strong___
___em strong_ strong__
__strong _em strong___
__strong _em strong_ strong__
***em strong***
***em strong* strong**
**strong *em strong***
**strong *em strong* strong**

1
test/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
test/data/email.md Normal file
View File

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

8
test/data/emphasis.html Normal file
View File

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

13
test/data/emphasis.md Normal file
View File

@@ -0,0 +1,13 @@
_underscore_, *asterisk*, _one two_, *three four*, _a_, *b*
**strong** and *em* and **strong** and *em*
_line
line
line_
this_is_not_an_emphasis
an empty emphasis __ ** is not an emphasis
*mixed **double and* single asterisk** spans

View File

@@ -1,4 +1,6 @@
<p>escaped *emphasis*.</p>
<p><code>escaped \*emphasis\* in a code span</code></p>
<pre><code>escaped \*emphasis\* in a code block</code></pre>
<p>\ ` * _ { } [ ] ( ) > # + - . !</p>
<p>\ ` * _ { } [ ] ( ) > # + - . !</p>
<p><em>one_two</em> <strong>one_two</strong></p>
<p><em>one*two</em> <strong>one*two</strong></p>

View File

@@ -4,4 +4,8 @@ escaped \*emphasis\*.
escaped \*emphasis\* in a code block
\\ \` \* \_ \{ \} \[ \] \( \) \> \# \+ \- \. \!
\\ \` \* \_ \{ \} \[ \] \( \) \> \# \+ \- \. \!
_one\_two_ __one\_two__
*one\*two* **one\*two**

View File

@@ -0,0 +1,6 @@
<pre><code>&lt;?php
$message = 'fenced code block';
echo $message;</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

@@ -1,5 +1,5 @@
<hr />
<hr />
<hr />
<hr />
<hr />
<hr />
<hr />
<hr />
<hr />

View File

@@ -1,9 +1,9 @@
---
- - -
- - -
***
---
- - -
- - -
***
___

View File

@@ -0,0 +1,5 @@
<!-- single line -->
<p>paragraph</p>
<!--
multiline -->
<p>paragraph</p>

View File

@@ -0,0 +1,8 @@
<!-- single line -->
paragraph
<!--
multiline -->
paragraph

View File

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

1
test/data/html_entity.md Normal file
View File

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

View File

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

View File

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

View File

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

3
test/data/image_title.md Normal file
View File

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

View File

@@ -0,0 +1,4 @@
<p>an <a href="http://example.com">implicit</a> reference link</p>
<p>an <a href="http://example.com">implicit</a> reference link with an empty link definition</p>
<p>an <a href="http://example.com">implicit</a> reference link followed by <a href="http://cnn.com">another</a></p>
<p>an <a href="http://example.com" title="Example">explicit</a> reference link with a title</p>

View File

@@ -0,0 +1,13 @@
an [implicit] reference link
[implicit]: http://example.com
an [implicit][] reference link with an empty link definition
an [implicit][] reference link followed by [another][]
[another]: http://cnn.com
an [explicit][example] reference link with a title
[example]: http://example.com "Example"

View File

@@ -0,0 +1,6 @@
<p><a href="http://example.com">link</a></p>
<p><a href="/url-(parentheses)">link</a> with parentheses in URL </p>
<p>(<a href="/index.php">link</a>) in parentheses</p>
<p><a href="http://example.com"><code>link</code></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>

11
test/data/inline_link.md Normal file
View File

@@ -0,0 +1,11 @@
[link](http://example.com)
[link](/url-(parentheses)) with parentheses in URL
([link](/index.php)) in parentheses
[`link`](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,6 @@
<p><a href="http://example.com" title="Title">single quotes</a></p>
<p><a href="http://example.com" title="Title">double quotes</a></p>
<p><a href="http://example.com" title="">single quotes blank</a></p>
<p><a href="http://example.com" title="">double quotes blank</a></p>
<p><a href="http://example.com" title="2 Words">space</a></p>
<p><a href="http://example.com/url-(parentheses)" title="Title">parentheses</a></p>

View File

@@ -0,0 +1,11 @@
[single quotes](http://example.com 'Title')
[double quotes](http://example.com "Title")
[single quotes blank](http://example.com '')
[double quotes blank](http://example.com "")
[space](http://example.com "2 Words")
[parentheses](http://example.com/url-(parentheses) "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

@@ -1,4 +1,6 @@
<blockquote>
<p>quote
the rest of it</p>
<p>another paragraph
the rest of it</p>
</blockquote>

View File

@@ -0,0 +1,5 @@
> quote
the rest of it
> another paragraph
the rest of it

View File

@@ -1,2 +1,2 @@
<p>line<br />
<p>line<br />
line</p>

View File

@@ -1,2 +1,2 @@
line
line
line

View File

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

View File

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

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,12 @@
<hr>
<p>paragraph</p>
<hr/>
<p>paragraph</p>
<hr />
<p>paragraph</p>
<hr class="foo" id="bar" />
<p>paragraph</p>
<hr class="foo" id="bar"/>
<p>paragraph</p>
<hr class="foo" id="bar" >
<p>paragraph</p>

View File

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

View File

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

View File

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

View File

@@ -1,5 +1,5 @@
<h1>h1</h1>
<h2>h2</h2>
<h2>single character</h2>
<p>not a header</p>
<h1>h1</h1>
<h2>h2</h2>
<h2>single character</h2>
<p>not a header</p>
<hr />

View File

@@ -1,12 +1,12 @@
h1
==
h2
--
single character
-
not a header
h1
==
h2
--
single character
-
not a header
------------

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 style="text-align: left;">header 1</th>
<th>header 2</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">cell 1.1</td>
<td>cell 1.2</td>
</tr>
<tr>
<td style="text-align: left;">cell 2.1</td>
<td>cell 2.2</td>
</tr>
</tbody>
</table>

11
test/data/simple_table.md Normal file
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

@@ -0,0 +1,5 @@
<p>an <b>important</b> <a href=''>link</a></p>
<p>broken<br/>
line</p>
<p><b>inline tag</b> at the beginning</p>
<p><span><a href="http://example.com">http://example.com</a></span></p>

View File

@@ -0,0 +1,8 @@
an <b>important</b> <a href=''>link</a>
broken<br/>
line
<b>inline tag</b> at the beginning
<span>http://example.com</span>

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

@@ -0,0 +1,8 @@
<div>
line 1
line 2
line 3
line 4
</div>

8
test/data/sparse_html.md Normal file
View File

@@ -0,0 +1,8 @@
<div>
line 1
line 2
line 3
line 4
</div>

View File

@@ -1,8 +1,6 @@
<p>AT&amp;T has an ampersand in their name</p>
<pre><code>Let's play some cards ♠ ♣ ♥ ♦</code></pre>
<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="/script?a=1&amp;b=2">inline link</a></p>
<p>AT&amp;T has an ampersand in their name</p>
<p>this &amp; that</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>

View File

@@ -1,17 +1,13 @@
AT&T has an ampersand in their name
Let's play some cards ♠ ♣ ♥ ♦
AT&T is another way to write it
this & that
4 < 5 and 6 > 5
<http://example.com/autolink?a=1&b=2>
[inline link](/script?a=1&b=2)
[reference link][1]
AT&T has an ampersand in their name
this & that
4 < 5 and 6 > 5
<http://example.com/autolink?a=1&b=2>
[inline link](/script?a=1&b=2)
[reference link][1]
[1]: http://example.com/?a=1&b=2

View File

@@ -0,0 +1,3 @@
<p><del>strikethrough</del></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

@@ -0,0 +1,5 @@
~~strikethrough~~
here's ~~one~~ followed by ~~another one~~
~~ this ~~ is not one neither is ~this~

6
test/data/strong_em.html Normal file
View File

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

Some files were not shown because too many files have changed in this diff Show More