- <?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;
- }
- }
# |
Change |
User |
Description |
Committed |
|
#1
|
18334 |
Liz Lam |
initial add of jambox |
9 years ago
|
|