Browse Source

Merge remote-tracking branch 'upstream/master' into danpros

pull/394/head
Stefan Björk 5 years ago
parent
commit
013c18e975
164 changed files with 9829 additions and 1603 deletions
  1. +26
    -24
      composer.lock
  2. +1
    -2
      system/admin/admin.php
  3. +1
    -1
      system/admin/views/popular-posts.html.php
  4. +1
    -1
      system/admin/views/posts-list.html.php
  5. +1
    -1
      system/admin/views/user-draft.html.php
  6. +14
    -1
      system/includes/functions.php
  7. +1
    -1
      system/vendor/autoload.php
  8. +46
    -14
      system/vendor/composer/ClassLoader.php
  9. +1
    -1
      system/vendor/composer/LICENSE
  10. +0
    -1
      system/vendor/composer/autoload_namespaces.php
  11. +1
    -0
      system/vendor/composer/autoload_psr4.php
  12. +4
    -1
      system/vendor/composer/autoload_real.php
  13. +8
    -7
      system/vendor/composer/autoload_static.php
  14. +76
    -74
      system/vendor/composer/installed.json
  15. +1
    -0
      system/vendor/jbroadway/urlify/.gitignore
  16. +4
    -3
      system/vendor/jbroadway/urlify/.travis.yml
  17. +8
    -5
      system/vendor/jbroadway/urlify/INSTALL
  18. +18
    -22
      system/vendor/jbroadway/urlify/README.md
  19. +51
    -24
      system/vendor/jbroadway/urlify/URLify.php
  20. +4
    -1
      system/vendor/jbroadway/urlify/composer.json
  21. +6
    -2
      system/vendor/jbroadway/urlify/tests/URLifyTest.php
  22. +11
    -0
      system/vendor/michelf/php-markdown/.editorconfig
  23. +3
    -0
      system/vendor/michelf/php-markdown/.gitignore
  24. +36
    -0
      system/vendor/michelf/php-markdown/.scrutinizer.yml
  25. +29
    -0
      system/vendor/michelf/php-markdown/.travis.yml
  26. +3
    -3
      system/vendor/michelf/php-markdown/License.md
  27. +5
    -5
      system/vendor/michelf/php-markdown/Michelf/Markdown.inc.php
  28. +858
    -565
      system/vendor/michelf/php-markdown/Michelf/Markdown.php
  29. +5
    -5
      system/vendor/michelf/php-markdown/Michelf/MarkdownExtra.inc.php
  30. +972
    -704
      system/vendor/michelf/php-markdown/Michelf/MarkdownExtra.php
  31. +5
    -5
      system/vendor/michelf/php-markdown/Michelf/MarkdownInterface.inc.php
  32. +32
    -28
      system/vendor/michelf/php-markdown/Michelf/MarkdownInterface.php
  33. +157
    -78
      system/vendor/michelf/php-markdown/Readme.md
  34. +16
    -14
      system/vendor/michelf/php-markdown/Readme.php
  35. +3
    -5
      system/vendor/michelf/php-markdown/composer.json
  36. +24
    -0
      system/vendor/michelf/php-markdown/phpunit.xml.dist
  37. +6
    -0
      system/vendor/michelf/php-markdown/test/bootstrap.php
  38. +267
    -0
      system/vendor/michelf/php-markdown/test/helpers/MarkdownTestHelper.php
  39. +173
    -0
      system/vendor/michelf/php-markdown/test/integration/PhpMarkdownTest.php
  40. +21
    -0
      system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Amps and angle encoding.text
  41. +17
    -0
      system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Amps and angle encoding.xhtml
  42. +13
    -0
      system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Auto links.text
  43. +18
    -0
      system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Auto links.xhtml
  44. +120
    -0
      system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Backslash escapes.text
  45. +118
    -0
      system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Backslash escapes.xhtml
  46. +11
    -0
      system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Blockquotes with code blocks.text
  47. +15
    -0
      system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Blockquotes with code blocks.xhtml
  48. +14
    -0
      system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Code Blocks.text
  49. +18
    -0
      system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Code Blocks.xhtml
  50. +5
    -0
      system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Code Spans.text
  51. +5
    -0
      system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Code Spans.xhtml
  52. +8
    -0
      system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Hard-wrapped paragraphs with list-like lines.text
  53. +8
    -0
      system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Hard-wrapped paragraphs with list-like lines.xhtml
  54. +67
    -0
      system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Horizontal rules.text
  55. +71
    -0
      system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Horizontal rules.xhtml
  56. +26
    -0
      system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Images.text
  57. +21
    -0
      system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Images.xhtml
  58. +30
    -0
      system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Inline HTML (Advanced).text
  59. +30
    -0
      system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Inline HTML (Advanced).xhtml
  60. +72
    -0
      system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Inline HTML (Simple).html
  61. +69
    -0
      system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Inline HTML (Simple).text
  62. +13
    -0
      system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Inline HTML comments.html
  63. +13
    -0
      system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Inline HTML comments.text
  64. +24
    -0
      system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Links, inline style.text
  65. +23
    -0
      system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Links, inline style.xhtml
  66. +71
    -0
      system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Links, reference style.text
  67. +52
    -0
      system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Links, reference style.xhtml
  68. +20
    -0
      system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Links, shortcut references.text
  69. +9
    -0
      system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Links, shortcut references.xhtml
  70. +7
    -0
      system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Literal quotes in titles.text
  71. +3
    -0
      system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Literal quotes in titles.xhtml
  72. +306
    -0
      system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Markdown Documentation - Basics.text
  73. +314
    -0
      system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Markdown Documentation - Basics.xhtml
  74. +888
    -0
      system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Markdown Documentation - Syntax.text
  75. +942
    -0
      system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Markdown Documentation - Syntax.xhtml
  76. +5
    -0
      system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Nested blockquotes.text
  77. +9
    -0
      system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Nested blockquotes.xhtml
  78. +131
    -0
      system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Ordered and unordered lists.text
  79. +148
    -0
      system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Ordered and unordered lists.xhtml
  80. +7
    -0
      system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Strong and em together.text
  81. +7
    -0
      system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Strong and em together.xhtml
  82. +21
    -0
      system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Tabs.text
  83. +25
    -0
      system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Tabs.xhtml
  84. +5
    -0
      system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Tidyness.text
  85. +8
    -0
      system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Tidyness.xhtml
  86. +31
    -0
      system/vendor/michelf/php-markdown/test/resources/php-markdown-extra.mdtest/Abbr.text
  87. +15
    -0
      system/vendor/michelf/php-markdown/test/resources/php-markdown-extra.mdtest/Abbr.xhtml
  88. +69
    -0
      system/vendor/michelf/php-markdown/test/resources/php-markdown-extra.mdtest/Backtick Fenced Code Blocks Special Cases.text
  89. +61
    -0
      system/vendor/michelf/php-markdown/test/resources/php-markdown-extra.mdtest/Backtick Fenced Code Blocks Special Cases.xhtml
  90. +123
    -0
      system/vendor/michelf/php-markdown/test/resources/php-markdown-extra.mdtest/Backtick Fenced Code Blocks.text
  91. +109
    -0
      system/vendor/michelf/php-markdown/test/resources/php-markdown-extra.mdtest/Backtick Fenced Code Blocks.xhtml
  92. +115
    -0
      system/vendor/michelf/php-markdown/test/resources/php-markdown-extra.mdtest/Definition Lists.text
  93. +155
    -0
      system/vendor/michelf/php-markdown/test/resources/php-markdown-extra.mdtest/Definition Lists.xhtml
  94. +100
    -0
      system/vendor/michelf/php-markdown/test/resources/php-markdown-extra.mdtest/Emphasis.text
  95. +106
    -0
      system/vendor/michelf/php-markdown/test/resources/php-markdown-extra.mdtest/Emphasis.xhtml
  96. +70
    -0
      system/vendor/michelf/php-markdown/test/resources/php-markdown-extra.mdtest/Footnotes.text
  97. +103
    -0
      system/vendor/michelf/php-markdown/test/resources/php-markdown-extra.mdtest/Footnotes.xhtml
  98. +41
    -0
      system/vendor/michelf/php-markdown/test/resources/php-markdown-extra.mdtest/Headers with attributes.text
  99. +37
    -0
      system/vendor/michelf/php-markdown/test/resources/php-markdown-extra.mdtest/Headers with attributes.xhtml
  100. +110
    -0
      system/vendor/michelf/php-markdown/test/resources/php-markdown-extra.mdtest/Inline HTML with Markdown content.text

+ 26
- 24
composer.lock View File

@ -1,10 +1,9 @@
{
"_readme": [
"This file locks the dependencies of your project to a known state",
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"hash": "4b4af0298a863441fda250d818d3fc4b",
"content-hash": "250bd035a1d26dd3e3e01e504833c798",
"packages": [
{
@ -47,25 +46,28 @@
"hashing",
"password"
],
"time": "2014-11-20 16:49:30"
"time": "2014-11-20T16:49:30+00:00"
},
{
"name": "jbroadway/urlify",
"version": "1.0.8-stable",
"version": "1.1.3-stable",
"source": {
"type": "git",
"url": "https://github.com/jbroadway/urlify.git",
"reference": "984c991881501098eafdc41053b243237191cff8"
"reference": "37fe4e7680a1c8cd68ac43a27dac7ef4be476300"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/jbroadway/urlify/zipball/984c991881501098eafdc41053b243237191cff8",
"reference": "984c991881501098eafdc41053b243237191cff8",
"url": "https://api.github.com/repos/jbroadway/urlify/zipball/37fe4e7680a1c8cd68ac43a27dac7ef4be476300",
"reference": "37fe4e7680a1c8cd68ac43a27dac7ef4be476300",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"require-dev": {
"phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5"
},
"type": "library",
"extra": {
"branch-alias": {
@ -79,7 +81,7 @@
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD"
"BSD-3-Clause-Clear"
],
"authors": [
{
@ -101,7 +103,7 @@
"url",
"urlify"
],
"time": "2016-07-27 15:26:43"
"time": "2019-06-13T18:30:56+00:00"
},
{
"name": "kanti/hub-updater",
@ -145,34 +147,33 @@
}
],
"description": "Simple Github Updater for Web Projects",
"time": "2015-11-28 18:52:10"
"abandoned": true,
"time": "2015-11-28T18:52:10+00:00"
},
{
"name": "michelf/php-markdown",
"version": "1.6.0",
"version": "1.9.0",
"source": {
"type": "git",
"url": "https://github.com/michelf/php-markdown.git",
"reference": "156e56ee036505ec637d761ee62dc425d807183c"
"reference": "c83178d49e372ca967d1a8c77ae4e051b3a3c75c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/michelf/php-markdown/zipball/156e56ee036505ec637d761ee62dc425d807183c",
"reference": "156e56ee036505ec637d761ee62dc425d807183c",
"url": "https://api.github.com/repos/michelf/php-markdown/zipball/c83178d49e372ca967d1a8c77ae4e051b3a3c75c",
"reference": "c83178d49e372ca967d1a8c77ae4e051b3a3c75c",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-lib": "1.4.x-dev"
}
"require-dev": {
"phpunit/phpunit": ">=4.3 <5.8"
},
"type": "library",
"autoload": {
"psr-0": {
"Michelf": ""
"psr-4": {
"Michelf\\": "Michelf/"
}
},
"notification-url": "https://packagist.org/downloads/",
@ -196,7 +197,7 @@
"keywords": [
"markdown"
],
"time": "2015-12-24 01:37:31"
"time": "2019-12-02T02:32:27+00:00"
},
{
"name": "suin/php-rss-writer",
@ -240,7 +241,7 @@
"rss",
"writer"
],
"time": "2016-03-01 12:09:17"
"time": "2016-03-01T12:09:17+00:00"
}
],
"packages-dev": [],
@ -253,5 +254,6 @@
"platform-dev": [],
"platform-overrides": {
"php": "5.3"
}
},
"plugin-api-version": "1.1.0"
}

+ 1
- 2
system/admin/admin.php View File

@ -673,7 +673,6 @@ function get_feed($feed_url, $credit)
// Get recent posts by user
function get_user_posts()
{
global $date_format;
if (isset($_SESSION[config("site.url")]['user'])) {
$posts = get_profile_posts($_SESSION[config("site.url")]['user'], 1, 5);
@ -696,7 +695,7 @@ function get_user_posts()
$i++;
echo '<tr class="' . $class . '">';
echo '<td><a target="_blank" href="' . $p->url . '">' . $p->title . '</a></td>';
echo '<td>' . strftime($date_format, $p->date) . '</td>';
echo '<td>' . date('d F Y', $p->date) . '</td>';
if (config("views.counter") == "true")
echo '<td>' . $p->views . '</td>';
echo '<td>' . $p->tag . '</td>';


+ 1
- 1
system/admin/views/popular-posts.html.php View File

@ -24,7 +24,7 @@
?>
<tr class="<?php echo $class ?>">
<td><a target="_blank" href="<?php echo $p->url ?>"><?php echo $p->title ?></a></td>
<td><?php echo strftime($date_format, $p->date) ?></td>
<td><?php echo date('d F Y', $p->date) ?></td>
<?php if (config("views.counter") == "true"): ?>
<td><?php echo $p->views ?></td><?php endif; ?>
<td><a target="_blank" href="<?php echo $p->authorUrl ?>"><?php echo $p->author ?></a></td>


+ 1
- 1
system/admin/views/posts-list.html.php View File

@ -24,7 +24,7 @@
?>
<tr class="<?php echo $class ?>">
<td><a target="_blank" href="<?php echo $p->url ?>"><?php echo $p->title ?></a></td>
<td><?php echo strftime($date_format, $p->date) ?></td>
<td><?php echo date('d F Y', $p->date) ?></td>
<?php if (config("views.counter") == "true"): ?>
<td><?php echo $p->views ?></td><?php endif; ?>
<td><a target="_blank" href="<?php echo $p->authorUrl ?>"><?php echo $p->author ?></a></td>


+ 1
- 1
system/admin/views/user-draft.html.php View File

@ -22,7 +22,7 @@
?>
<tr class="<?php echo $class ?>">
<td><?php echo $p->title ?></td>
<td><?php echo strftime($date_format, $p->date) ?></td>
<td><?php echo date('d F Y', $p->date) ?></td>
<td><?php echo strip_tags($p->tag) ?></td>
<td><a href="<?php echo $p->url ?>/edit?destination=admin/draft"><?php echo i18n('Edit');?></a> <a href="<?php echo $p->url ?>/delete?destination=admin/draft"><?php echo i18n('Delete');?></a></td>
</tr>


+ 14
- 1
system/includes/functions.php View File

@ -3215,7 +3215,7 @@ function get_language()
setlocale(LC_ALL, 'en_US'); // Change time format to English
} else {
if (file_exists($langFile)) {
i18n('source', 'lang/' . $langID . '.ini');
i18n('source', $langFile);
setlocale(LC_ALL, $local);
} else {
i18n('source', 'lang/en.ini'); // Load the English language file
@ -3224,3 +3224,16 @@ function get_language()
}
}
function format_date($date)
{
$date_format = config('date.format');
if (!isset($date_format) || empty($date_format)) {
return date('d F Y', $date);
} else {
return date($date_format, $date);
}
}

+ 1
- 1
system/vendor/autoload.php View File

@ -2,6 +2,6 @@
// autoload.php @generated by Composer
require_once __DIR__ . '/composer' . '/autoload_real.php';
require_once __DIR__ . '/composer/autoload_real.php';
return ComposerAutoloaderInitd88c6c25320034df85dd42f1462fbda7::getLoader();

+ 46
- 14
system/vendor/composer/ClassLoader.php View File

@ -53,8 +53,9 @@ class ClassLoader
private $useIncludePath = false;
private $classMap = array();
private $classMapAuthoritative = false;
private $missingClasses = array();
private $apcuPrefix;
public function getPrefixes()
{
@ -271,6 +272,26 @@ class ClassLoader
return $this->classMapAuthoritative;
}
/**
* APCu prefix to use to cache found/not-found classes, if the extension is enabled.
*
* @param string|null $apcuPrefix
*/
public function setApcuPrefix($apcuPrefix)
{
$this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null;
}
/**
* The APCu prefix in use, or null if APCu caching is not enabled.
*
* @return string|null
*/
public function getApcuPrefix()
{
return $this->apcuPrefix;
}
/**
* Registers this instance as an autoloader.
*
@ -313,29 +334,34 @@ class ClassLoader
*/
public function findFile($class)
{
// work around for PHP 5.3.0 - 5.3.2 https://bugs.php.net/50731
if ('\\' == $class[0]) {
$class = substr($class, 1);
}
// class map lookup
if (isset($this->classMap[$class])) {
return $this->classMap[$class];
}
if ($this->classMapAuthoritative) {
if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) {
return false;
}
if (null !== $this->apcuPrefix) {
$file = apcu_fetch($this->apcuPrefix.$class, $hit);
if ($hit) {
return $file;
}
}
$file = $this->findFileWithExtension($class, '.php');
// Search for Hack files if we are running on HHVM
if ($file === null && defined('HHVM_VERSION')) {
if (false === $file && defined('HHVM_VERSION')) {
$file = $this->findFileWithExtension($class, '.hh');
}
if ($file === null) {
if (null !== $this->apcuPrefix) {
apcu_add($this->apcuPrefix.$class, $file);
}
if (false === $file) {
// Remember that this class does not exist.
return $this->classMap[$class] = false;
$this->missingClasses[$class] = true;
}
return $file;
@ -348,10 +374,14 @@ class ClassLoader
$first = $class[0];
if (isset($this->prefixLengthsPsr4[$first])) {
foreach ($this->prefixLengthsPsr4[$first] as $prefix => $length) {
if (0 === strpos($class, $prefix)) {
foreach ($this->prefixDirsPsr4[$prefix] as $dir) {
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $length))) {
$subPath = $class;
while (false !== $lastPos = strrpos($subPath, '\\')) {
$subPath = substr($subPath, 0, $lastPos);
$search = $subPath . '\\';
if (isset($this->prefixDirsPsr4[$search])) {
$pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
foreach ($this->prefixDirsPsr4[$search] as $dir) {
if (file_exists($file = $dir . $pathEnd)) {
return $file;
}
}
@ -399,6 +429,8 @@ class ClassLoader
if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
return $file;
}
return false;
}
}


+ 1
- 1
system/vendor/composer/LICENSE View File

@ -1,5 +1,5 @@
Copyright (c) 2016 Nils Adermann, Jordi Boggiano
Copyright (c) Nils Adermann, Jordi Boggiano
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal


+ 0
- 1
system/vendor/composer/autoload_namespaces.php View File

@ -8,5 +8,4 @@ $baseDir = dirname(dirname($vendorDir));
return array(
'URLify' => array($vendorDir . '/jbroadway/urlify'),
'Suin\\RSSWriter' => array($vendorDir . '/suin/php-rss-writer/src'),
'Michelf' => array($vendorDir . '/michelf/php-markdown'),
);

+ 1
- 0
system/vendor/composer/autoload_psr4.php View File

@ -6,5 +6,6 @@ $vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname(dirname($vendorDir));
return array(
'Michelf\\' => array($vendorDir . '/michelf/php-markdown/Michelf'),
'Kanti\\' => array($vendorDir . '/kanti/hub-updater/src'),
);

+ 4
- 1
system/vendor/composer/autoload_real.php View File

@ -13,6 +13,9 @@ class ComposerAutoloaderInitd88c6c25320034df85dd42f1462fbda7
}
}
/**
* @return \Composer\Autoload\ClassLoader
*/
public static function getLoader()
{
if (null !== self::$loader) {
@ -23,7 +26,7 @@ class ComposerAutoloaderInitd88c6c25320034df85dd42f1462fbda7
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
spl_autoload_unregister(array('ComposerAutoloaderInitd88c6c25320034df85dd42f1462fbda7', 'loadClassLoader'));
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION');
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
if ($useStaticLoader) {
require_once __DIR__ . '/autoload_static.php';


+ 8
- 7
system/vendor/composer/autoload_static.php View File

@ -16,6 +16,10 @@ class ComposerStaticInitd88c6c25320034df85dd42f1462fbda7
);
public static $prefixLengthsPsr4 = array (
'M' =>
array (
'Michelf\\' => 8,
),
'K' =>
array (
'Kanti\\' => 6,
@ -23,6 +27,10 @@ class ComposerStaticInitd88c6c25320034df85dd42f1462fbda7
);
public static $prefixDirsPsr4 = array (
'Michelf\\' =>
array (
0 => __DIR__ . '/..' . '/michelf/php-markdown/Michelf',
),
'Kanti\\' =>
array (
0 => __DIR__ . '/..' . '/kanti/hub-updater/src',
@ -44,13 +52,6 @@ class ComposerStaticInitd88c6c25320034df85dd42f1462fbda7
0 => __DIR__ . '/..' . '/suin/php-rss-writer/src',
),
),
'M' =>
array (
'Michelf' =>
array (
0 => __DIR__ . '/..' . '/michelf/php-markdown',
),
),
);
public static $classMap = array (


+ 76
- 74
system/vendor/composer/installed.json View File

@ -17,7 +17,7 @@
"require-dev": {
"phpunit/phpunit": "4.*"
},
"time": "2014-11-20 16:49:30",
"time": "2014-11-20T16:49:30+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@ -44,56 +44,62 @@
]
},
{
"name": "michelf/php-markdown",
"version": "1.6.0",
"version_normalized": "1.6.0.0",
"name": "jbroadway/urlify",
"version": "1.1.3-stable",
"version_normalized": "1.1.3.0",
"source": {
"type": "git",
"url": "https://github.com/michelf/php-markdown.git",
"reference": "156e56ee036505ec637d761ee62dc425d807183c"
"url": "https://github.com/jbroadway/urlify.git",
"reference": "37fe4e7680a1c8cd68ac43a27dac7ef4be476300"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/michelf/php-markdown/zipball/156e56ee036505ec637d761ee62dc425d807183c",
"reference": "156e56ee036505ec637d761ee62dc425d807183c",
"url": "https://api.github.com/repos/jbroadway/urlify/zipball/37fe4e7680a1c8cd68ac43a27dac7ef4be476300",
"reference": "37fe4e7680a1c8cd68ac43a27dac7ef4be476300",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"time": "2015-12-24 01:37:31",
"require-dev": {
"phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5"
},
"time": "2019-06-13T18:30:56+00:00",
"type": "library",
"extra": {
"branch-alias": {
"dev-lib": "1.4.x-dev"
"dev-master": "1.0-dev"
}
},
"installation-source": "dist",
"autoload": {
"psr-0": {
"Michelf": ""
"URLify": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
"BSD-3-Clause-Clear"
],
"authors": [
{
"name": "Michel Fortin",
"email": "michel.fortin@michelf.ca",
"homepage": "https://michelf.ca/",
"role": "Developer"
},
{
"name": "John Gruber",
"homepage": "https://daringfireball.net/"
"name": "Johnny Broadway",
"email": "johnny@johnnybroadway.com",
"homepage": "http://www.johnnybroadway.com/"
}
],
"description": "PHP Markdown",
"homepage": "https://michelf.ca/projects/php-markdown/",
"description": "PHP port of URLify.js from the Django project. Transliterates non-ascii characters for use in URLs.",
"homepage": "https://github.com/jbroadway/urlify",
"keywords": [
"markdown"
"encode",
"iconv",
"link",
"slug",
"translit",
"transliterate",
"transliteration",
"url",
"urlify"
]
},
{
@ -120,7 +126,7 @@
"sebastian/phpcpd": "*",
"squizlabs/php_codesniffer": "*"
},
"time": "2015-11-28 18:52:10",
"time": "2015-11-28T18:52:10+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
@ -140,108 +146,104 @@
"role": "Developer"
}
],
"description": "Simple Github Updater for Web Projects"
"description": "Simple Github Updater for Web Projects",
"abandoned": true
},
{
"name": "suin/php-rss-writer",
"version": "1.3.2",
"version_normalized": "1.3.2.0",
"name": "michelf/php-markdown",
"version": "1.9.0",
"version_normalized": "1.9.0.0",
"source": {
"type": "git",
"url": "https://github.com/suin/php-rss-writer.git",
"reference": "51840d2fad4087a4bdd93fb6937aa4b324b5c94f"
"url": "https://github.com/michelf/php-markdown.git",
"reference": "c83178d49e372ca967d1a8c77ae4e051b3a3c75c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/suin/php-rss-writer/zipball/51840d2fad4087a4bdd93fb6937aa4b324b5c94f",
"reference": "51840d2fad4087a4bdd93fb6937aa4b324b5c94f",
"url": "https://api.github.com/repos/michelf/php-markdown/zipball/c83178d49e372ca967d1a8c77ae4e051b3a3c75c",
"reference": "c83178d49e372ca967d1a8c77ae4e051b3a3c75c",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"time": "2016-03-01 12:09:17",
"require-dev": {
"phpunit/phpunit": ">=4.3 <5.8"
},
"time": "2019-12-02T02:32:27+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
"psr-0": {
"Suin\\RSSWriter": "src"
"psr-4": {
"Michelf\\": "Michelf/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
"BSD-3-Clause"
],
"authors": [
{
"name": "Hidehito Nozawa aka Suin",
"email": "suinyeze@gmail.com"
"name": "Michel Fortin",
"email": "michel.fortin@michelf.ca",
"homepage": "https://michelf.ca/",
"role": "Developer"
},
{
"name": "John Gruber",
"homepage": "https://daringfireball.net/"
}
],
"description": "Yet another simple RSS writer library for PHP 5.3 or later.",
"homepage": "https://github.com/suin/php-rss-writer",
"description": "PHP Markdown",
"homepage": "https://michelf.ca/projects/php-markdown/",
"keywords": [
"feed",
"generator",
"php",
"rss",
"writer"
"markdown"
]
},
{
"name": "jbroadway/urlify",
"version": "1.0.8-stable",
"version_normalized": "1.0.8.0",
"name": "suin/php-rss-writer",
"version": "1.3.2",
"version_normalized": "1.3.2.0",
"source": {
"type": "git",
"url": "https://github.com/jbroadway/urlify.git",
"reference": "984c991881501098eafdc41053b243237191cff8"
"url": "https://github.com/suin/php-rss-writer.git",
"reference": "51840d2fad4087a4bdd93fb6937aa4b324b5c94f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/jbroadway/urlify/zipball/984c991881501098eafdc41053b243237191cff8",
"reference": "984c991881501098eafdc41053b243237191cff8",
"url": "https://api.github.com/repos/suin/php-rss-writer/zipball/51840d2fad4087a4bdd93fb6937aa4b324b5c94f",
"reference": "51840d2fad4087a4bdd93fb6937aa4b324b5c94f",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"time": "2016-07-27 15:26:43",
"time": "2016-03-01T12:09:17+00:00",
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0-dev"
}
},
"installation-source": "dist",
"autoload": {
"psr-0": {
"URLify": ""
"Suin\\RSSWriter": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD"
"MIT"
],
"authors": [
{
"name": "Johnny Broadway",
"email": "johnny@johnnybroadway.com",
"homepage": "http://www.johnnybroadway.com/"
"name": "Hidehito Nozawa aka Suin",
"email": "suinyeze@gmail.com"
}
],
"description": "PHP port of URLify.js from the Django project. Transliterates non-ascii characters for use in URLs.",
"homepage": "https://github.com/jbroadway/urlify",
"description": "Yet another simple RSS writer library for PHP 5.3 or later.",
"homepage": "https://github.com/suin/php-rss-writer",
"keywords": [
"encode",
"iconv",
"link",
"slug",
"translit",
"transliterate",
"transliteration",
"url",
"urlify"
"feed",
"generator",
"php",
"rss",
"writer"
]
}
]

+ 1
- 0
system/vendor/jbroadway/urlify/.gitignore View File

@ -1,3 +1,4 @@
vendor
composer.phar
composer.lock
.idea

+ 4
- 3
system/vendor/jbroadway/urlify/.travis.yml View File

@ -1,15 +1,16 @@
language: php
php:
- 5.3
- 5.4
- 5.5
- 5.6
- 7.0
- hhvm
- 7.1
- 7.2
- 7.3
before_script:
- composer install --no-interaction --prefer-source
script:
- phpunit --coverage-text --verbose
- vendor/bin/phpunit --coverage-text --verbose

+ 8
- 5
system/vendor/jbroadway/urlify/INSTALL View File

@ -1,10 +1,13 @@
To install URLify, you can add it as a dependency ar by downloading the composer.phar executable.
To install URLify, you can add it as a dependency by downloading Composer, the PHP package manager.
$ curl -s http://getcomposer.org/installer | php
`$ curl -s http://getcomposer.org/installer | php`
and run install
Then run this command to install Composer:
$ php composer.phar install
`$ php composer.phar install`
For more details, see http://getcomposer.org.
For more details, see https://getcomposer.org/
Then run this command to install the URLify library:
`$ composer require jbroadway/urlify`

+ 18
- 22
system/vendor/jbroadway/urlify/README.md View File

@ -1,11 +1,19 @@
# URLify for PHP
# URLify for PHP [![Build Status](https://travis-ci.org/jbroadway/urlify.png)](https://travis-ci.org/jbroadway/urlify)
A PHP port of [URLify.js](https://github.com/django/django/blob/master/django/contrib/admin/static/admin/js/urlify.js)
from the Django project. Handles symbols from Latin languages as well as Arabic, Azerbaijani, Czech, German, Greek,
Latvian, Lithuanian, Polish, Romanian, Bulgarian, Russian, Serbian, Turkish, Ukrainian and Vietnamese. Symbols it cannot
from the Django project. Handles symbols from Latin languages as well as Arabic, Azerbaijani, Czech, German, Greek, Kazakh,
Latvian, Lithuanian, Persian, Polish, Romanian, Bulgarian, Russian, Serbian, Turkish, Ukrainian, Vietnamese and Slovak. Symbols it cannot
transliterate it will simply omit.
## Usage:
## Installation
Install the latest version with:
```bash
$ composer require jbroadway/urlify
```
## Usage
To generate slugs for URLs:
@ -17,8 +25,6 @@ echo URLify::filter (' J\'étudie le français ');
echo URLify::filter ('Lo siento, no hablo español.');
// "lo-siento-no-hablo-espanol"
?>
```
To generate slugs for file names:
@ -28,11 +34,8 @@ To generate slugs for file names:
echo URLify::filter ('фото.jpg', 60, "", true);
// "foto.jpg"
?>
```
To simply transliterate characters:
```php
@ -48,8 +51,6 @@ echo URLify::downcode ('Lo siento, no hablo español.');
echo URLify::transliterate ('Lo siento, no hablo español.');
// "Lo siento, no hablo espanol."
?>
```
To extend the character list:
@ -57,15 +58,13 @@ To extend the character list:
```php
<?php
URLify::add_chars (array (
URLify::add_chars ([
'¿' => '?', '®' => '(r)', '¼' => '1/4',
'½' => '1/2', '¾' => '3/4', '¶' => 'P'
));
]);
echo URLify::downcode ('¿ ® ¼ ¼ ¾ ¶');
// "? (r) 1/2 1/2 3/4 P"
?>
```
To extend the list of words to remove:
@ -73,9 +72,7 @@ To extend the list of words to remove:
```php
<?php
URLify::remove_words (array ('remove', 'these', 'too'));
?>
URLify::remove_words (['remove', 'these', 'too']);
```
To prioritize a certain language map:
@ -83,12 +80,11 @@ To prioritize a certain language map:
```php
<?php
echo URLify::filter (' Ägypten und Österreich besitzen wie üblich ein Übermaß an ähnlich öligen Attachés ',60,"de");
echo URLify::filter ('Ägypten und Österreich besitzen wie üblich ein Übermaß an ähnlich öligen Attachés', 60, 'de');
// "aegypten-und-oesterreich-besitzen-wie-ueblich-ein-uebermass-aehnlich-oeligen-attaches"
echo URLify::filter ('Cağaloğlu, çalıştığı, müjde, lazım, mahkûm',60,"tr");
echo URLify::filter ('Cağaloğlu, çalıştığı, müjde, lazım, mahkûm', 60, 'tr');
// "cagaloglu-calistigi-mujde-lazim-mahkum"
?>
```
Please note that the "ü" is transliterated to "ue" in the first case, whereas it results in a simple "u" in the latter.

+ 51
- 24
system/vendor/jbroadway/urlify/URLify.php View File

@ -5,7 +5,7 @@
* (https://github.com/django/django/blob/master/django/contrib/admin/static/admin/js/urlify.js).
* Handles symbols from Latin languages, Greek, Turkish, Bulgarian, Russian,
* Ukrainian, Czech, Polish, Romanian, Latvian, Lithuanian, Vietnamese, Arabic,
* Serbian, and Azerbaijani. Symbols it cannot transliterate
* Serbian, Azerbaijani, Kazakh and Slovak. Symbols it cannot transliterate
* it will simply omit.
*
* Usage:
@ -16,7 +16,8 @@
* echo URLify::filter ('Lo siento, no hablo español.');
* // "lo-siento-no-hablo-espanol"
*/
class URLify {
class URLify
{
public static $maps = array (
'de' => array ( /* German */
'Ä' => 'Ae', 'Ö' => 'Oe', 'Ü' => 'Ue', 'ä' => 'ae', 'ö' => 'oe', 'ü' => 'ue', 'ß' => 'ss',
@ -53,25 +54,25 @@ class URLify {
'ö' => 'o', 'Ö' => 'O', 'ğ' => 'g', 'Ğ' => 'G'
),
'bg' => array( /* Bulgarian */
"Щ" => 'Sht', "Ш" => 'Sh', "Ч" => 'Ch', "Ц" => 'C', "Ю" => 'Yu', "Я" => 'Ya',
"Ж" => 'J', "А" => 'A', "Б" => 'B', "В" => 'V', "Г" => 'G', "Д" => 'D',
"Е" => 'E', "З" => 'Z', "И" => 'I', "Й" => 'Y', "К" => 'K', "Л" => 'L',
"М" => 'M', "Н" => 'N', "О" => 'O', "П" => 'P', "Р" => 'R', "С" => 'S',
"Т" => 'T', "У" => 'U', "Ф" => 'F', "Х" => 'H', "Ь" => '', "Ъ" => 'A',
"щ" => 'sht', "ш" => 'sh', "ч" => 'ch', "ц" => 'c', "ю" => 'yu', "я" => 'ya',
"ж" => 'j', "а" => 'a', "б" => 'b', "в" => 'v', "г" => 'g', "д" => 'd',
"е" => 'e', "з" => 'z', "и" => 'i', "й" => 'y', "к" => 'k', "л" => 'l',
"м" => 'm', "н" => 'n', "о" => 'o', "п" => 'p', "р" => 'r', "с" => 's',
"т" => 't', "у" => 'u', "ф" => 'f', "х" => 'h', "ь" => '', "ъ" => 'a'
' => 'Sht', ' => 'Sh', ' => 'Ch', ' => 'C', ' => 'Yu', ' => 'Ya',
' => 'J', ' => 'A', ' => 'B', ' => 'V', ' => 'G', ' => 'D',
' => 'E', ' => 'Z', ' => 'I', ' => 'Y', ' => 'K', ' => 'L',
' => 'M', ' => 'N', ' => 'O', ' => 'P', ' => 'R', ' => 'S',
' => 'T', ' => 'U', ' => 'F', ' => 'H', ' => '', ' => 'A',
' => 'sht', ' => 'sh', ' => 'ch', ' => 'c', ' => 'yu', ' => 'ya',
' => 'j', ' => 'a', ' => 'b', ' => 'v', ' => 'g', ' => 'd',
' => 'e', ' => 'z', ' => 'i', ' => 'y', ' => 'k', ' => 'l',
' => 'm', ' => 'n', ' => 'o', 'п' => 'p', ' => 'r', ' => 's',
' => 't', ' => 'u', ' => 'f', ' => 'h', ' => '', ' => 'a'
),
'ru' => array ( /* Russian */
'а' => 'a', 'б' => 'b', 'в' => 'v', 'г' => 'g', 'д' => 'd', 'е' => 'e', 'ё' => 'yo', 'ж' => 'zh',
'з' => 'z', 'и' => 'i', 'й' => 'j', 'к' => 'k', 'л' => 'l', 'м' => 'm', 'н' => 'n', 'о' => 'o',
'з' => 'z', 'и' => 'i', 'й' => 'i', 'к' => 'k', 'л' => 'l', 'м' => 'm', 'н' => 'n', 'о' => 'o',
'п' => 'p', 'р' => 'r', 'с' => 's', 'т' => 't', 'у' => 'u', 'ф' => 'f', 'х' => 'h', 'ц' => 'c',
'ч' => 'ch', 'ш' => 'sh', 'щ' => 'sh', 'ъ' => '', 'ы' => 'y', 'ь' => '', 'э' => 'e', 'ю' => 'yu',
'я' => 'ya',
'А' => 'A', 'Б' => 'B', 'В' => 'V', 'Г' => 'G', 'Д' => 'D', 'Е' => 'E', 'Ё' => 'Yo', 'Ж' => 'Zh',
'З' => 'Z', 'И' => 'I', 'Й' => 'J', 'К' => 'K', 'Л' => 'L', 'М' => 'M', 'Н' => 'N', 'О' => 'O',
'З' => 'Z', 'И' => 'I', 'Й' => 'I', 'К' => 'K', 'Л' => 'L', 'М' => 'M', 'Н' => 'N', 'О' => 'O',
'П' => 'P', 'Р' => 'R', 'С' => 'S', 'Т' => 'T', 'У' => 'U', 'Ф' => 'F', 'Х' => 'H', 'Ц' => 'C',
'Ч' => 'Ch', 'Ш' => 'Sh', 'Щ' => 'Sh', 'Ъ' => '', 'Ы' => 'Y', 'Ь' => '', 'Э' => 'E', 'Ю' => 'Yu',
'Я' => 'Ya',
@ -80,6 +81,10 @@ class URLify {
'uk' => array ( /* Ukrainian */
'Є' => 'Ye', 'І' => 'I', 'Ї' => 'Yi', 'Ґ' => 'G', 'є' => 'ye', 'і' => 'i', 'ї' => 'yi', 'ґ' => 'g'
),
'kk' => array ( /* Kazakh */
'Ә' => 'A', 'Ғ' => 'G', 'Қ' => 'Q', 'Ң' => 'N', 'Ө' => 'O', 'Ұ' => 'U', 'Ү' => 'U', 'Һ' => 'H',
'ә' => 'a', 'ғ' => 'g', 'қ' => 'q', 'ң' => 'n', 'ө' => 'o', 'ұ' => 'u', 'ү' => 'u', 'һ' => 'h',
),
'cs' => array ( /* Czech */
'č' => 'c', 'ď' => 'd', 'ě' => 'e', 'ň' => 'n', 'ř' => 'r', 'š' => 's', 'ť' => 't', 'ů' => 'u',
'ž' => 'z', 'Č' => 'C', 'Ď' => 'D', 'Ě' => 'E', 'Ň' => 'N', 'Ř' => 'R', 'Š' => 'S', 'Ť' => 'T',
@ -102,7 +107,7 @@ class URLify {
'ą' => 'a', 'č' => 'c', 'ę' => 'e', 'ė' => 'e', 'į' => 'i', 'š' => 's', 'ų' => 'u', 'ū' => 'u', 'ž' => 'z',
'Ą' => 'A', 'Č' => 'C', 'Ę' => 'E', 'Ė' => 'E', 'Į' => 'I', 'Š' => 'S', 'Ų' => 'U', 'Ū' => 'U', 'Ž' => 'Z'
),
'vn' => array ( /* Vietnamese */
'vi' => array ( /* Vietnamese */
'Á' => 'A', 'À' => 'A', 'Ả' => 'A', 'Ã' => 'A', 'Ạ' => 'A', 'Ă' => 'A', 'Ắ' => 'A', 'Ằ' => 'A', 'Ẳ' => 'A', 'Ẵ' => 'A', 'Ặ' => 'A', 'Â' => 'A', 'Ấ' => 'A', 'Ầ' => 'A', 'Ẩ' => 'A', 'Ẫ' => 'A', 'Ậ' => 'A',
'á' => 'a', 'à' => 'a', 'ả' => 'a', 'ã' => 'a', 'ạ' => 'a', 'ă' => 'a', 'ắ' => 'a', 'ằ' => 'a', 'ẳ' => 'a', 'ẵ' => 'a', 'ặ' => 'a', 'â' => 'a', 'ấ' => 'a', 'ầ' => 'a', 'ẩ' => 'a', 'ẫ' => 'a', 'ậ' => 'a',
'É' => 'E', 'È' => 'E', 'Ẻ' => 'E', 'Ẽ' => 'E', 'Ẹ' => 'E', 'Ê' => 'E', 'Ế' => 'E', 'Ề' => 'E', 'Ể' => 'E', 'Ễ' => 'E', 'Ệ' => 'E',
@ -119,7 +124,13 @@ class URLify {
'أ' => 'a', 'ب' => 'b', 'ت' => 't', 'ث' => 'th', 'ج' => 'g', 'ح' => 'h', 'خ' => 'kh', 'د' => 'd',
'ذ' => 'th', 'ر' => 'r', 'ز' => 'z', 'س' => 's', 'ش' => 'sh', 'ص' => 's', 'ض' => 'd', 'ط' => 't',
'ظ' => 'th', 'ع' => 'aa', 'غ' => 'gh', 'ف' => 'f', 'ق' => 'k', 'ك' => 'k', 'ل' => 'l', 'م' => 'm',
'ن' => 'n', 'ه' => 'h', 'و' => 'o', 'ي' => 'y'
'ن' => 'n', 'ه' => 'h', 'و' => 'o', 'ي' => 'y',
'ا' => 'a', 'إ' => 'a', 'آ' => 'a', 'ؤ' => 'o', 'ئ' => 'y', 'ء' => 'aa',
'٠' => '0', '١' => '1', '٢' => '2', '٣' => '3', '٤' => '4', '٥' => '5', '٦' => '6', '٧' => '7', '٨' => '8', '٩' => '9',
),
'fa' => array ( /* Persian */
'گ' => 'g', 'ژ' => 'j', 'پ' => 'p', 'چ' => 'ch', 'ی' => 'y', 'ک' => 'k',
'۰' => '0', '۱' => '1', '۲' => '2', '۳' => '3', '۴' => '4', '۵' => '5', '۶' => '6', '۷' => '7', '۸' => '8', '۹' => '9',
),
'sr' => array ( /* Serbian */
'ђ' => 'dj', 'ј' => 'j', 'љ' => 'lj', 'њ' => 'nj', 'ћ' => 'c', 'џ' => 'dz', 'đ' => 'dj',
@ -128,6 +139,9 @@ class URLify {
'az' => array ( /* Azerbaijani */
'ç' => 'c', 'ə' => 'e', 'ğ' => 'g', 'ı' => 'i', 'ö' => 'o', 'ş' => 's', 'ü' => 'u',
'Ç' => 'C', 'Ə' => 'E', 'Ğ' => 'G', 'İ' => 'I', 'Ö' => 'O', 'Ş' => 'S', 'Ü' => 'U'
),
'sk' => array ( /* Slovak */
'ĺ' => 'l', 'ľ' => 'l', 'ŕ' => 'r'
)
);
@ -163,8 +177,10 @@ class URLify {
/**
* Initializes the character map.
* @param string $language
*/
private static function init ($language = "") {
private static function init ($language = "")
{
if (count (self::$map) > 0 && (($language == "") || ($language == self::$language))) {
return;
}
@ -188,13 +204,15 @@ class URLify {
}
}
self::$regex = '/[' . self::$chars . ']/u';
self::$regex = '/[' . preg_quote(self::$chars, '/') . ']/u';
}
/**
* Add new characters to the list. `$map` should be a hash.
* @param array $map
*/
public static function add_chars ($map) {
public static function add_chars ($map)
{
if (! is_array ($map)) {
throw new LogicException ('$map must be an associative array.');
}
@ -206,18 +224,24 @@ class URLify {
/**
* Append words to the remove list. Accepts either single words
* or an array of words.
* @param mixed $words
*/
public static function remove_words ($words) {
public static function remove_words ($words)
{
$words = is_array ($words) ? $words : array ($words);
self::$remove_list = array_merge (self::$remove_list, $words);
self::$remove_list = array_unique (array_merge (self::$remove_list, $words));
}
/**
* Transliterates characters to their ASCII equivalents.
* $language specifies a priority for a specific language.
* The latter is useful if languages have different rules for the same character.
* @param string $text
* @param string $language
* @return string
*/
public static function downcode ($text, $language = "") {
public static function downcode ($text, $language = "")
{
self::init ($language);
if (preg_match_all (self::$regex, $text, $matches)) {
@ -240,8 +264,10 @@ class URLify {
* @param bool $use_remove_list Whether you want to remove specific elements previously set in self::$remove_list
* @param bool $lower_case Whether you want the filter to maintain casing or lowercase everything (default)
* @param bool $treat_underscore_as_space Treat underscore as space, so it will replaced with "-"
* @return string
*/
public static function filter ($text, $length = 60, $language = "", $file_name = false, $use_remove_list = true, $lower_case = true, $treat_underscore_as_space = true) {
public static function filter ($text, $length = 60, $language = "", $file_name = false, $use_remove_list = true, $lower_case = true, $treat_underscore_as_space = true)
{
$text = self::downcode ($text,$language);
if ($use_remove_list) {
@ -267,7 +293,8 @@ class URLify {
/**
* Alias of `URLify::downcode()`.
*/
public static function transliterate ($text) {
public static function transliterate ($text)
{
return self::downcode ($text);
}
}

+ 4
- 1
system/vendor/jbroadway/urlify/composer.json View File

@ -4,7 +4,7 @@
"description": "PHP port of URLify.js from the Django project. Transliterates non-ascii characters for use in URLs.",
"keywords": ["urlify","transliterate","translit","transliteration","url","encode","slug","link","iconv"],
"homepage": "https://github.com/jbroadway/urlify",
"license": "BSD",
"license": "BSD-3-Clause-Clear",
"authors": [
{
"name": "Johnny Broadway",
@ -15,6 +15,9 @@
"require": {
"php": ">=5.3.0"
},
"require-dev": {
"phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5"
},
"autoload": {
"psr-0": { "URLify": "" }
},


+ 6
- 2
system/vendor/jbroadway/urlify/tests/URLifyTest.php View File

@ -1,5 +1,8 @@
<?php
class URLifyTest extends PHPUnit_Framework_TestCase {
use PHPUnit\Framework\TestCase;
class URLifyTest extends TestCase {
function test_downcode () {
$this->assertEquals (' J\'etudie le francais ', URLify::downcode (' J\'étudie le français '));
$this->assertEquals ('Lo siento, no hablo espanol.', URLify::downcode ('Lo siento, no hablo español.'));
@ -13,7 +16,8 @@ class URLifyTest extends PHPUnit_Framework_TestCase {
$this->assertEquals ('f3pws', URLify::filter ('ΦΞΠΏΣ'));
$this->assertEquals ('', URLify::filter('大般若經'));
$this->assertEquals ('test-.txt', URLify::filter('test-大般若經.txt', 60, "", $file_name = true));
$this->assertEquals ('ykrhy-ltoytr', URLify::filter('ياكرهي لتويتر'));
$this->assertEquals ('yakrhy-ltoytr', URLify::filter('ياكرهي لتويتر'));
$this->assertEquals ('saaat-25', URLify::filter('ساعت ۲۵'));
$this->assertEquals ('foto.jpg', URLify::filter ('фото.jpg', 60, "", $file_name = true));
// priorization of language-specific maps
$this->assertEquals ('aouaou', URLify::filter ('ÄÖÜäöü',60,"tr"));


+ 11
- 0
system/vendor/michelf/php-markdown/.editorconfig View File

@ -0,0 +1,11 @@
# EditorConfig is awesome: https://EditorConfig.org
root = true
[*]
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = false
[*.php]
indent_style = tab
insert_final_newline = true

+ 3
- 0
system/vendor/michelf/php-markdown/.gitignore View File

@ -0,0 +1,3 @@
*~
/composer.lock
/vendor/

+ 36
- 0
system/vendor/michelf/php-markdown/.scrutinizer.yml View File

@ -0,0 +1,36 @@
build:
environment:
php:
version: '7.0.20'
nodes:
analysis:
project_setup:
override:
- 'true'
tests:
override:
-
command: 'vendor/bin/phpunit --coverage-clover=clover.xml'
coverage:
file: 'clover.xml'
format: 'clover'
-
command: phpcs-run
use_website_config: true
environment:
node:
version: 6.0.0
tests: true
filter:
excluded_paths:
- 'test/*'
checks:
php: true
coding_style:
php:
indentation:
general:
use_tabs: true
spaces:
around_operators:
concatenation: true

+ 29
- 0
system/vendor/michelf/php-markdown/.travis.yml View File

@ -0,0 +1,29 @@
language: php
sudo: false
cache:
directories:
- $HOME/.composer/
# Run tests against all these PHP versions
# TODO: When it becomes possible in TravisCI, switch 7.4snapshot to plain 7.4
php:
- 5.4
- 5.5
- 5.6
- 7.0
- 7.1
- 7.2
- 7.3
- 7.4snapshot
- hhvm
before_script:
- composer install --prefer-dist
script:
- vendor/bin/phpunit --log-junit=phpunit.log
notifications:
email: false

+ 3
- 3
system/vendor/michelf/php-markdown/License.md View File

@ -1,11 +1,11 @@
PHP Markdown Lib
Copyright (c) 2004-2015 Michel Fortin
Copyright (c) 2004-2019 Michel Fortin
<https://michelf.ca/>
All rights reserved.
Based on Markdown
Copyright (c) 2003-2006 John Gruber
<https://daringfireball.net/>
Copyright (c) 2003-2006 John Gruber
<https://daringfireball.net/>
All rights reserved.
Redistribution and use in source and binary forms, with or without


+ 5
- 5
system/vendor/michelf/php-markdown/Michelf/Markdown.inc.php View File

@ -1,10 +1,10 @@
<?php
# Use this file if you cannot use class autoloading. It will include all the
# files needed for the Markdown parser.
#
# Take a look at the PSR-0-compatible class autoloading implementation
# in the Readme.php file if you want a simple autoloader setup.
// Use this file if you cannot use class autoloading. It will include all the
// files needed for the Markdown parser.
//
// Take a look at the PSR-0-compatible class autoloading implementation
// in the Readme.php file if you want a simple autoloader setup.
require_once dirname(__FILE__) . '/MarkdownInterface.php';
require_once dirname(__FILE__) . '/Markdown.php';

+ 858
- 565
system/vendor/michelf/php-markdown/Michelf/Markdown.php
File diff suppressed because it is too large
View File


+ 5
- 5
system/vendor/michelf/php-markdown/Michelf/MarkdownExtra.inc.php View File

@ -1,10 +1,10 @@
<?php
# Use this file if you cannot use class autoloading. It will include all the
# files needed for the MarkdownExtra parser.
#
# Take a look at the PSR-0-compatible class autoloading implementation
# in the Readme.php file if you want a simple autoloader setup.
// Use this file if you cannot use class autoloading. It will include all the
// files needed for the MarkdownExtra parser.
//
// Take a look at the PSR-0-compatible class autoloading implementation
// in the Readme.php file if you want a simple autoloader setup.
require_once dirname(__FILE__) . '/MarkdownInterface.php';
require_once dirname(__FILE__) . '/Markdown.php';


+ 972
- 704
system/vendor/michelf/php-markdown/Michelf/MarkdownExtra.php
File diff suppressed because it is too large
View File


+ 5
- 5
system/vendor/michelf/php-markdown/Michelf/MarkdownInterface.inc.php View File

@ -1,9 +1,9 @@
<?php
# Use this file if you cannot use class autoloading. It will include all the
# files needed for the MarkdownInterface interface.
#
# Take a look at the PSR-0-compatible class autoloading implementation
# in the Readme.php file if you want a simple autoloader setup.
// Use this file if you cannot use class autoloading. It will include all the
// files needed for the MarkdownInterface interface.
//
// Take a look at the PSR-0-compatible class autoloading implementation
// in the Readme.php file if you want a simple autoloader setup.
require_once dirname(__FILE__) . '/MarkdownInterface.php';

+ 32
- 28
system/vendor/michelf/php-markdown/Michelf/MarkdownInterface.php View File

@ -1,34 +1,38 @@
<?php
#
# Markdown - A text-to-HTML conversion tool for web writers
#
# PHP Markdown
# Copyright (c) 2004-2015 Michel Fortin
# <https://michelf.ca/projects/php-markdown/>
#
# Original Markdown
# Copyright (c) 2004-2006 John Gruber
# <https://daringfireball.net/projects/markdown/>
#
namespace Michelf;
/**
* Markdown - A text-to-HTML conversion tool for web writers
*
* @package php-markdown
* @author Michel Fortin <michel.fortin@michelf.com>
* @copyright 2004-2019 Michel Fortin <https://michelf.com/projects/php-markdown/>
* @copyright (Original Markdown) 2004-2006 John Gruber <https://daringfireball.net/projects/markdown/>
*/
#
# Markdown Parser Interface
#
namespace Michelf;
/**
* Markdown Parser Interface
*/
interface MarkdownInterface {
/**
* Initialize the parser and return the result of its transform method.
* This will work fine for derived classes too.
*
* @api
*
* @param string $text
* @return string
*/
public static function defaultTransform($text);
#
# Initialize the parser and return the result of its transform method.
# This will work fine for derived classes too.
#
public static function defaultTransform($text);
#
# Main function. Performs some preprocessing on the input text
# and pass it through the document gamut.
#
public function transform($text);
/**
* Main function. Performs some preprocessing on the input text
* and pass it through the document gamut.
*
* @api
*
* @param string $text
* @return string
*/
public function transform($text);
}

+ 157
- 78
system/vendor/michelf/php-markdown/Readme.md View File

@ -1,7 +1,7 @@
PHP Markdown
============
PHP Markdown Lib 1.6.0 - 23 Dec 2015
PHP Markdown Lib 1.9.0 - 1 Dec 2019
by Michel Fortin
<https://michelf.ca/>
@ -13,16 +13,16 @@ based on Markdown by John Gruber
Introduction
------------
This is a library package that includes the PHP Markdown parser and its
This is a library package that includes the PHP Markdown parser and its
sibling PHP Markdown Extra with additional features.
Markdown is a text-to-HTML conversion tool for web writers. Markdown
allows you to write using an easy-to-read, easy-to-write plain text
format, then convert it to structurally valid XHTML (or HTML).
"Markdown" is actually two things: a plain text markup syntax, and a
software tool, originally written in Perl, that converts the plain text
markup to HTML. PHP Markdown is a port to PHP of the original Markdown
"Markdown" is actually two things: a plain text markup syntax, and a
software tool, originally written in Perl, that converts the plain text
markup to HTML. PHP Markdown is a port to PHP of the original Markdown
program by John Gruber.
* [Full documentation of the Markdown syntax](<https://daringfireball.net/projects/markdown/>)
@ -37,68 +37,77 @@ Requirement
This library package requires PHP 5.3 or later.
Note: The older plugin/library hybrid package for PHP Markdown and
PHP Markdown Extra is still maintained and will work with PHP 4.0.5 and later.
PHP Markdown Extra is no longer maintained but will work with PHP 4.0.5 and
later.
Before PHP 5.3.7, pcre.backtrack_limit defaults to 100 000, which is too small
in many situations. You might need to set it to higher values. Later PHP
in many situations. You might need to set it to higher values. Later PHP
releases defaults to 1 000 000, which is usually fine.
Usage
-----
This library package is meant to be used with class autoloading. For autoloading
to work, your project needs have setup a PSR-0-compatible autoloader. See the
included Readme.php file for a minimal autoloader setup. (If you cannot use
autoloading, see below.)
To use this library with Composer, first install it with:
With class autoloading in place, putting the 'Michelf' folder in your
include path should be enough for this to work:
$ composer require michelf/php-markdown
use \Michelf\Markdown;
Then include Composer's generated vendor/autoload.php to [enable autoloading]:
require 'vendor/autoload.php';
Without Composer, for autoloading to work, your project needs an autoloader
compatible with PSR-4 or PSR-0. See the included Readme.php file for a minimal
autoloader setup. (If you cannot use autoloading, see below.)
With class autoloading in place:
use Michelf\Markdown;
$my_html = Markdown::defaultTransform($my_text);
Markdown Extra syntax is also available the same way:
use \Michelf\MarkdownExtra;
use Michelf\MarkdownExtra;
$my_html = MarkdownExtra::defaultTransform($my_text);
If you wish to use PHP Markdown with another text filter function
If you wish to use PHP Markdown with another text filter function
built to parse HTML, you should filter the text *after* the `transform`
function call. This is an example with [PHP SmartyPants][psp]:
function call. This is an example with [PHP SmartyPants]:
use \Michelf\Markdown, \Michelf\SmartyPants;
use Michelf\Markdown, Michelf\SmartyPants;
$my_html = Markdown::defaultTransform($my_text);
$my_html = SmartyPants::defaultTransform($my_html);
All these examples are using the static `defaultTransform` static function
found inside the parser class. If you want to customize the parser
configuration, you can also instantiate it directly and change some
All these examples are using the static `defaultTransform` static function
found inside the parser class. If you want to customize the parser
configuration, you can also instantiate it directly and change some
configuration variables:
use \Michelf\MarkdownExtra;
use Michelf\MarkdownExtra;
$parser = new MarkdownExtra;
$parser->fn_id_prefix = "post22-";
$my_html = $parser->transform($my_text);
To learn more, see the full list of [configuration variables].
[enable autoloading]: https://getcomposer.org/doc/01-basic-usage.md#autoloading
[PHP SmartyPants]: https://michelf.ca/projects/php-smartypants/
[configuration variables]: https://michelf.ca/projects/php-markdown/configuration/
### Usage without an autoloader
If you cannot use class autoloading, you can still use `include` or `require`
to access the parser. To load the `\Michelf\Markdown` parser, do it this way:
If you cannot use class autoloading, you can still use `include` or `require`
to access the parser. To load the `Michelf\Markdown` parser, do it this way:
require_once 'Michelf/Markdown.inc.php';
Or, if you need the `\Michelf\MarkdownExtra` parser:
Or, if you need the `Michelf\MarkdownExtra` parser:
require_once 'Michelf/MarkdownExtra.inc.php';
While the plain `.php` files depend on autoloading to work correctly, using the
`.inc.php` files instead will eagerly load the dependencies that would be
`.inc.php` files instead will eagerly load the dependencies that would be
loaded on demand if you were using autoloading.
@ -113,19 +122,19 @@ functions and their configuration variables. The public API is stable for
a given major version number. It might get additions when the minor version
number increments.
**Protected members are not considered public API.** This is unconventional
and deserves an explanation. Incrementing the major version number every time
**Protected members are not considered public API.** This is unconventional
and deserves an explanation. Incrementing the major version number every time
the underlying implementation of something changes is going to give
nonessential version numbers for the vast majority of people who just use the
parser. Protected members are meant to create parser subclasses that behave in
different ways. Very few people create parser subclasses. I don't want to
discourage it by making everything private, but at the same time I can't
different ways. Very few people create parser subclasses. I don't want to
discourage it by making everything private, but at the same time I can't
guarantee any stable hook between versions if you use protected members.
**Syntax changes** will increment the minor number for new features, and the
patch number for small corrections. A *new feature* is something that needs a
**Syntax changes** will increment the minor number for new features, and the
patch number for small corrections. A *new feature* is something that needs a
change in the syntax documentation. Note that since PHP Markdown Lib includes
two parsers, a syntax change for either of them will increment the minor
two parsers, a syntax change for either of them will increment the minor
number. Also note that there is nothing perfectly backward-compatible with the
Markdown syntax: all inputs are always valid, so new features always replace
something that was previously legal, although generally nonsensical to do.
@ -140,7 +149,7 @@ To file bug reports please send email to:
Please include with your report: (1) the example input; (2) the output you
expected; (3) the output PHP Markdown actually produced.
If you have a problem where Markdown gives you an empty result, first check
If you have a problem where Markdown gives you an empty result, first check
that the backtrack limit is not too low by running `php --info | grep pcre`.
See Installation and Requirement above for details.
@ -149,55 +158,125 @@ Development and Testing
-----------------------
Pull requests for fixing bugs are welcome. Proposed new features are
going meticulously reviewed -- taking into account backward compatibility,
going to be meticulously reviewed -- taking into account backward compatibility,
potential side effects, and future extensibility -- before deciding on
acceptance or rejection.
If you make a pull request that includes changes to the parser please add
tests for what is being changed to [MDTest][] and make a pull request there
too.
If you make a pull request that includes changes to the parser please add
tests for what is being changed to the `test/` directory. This can be as
simple as adding a `.text` (input) file with a corresponding `.xhtml`
(output) file to proper category under `./test/resources/`.
[MDTest]: https://github.com/michelf/mdtest/
Traditionally tests were in a separate repository, [MDTest](https://github.com/michelf/mdtest)
but they are now located here, alongside the source code.
Donations
---------
If you wish to make a donation that will help me devote more time to
PHP Markdown, please visit [michelf.ca/donate] or send Bitcoin to
[1HiuX34czvVPPdhXbUAsAu7pZcesniDCGH].
If you wish to make a donation that will help me devote more time to
PHP Markdown, please visit [michelf.ca/donate].
[michelf.ca/donate]: https://michelf.ca/donate/#!Thanks%20for%20PHP%20Markdown
[1HiuX34czvVPPdhXbUAsAu7pZcesniDCGH]: bitcoin:1HiuX34czvVPPdhXbUAsAu7pZcesniDCGH
Version History
---------------
PHP Markdown Lib 1.6.0 (23 Dec 2015)
PHP Markdown Lib 1.9.0 (1 Dec 2019)
* Added `fn_backlink_label` configuration variable to put some text in the
`aria-label` attribute.
(Thanks to Sunny Walker for the implementation.)
* Occurances of "`^^`" in `fn_backlink_html`, `fn_backlink_class`,
`fn_backlink_title`, and `fn_backlink_label` will be replaced by the
corresponding footnote number in the HTML output. Occurances of "`%%`" will be
replaced by a number for the reference (footnotes can have multiple references).
(Thanks to Sunny Walker for the implementation.)
* Added configuration variable `omit_footnotes`. When `true` footnotes are not
appended at the end of the generated HTML and the `footnotes_assembled`
variable will contain the HTML for the footnote list, allowing footnotes to be
moved somewhere else on the page.
(Thanks to James K. for the implementation.)
Note: when placing the content of `footnotes_assembled` on the page, consider
adding the attribute `role="doc-endnotes"` to the `<div>` or `<section>` that will
enclose the list of footnotes so they are reachable to accessibility tools the
same way they would be with the default HTML output.
* Fixed deprecation warnings from PHP about usage of curly braces to access
characters in text strings.
(Thanks to Remi Collet and Frans-Willem Post.)
PHP Markdown Lib 1.8.0 (14 Jan 2018)
* Autoloading with Composer now uses PSR-4.
* HTML output for Markdown Extra footnotes now include `role` attributes
with values from [WAI-ARIA](https://www.w3.org/TR/dpub-aria/) to
make them more accessible.
(Thanks to Tobias Bengfort)
* In Markdown Extra, added the `hashtag_protection` configuration variable.
When set to `true` it prevents ATX-style headers with no space after the initial
hash from being interpreted as headers. This way your precious hashtags
are preserved.
(Thanks to Jaussoin Timothée for the implementation.)
PHP Markdown Lib 1.7.0 (29 Oct 2016)
Note: this version was incorrectly released as 1.5.1 on Dec 22, a number
* Added a `hard_wrap` configuration variable to make all newline characters
in the text become `<br>` tags in the HTML output. By default, according
to the standard Markdown syntax these newlines are ignored unless they a
preceded by two spaces. Thanks to Jonathan Cohlmeyer for the implementation.
* Improved the parsing of list items to fix problematic cases that came to
light with the addition of `hard_wrap`. This should have no effect on the
output except span-level list items that ended with two spaces (and thus
ended with a line break).
* Added a `code_span_content_func` configuration variable which takes a
function that will convert the content of the code span to HTML. This can
be useful to implement syntax highlighting. Although contrary to its
code block equivalent, there is no syntax for specifying a language.
Credits to styxit for the implementation.
* Fixed a Markdown Extra issue where two-space-at-end-of-line hard breaks
wouldn't work inside of HTML block elements such as `<p markdown="1">`
where the element expects only span-level content.
* In the parser code, switched to PHPDoc comment format. Thanks to
Robbie Averill for the help.
PHP Markdown Lib 1.6.0 (23 Dec 2015)
Note: this version was incorrectly released as 1.5.1 on Dec 22, a number
that contradicted the versioning policy.
* For fenced code blocks in Markdown Extra, can now set a class name for the
code block's language before the special attribute block. Previously, this
* For fenced code blocks in Markdown Extra, can now set a class name for the
code block's language before the special attribute block. Previously, this
class name was only allowed in the absence of the special attribute block.
* Added a `code_block_content_func` configuration variable which takes a
function that will convert the content of the code block to HTML. This is
most useful for syntax highlighting. For fenced code blocks in Markdown
Extra, the function has access to the language class name (the one outside
of the special attribute block). Credits to Mario Konrad for providing the
* Added a `code_block_content_func` configuration variable which takes a
function that will convert the content of the code block to HTML. This is
most useful for syntax highlighting. For fenced code blocks in Markdown
Extra, the function has access to the language class name (the one outside
of the special attribute block). Credits to Mario Konrad for providing the
implementation.
* The curled arrow character for the backlink in footnotes is now followed
by a Unicode variant selector to prevent it from being displayed in emoji
form on iOS.
Note that in older browsers the variant selector is often interpreted as a
separate character, making it visible after the arrow. So there is now a
also a `fn_backlink_html` configuration variable that can be used to set
the link text to something else. Credits to Dana for providing the
Note that in older browsers the variant selector is often interpreted as a
separate character, making it visible after the arrow. So there is now a
also a `fn_backlink_html` configuration variable that can be used to set
the link text to something else. Credits to Dana for providing the
implementation.
* Fixed an issue in MarkdownExtra where long header lines followed by a
@ -209,13 +288,13 @@ PHP Markdown Lib 1.5.0 (1 Mar 2015)
* Added the ability start ordered lists with a number different from 1 and
and have that reflected in the HTML output. This can be enabled with
the `enhanced_ordered_lists` configuration variable for the Markdown
the `enhanced_ordered_lists` configuration variable for the Markdown
parser; it is enabled by default for Markdown Extra.
Credits to Matt Gorle for providing the implementation.
* Added the ability to insert custom HTML attributes with simple values
* Added the ability to insert custom HTML attributes with simple values
everywhere an extra attribute block is allowed (links, images, headers).
The value must be unquoted, cannot contains spaces and is limited to
The value must be unquoted, cannot contains spaces and is limited to
alphanumeric ASCII characters.
Credits to Peter Droogmans for providing the implementation.
@ -230,7 +309,7 @@ PHP Markdown Lib 1.5.0 (1 Mar 2015)
PHP Markdown Lib 1.4.1 (4 May 2014)
* The HTML block parser will now treat `<figure>` as a block-level element
(as it should) and no longer wrap it in `<p>` or parse it's content with
(as it should) and no longer wrap it in `<p>` or parse it's content with
the as Markdown syntax (although with Extra you can use `markdown="1"`
if you wish to use the Markdown syntax inside it).
@ -239,7 +318,7 @@ PHP Markdown Lib 1.4.1 (4 May 2014)
* Corrected an bug where some inline links with spaces in them would not
work even when surounded with angle brackets:
[link](<s p a c e s>)
* Fixed an issue where email addresses with quotes in them would not always
@ -255,9 +334,9 @@ PHP Markdown Lib 1.4.0 (29 Nov 2013)
* Added support for the `tel:` URL scheme in automatic links.
<tel:+1-111-111-1111>
It gets converted to this (note the `tel:` prefix becomes invisible):
<a href="tel:+1-111-111-1111">+1-111-111-1111</a>
* Added backtick fenced code blocks to MarkdownExtra, originally from
@ -268,16 +347,16 @@ PHP Markdown Lib 1.4.0 (29 Nov 2013)
you want to create a mockup parser object for unit testing.
* For those of you who cannot use class autoloading, you can now
include `Michelf/Markdown.inc.php` or `Michelf/MarkdownExtra.inc.php` (note
include `Michelf/Markdown.inc.php` or `Michelf/MarkdownExtra.inc.php` (note
the `.inc.php` extension) to automatically include other files required
by the parser.
PHP Markdown Lib 1.3 (11 Apr 2013)
This is the first release of PHP Markdown Lib. This package requires PHP
version 5.3 or later and is designed to work with PSR-0 autoloading and,
optionally with Composer. Here is a list of the changes since
This is the first release of PHP Markdown Lib. This package requires PHP
version 5.3 or later and is designed to work with PSR-0 autoloading and,
optionally with Composer. Here is a list of the changes since
PHP Markdown Extra 1.2.6:
* Plugin interface for WordPress and other systems is no longer present in
@ -297,22 +376,22 @@ PHP Markdown Extra 1.2.6:
* Added optional class and id attributes to images and links using the same
syntax as for headers:
[link](url){#id .class}
[link](url){#id .class}
![img](url){#id .class}
It work too for reference-style links and images. In this case you need
to put those attributes at the reference definition:
[link][linkref] or [linkref]
[link][linkref] or [linkref]
![img][linkref]
[linkref]: url "optional title" {#id .class}
* Fixed a PHP notice message triggered when some table column separator
* Fixed a PHP notice message triggered when some table column separator
markers are missing on the separator line below column headers.
* Fixed a small mistake that could cause the parser to retain an invalid
state related to parsing links across multiple runs. This was never
state related to parsing links across multiple runs. This was never
observed (that I know of), but it's still worth fixing.
@ -320,25 +399,25 @@ Copyright and License
---------------------
PHP Markdown Lib
Copyright (c) 2004-2015 Michel Fortin
Copyright (c) 2004-2019 Michel Fortin
<https://michelf.ca/>
All rights reserved.
Based on Markdown
Copyright (c) 2003-2005 John Gruber
<https://daringfireball.net/>
Copyright (c) 2003-2005 John Gruber
<https://daringfireball.net/>
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the
documentation and/or other materials provided with the
distribution.
* Neither the name "Markdown" nor the names of its contributors may


+ 16
- 14
system/vendor/michelf/php-markdown/Readme.php View File

@ -1,31 +1,33 @@
<?php
# This file passes the content of the Readme.md file in the same directory
# through the Markdown filter. You can adapt this sample code in any way
# you like.
// This file passes the content of the Readme.md file in the same directory
// through the Markdown filter. You can adapt this sample code in any way
// you like.
# Install PSR-0-compatible class autoloader
// Install PSR-4-compatible class autoloader
spl_autoload_register(function($class){
require preg_replace('{\\\\|_(?!.*\\\\)}', DIRECTORY_SEPARATOR, ltrim($class, '\\')).'.php';
require str_replace('\\', DIRECTORY_SEPARATOR, ltrim($class, '\\')).'.php';
});
// If using Composer, use this instead:
//require 'vendor/autoload.php';
# Get Markdown class
use \Michelf\Markdown;
// Get Markdown class
use Michelf\Markdown;
# Read file and pass content through the Markdown parser
// Read file and pass content through the Markdown parser
$text = file_get_contents('Readme.md');
$html = Markdown::defaultTransform($text);
?>
<!DOCTYPE html>
<html>
<head>
<title>PHP Markdown Lib - Readme</title>
</head>
<body>
<head>
<title>PHP Markdown Lib - Readme</title>
</head>
<body>
<?php
# Put HTML content in the document
// Put HTML content in the document
echo $html;
?>
</body>
</body>
</html>

+ 3
- 5
system/vendor/michelf/php-markdown/composer.json View File

@ -21,11 +21,9 @@
"php": ">=5.3.0"
},
"autoload": {
"psr-0": { "Michelf": "" }
"psr-4": { "Michelf\\": "Michelf/" }
},
"extra": {
"branch-alias": {
"dev-lib": "1.4.x-dev"
}
"require-dev": {
"phpunit/phpunit": ">=4.3 <5.8"
}
}

+ 24
- 0
system/vendor/michelf/php-markdown/phpunit.xml.dist View File

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
backupStaticAttributes="false"
bootstrap="./test/bootstrap.php"
colors="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
>
<testsuites>
<testsuite name="php-markdown Unit Tests">
<directory>./test/unit/</directory>
</testsuite>
<testsuite name="php-markdown Integration Tests">
<directory>./test/integration/</directory>
</testsuite>
</testsuites>
<filter>
<whitelist processUncoveredFilesFromWhitelist="true">
<directory suffix=".php">Michelf</directory>
</whitelist>
</filter>
</phpunit>

+ 6
- 0
system/vendor/michelf/php-markdown/test/bootstrap.php View File

@ -0,0 +1,6 @@
<?php
define('TEST_ROOT', __DIR__);
define('TEST_RESOURCES_ROOT', __DIR__ . '/resources');
require_once __DIR__ . '/helpers/MarkdownTestHelper.php';

+ 267
- 0
system/vendor/michelf/php-markdown/test/helpers/MarkdownTestHelper.php View File

@ -0,0 +1,267 @@
<?php
use PHPUnit\Framework\TestCase;
class MarkdownTestHelper
{
/**
* Takes an input directory containing .text and .(x)html files, and returns an array
* of .text files and the corresponding output xhtml or html file. Can be used in a unit test data provider.
*
* @param string $directory Input directory
*
* @return array
*/
public static function getInputOutputPaths($directory) {
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory));
$regexIterator = new RegexIterator(
$iterator,
'/^.+\.text$/',
RecursiveRegexIterator::GET_MATCH
);
$dataValues = [];
/** @var SplFileInfo $inputFile */
foreach ($regexIterator as $inputFiles) {
foreach ($inputFiles as $inputMarkdownPath) {
$xhtml = true;
$expectedHtmlPath = substr($inputMarkdownPath, 0, -4) . 'xhtml';
if (!file_exists($expectedHtmlPath)) {
$expectedHtmlPath = substr($inputMarkdownPath, 0, -4) . 'html';
$xhtml = false;
}
$dataValues[] = [$inputMarkdownPath, $expectedHtmlPath, $xhtml];
}
}
return $dataValues;
}
/**
* Applies PHPUnit's assertSame after normalizing both strings (e.g. ignoring whitespace differences).
* Uses logic found originally in MDTest.
*
* @param string $string1
* @param string $string2
* @param string $message Positive message to print when test fails (e.g. "String1 matches String2")
* @param bool $xhtml
*/
public static function assertSameNormalized($string1, $string2, $message, $xhtml = true) {
$t_result = $string1;
$t_output = $string2;
// DOMDocuments
if ($xhtml) {
$document = new DOMDocument();
$doc_result = $document->loadXML('<!DOCTYPE html>' .
"<html xmlns='http://www.w3.org/1999/xhtml'>" .
"<body>$t_result</body></html>");
$document2 = new DOMDocument();
$doc_output = $document2->loadXML('<!DOCTYPE html>' .
"<html xmlns='http://www.w3.org/1999/xhtml'>" .
"<body>$t_output</body></html>");
if ($doc_result) {
static::normalizeElementContent($document->documentElement, false);
$n_result = $document->saveXML();
} else {
$n_result = '--- Expected Result: XML Parse Error ---';
}
if ($doc_output) {
static::normalizeElementContent($document2->documentElement, false);
$n_output = $document2->saveXML();
} else {
$n_output = '--- Output: XML Parse Error ---';
}
} else {
// '@' suppressors used because some tests have invalid HTML (multiple elements with the same id attribute)
// Perhaps isolate to a separate test and remove this?
$document = new DOMDocument();
$doc_result = @$document->loadHTML($t_result);
$document2 = new DOMDocument();
$doc_output = @$document2->loadHTML($t_output);
if ($doc_result) {
static::normalizeElementContent($document->documentElement, false);
$n_result = $document->saveHTML();
} else {
$n_result = '--- Expected Result: HTML Parse Error ---';
}
if ($doc_output) {
static::normalizeElementContent($document2->documentElement, false);
$n_output = $document2->saveHTML();
} else {
$n_output = '--- Output: HTML Parse Error ---';
}
}
$n_result = preg_replace('{^.*?<body>|</body>.*?$}is', '', $n_result);
$n_output = preg_replace('{^.*?<body>|</body>.*?$}is', '', $n_output);
$c_result = $n_result;
$c_output = $n_output;
$c_result = trim($c_result) . "\n";
$c_output = trim($c_output) . "\n";
// This will throw a test exception if the strings don't exactly match
TestCase::assertSame($c_result, $c_output, $message);
}
/**
* @param DOMElement $element Modifies this element by reference
* @param bool $whitespace_preserve Preserve Whitespace
* @return void
*/
protected static function normalizeElementContent($element, $whitespace_preserve) {
#
# Normalize content of HTML DOM $element. The $whitespace_preserve
# argument indicates that whitespace is significant and shouldn't be
# normalized; it should be used for the content of certain elements like
# <pre> or <script>.
#
$node_list = $element->childNodes;
switch (strtolower($element->nodeName)) {
case 'body':
case 'div':
case 'blockquote':
case 'ul':
case 'ol':
case 'dl':
case 'h1':
case 'h2':
case 'h3':
case 'h4':
case 'h5':
case 'h6':
$whitespace = "\n\n";
break;
case 'table':
$whitespace = "\n";
break;
case 'pre':
case 'script':
case 'style':
case 'title':
$whitespace_preserve = true;
$whitespace = "";
break;
default:
$whitespace = "";
break;
}
foreach ($node_list as $node) {
switch ($node->nodeType) {
case XML_ELEMENT_NODE:
static::normalizeElementContent($node, $whitespace_preserve);
static::normalizeElementAttributes($node);
switch (strtolower($node->nodeName)) {
case 'p':
case 'div':
case 'hr':
case 'blockquote':
case 'ul':
case 'ol':
case 'dl':
case 'li':
case 'address':
case 'table':
case 'dd':
case 'pre':
case 'h1':
case 'h2':
case 'h3':
case 'h4':
case 'h5':
case 'h6':
$whitespace = "\n\n";
break;
case 'tr':
case 'td':
case 'dt':
$whitespace = "\n";
break;
default:
$whitespace = "";
break;
}
if (($whitespace === "\n\n" || $whitespace === "\n") &&
$node->nextSibling &&
$node->nextSibling->nodeType != XML_TEXT_NODE) {
$element->insertBefore(new DOMText($whitespace), $node->nextSibling);
}
break;
case XML_TEXT_NODE:
if (!$whitespace_preserve) {
if (trim($node->data) === "") {
$node->data = $whitespace;
}
else {
$node->data = preg_replace('{\s+}', ' ', $node->data);
}
}
break;
}
}
if (!$whitespace_preserve &&
($whitespace === "\n\n" || $whitespace === "\n")) {
if ($element->firstChild) {
if ($element->firstChild->nodeType == XML_TEXT_NODE) {
$element->firstChild->data =
preg_replace('{^\s+}', "\n", $element->firstChild->data);
}
else {
$element->insertBefore(new DOMText("\n"), $element->firstChild);
}
}
if ($element->lastChild) {
if ($element->lastChild->nodeType == XML_TEXT_NODE) {
$element->lastChild->data =
preg_replace('{\s+$}', "\n", $element->lastChild->data);
}
else {
$element->insertBefore(new DOMText("\n"), null);
}
}
}
}
/**
* @param DOMElement $element Modifies this element by reference
*/
protected static function normalizeElementAttributes (DOMElement $element)
{
#
# Sort attributes by name.
#
// Gather the list of attributes as an array.
$attr_list = array();
foreach ($element->attributes as $attr_node) {
$attr_list[$attr_node->name] = $attr_node;
}
// Sort attribute list by name.
ksort($attr_list);
// Remove then put back each attribute following sort order.
foreach ($attr_list as $attr_node) {
$element->removeAttributeNode($attr_node);
$element->setAttributeNode($attr_node);
}
}
}

+ 173
- 0
system/vendor/michelf/php-markdown/test/integration/PhpMarkdownTest.php View File

@ -0,0 +1,173 @@
<?php
use PHPUnit\Framework\TestCase;
use Michelf\Markdown;
use Michelf\MarkdownExtra;
class PhpMarkdownTest extends TestCase
{
/**
* Returns all php-markdown.mdtest tests
* @return array
*/
public function dataProviderForPhpMarkdown() {
$dir = TEST_RESOURCES_ROOT . '/php-markdown.mdtest';
return MarkdownTestHelper::getInputOutputPaths($dir);
}
/**
* Runs php-markdown.mdtest against Markdown::defaultTransform
*
* @dataProvider dataProviderForPhpMarkdown
*
* @param string $inputPath Input markdown path
* @param string $htmlPath File path of expected transformed output (X)HTML
*
* @param bool $xhtml True if XHTML. Otherwise, HTML is assumed.
*
* @return void
*/
public function testTransformingOfPhpMarkdown($inputPath, $htmlPath, $xhtml = false) {
$inputMarkdown = file_get_contents($inputPath);
$expectedHtml = file_get_contents($htmlPath);
$result = Markdown::defaultTransform($inputMarkdown);
MarkdownTestHelper::assertSameNormalized(
$expectedHtml,
$result,
"Markdown in $inputPath converts exactly to expected $htmlPath",
$xhtml
);
}
/**
* Returns all php-markdown.mdtest tests EXCEPT Emphasis test.
* @return array
*/
public function dataProviderForPhpMarkdownExceptEmphasis()
{
$dir = TEST_RESOURCES_ROOT . '/php-markdown.mdtest';
$allTests = MarkdownTestHelper::getInputOutputPaths($dir);
foreach ($allTests as $index => $test) {
// Because MarkdownExtra treats underscore emphasis differently, this one test has to be excluded
if (preg_match('~/Emphasis\.text$~', $test[0])) {
unset($allTests[$index]);
}
}
return array_values($allTests);
}
/**
* Runs php-markdown.mdtest against MarkdownExtra::defaultTransform
*
* @dataProvider dataProviderForPhpMarkdownExceptEmphasis
*
* @param $inputPath
* @param $htmlPath
* @param bool $xhtml
*/
public function testPhpMarkdownMdTestWithMarkdownExtra($inputPath, $htmlPath, $xhtml = false)
{
$inputMarkdown = file_get_contents($inputPath);
$expectedHtml = file_get_contents($htmlPath);
$result = MarkdownExtra::defaultTransform($inputMarkdown);
MarkdownTestHelper::assertSameNormalized(
$expectedHtml,
$result,
"Markdown in $inputPath converts exactly to expected $htmlPath",
$xhtml
);
}
/**
* @return array
*/
public function dataProviderForMarkdownExtra() {
$dir = TEST_RESOURCES_ROOT . '/php-markdown-extra.mdtest';
return MarkdownTestHelper::getInputOutputPaths($dir);
}
/**
* @dataProvider dataProviderForMarkdownExtra
*
* @param string $inputPath Input markdown path
* @param string $htmlPath File path of expected transformed output (X)HTML
*
* @param bool $xhtml True if XHTML. Otherwise, HTML is assumed.
*
* @return void
*/
public function testTransformingOfMarkdownExtra($inputPath, $htmlPath, $xhtml = false) {
$inputMarkdown = file_get_contents($inputPath);
$expectedHtml = file_get_contents($htmlPath);
$result = MarkdownExtra::defaultTransform($inputMarkdown);
MarkdownTestHelper::assertSameNormalized(
$expectedHtml,
$result,
"Markdown in $inputPath converts exactly to expected $htmlPath",
$xhtml
);
}
/**
* @return array
*/
public function dataProviderForRegularMarkdown()
{
$dir = TEST_RESOURCES_ROOT . '/markdown.mdtest';
return MarkdownTestHelper::getInputOutputPaths($dir);
}
/**
* @dataProvider dataProviderForRegularMarkdown
*
* @param string $inputPath Input markdown path
* @param string $htmlPath File path of expected transformed output (X)HTML
*
* @param bool $xhtml True if XHTML. Otherwise, HTML is assumed.
*
* @return void
*/
public function testTransformingOfRegularMarkdown($inputPath, $htmlPath, $xhtml = false)
{
$inputMarkdown = file_get_contents($inputPath);
$expectedHtml = file_get_contents($htmlPath);
$result = Markdown::defaultTransform($inputMarkdown);
MarkdownTestHelper::assertSameNormalized(
$expectedHtml,
$result,
"Markdown in $inputPath converts exactly to expected $htmlPath",
$xhtml
);
}
/**
* Runs markdown.mdtest against MarkdownExtra::defaultTransform
*
* @dataProvider dataProviderForRegularMarkdown
*
* @param $inputPath
* @param $htmlPath
* @param bool $xhtml
*/
public function testMarkdownMdTestWithMarkdownExtra($inputPath, $htmlPath, $xhtml = false)
{
$inputMarkdown = file_get_contents($inputPath);
$expectedHtml = file_get_contents($htmlPath);
$result = MarkdownExtra::defaultTransform($inputMarkdown);
MarkdownTestHelper::assertSameNormalized(
$expectedHtml,
$result,
"Markdown in $inputPath converts exactly to expected $htmlPath",
$xhtml
);
}
}

+ 21
- 0
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Amps and angle encoding.text View File

@ -0,0 +1,21 @@
AT&T has an ampersand in their name.
AT&amp;T is another way to write it.
This & that.
4 < 5.
6 > 5.
Here's a [link] [1] with an ampersand in the URL.
Here's a link with an amersand in the link text: [AT&T] [2].
Here's an inline [link](/script?foo=1&bar=2).
Here's an inline [link](</script?foo=1&bar=2>).
[1]: http://example.com/?foo=1&bar=2
[2]: http://att.com/ "AT&T"

+ 17
- 0
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Amps and angle encoding.xhtml View File

@ -0,0 +1,17 @@
<p>AT&amp;T has an ampersand in their name.</p>
<p>AT&amp;T is another way to write it.</p>
<p>This &amp; that.</p>
<p>4 &lt; 5.</p>
<p>6 > 5.</p>
<p>Here's a <a href="http://example.com/?foo=1&amp;bar=2">link</a> with an ampersand in the URL.</p>
<p>Here's a link with an amersand in the link text: <a href="http://att.com/" title="AT&amp;T">AT&amp;T</a>.</p>
<p>Here's an inline <a href="/script?foo=1&amp;bar=2">link</a>.</p>
<p>Here's an inline <a href="/script?foo=1&amp;bar=2">link</a>.</p>

+ 13
- 0
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Auto links.text View File

@ -0,0 +1,13 @@
Link: <http://example.com/>.
With an ampersand: <http://example.com/?foo=1&bar=2>
* In a list?
* <http://example.com/>
* It should.
> Blockquoted: <http://example.com/>
Auto-links should not occur here: `<http://example.com/>`
or here: <http://example.com/>

+ 18
- 0
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Auto links.xhtml View File

@ -0,0 +1,18 @@
<p>Link: <a href="http://example.com/">http://example.com/</a>.</p>
<p>With an ampersand: <a href="http://example.com/?foo=1&amp;bar=2">http://example.com/?foo=1&amp;bar=2</a></p>
<ul>
<li>In a list?</li>
<li><a href="http://example.com/">http://example.com/</a></li>
<li>It should.</li>
</ul>
<blockquote>
<p>Blockquoted: <a href="http://example.com/">http://example.com/</a></p>
</blockquote>
<p>Auto-links should not occur here: <code>&lt;http://example.com/&gt;</code></p>
<pre><code>or here: &lt;http://example.com/&gt;
</code></pre>

+ 120
- 0
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Backslash escapes.text View File

@ -0,0 +1,120 @@
These should all get escaped:
Backslash: \\
Backtick: \`
Asterisk: \*
Underscore: \_
Left brace: \{
Right brace: \}
Left bracket: \[
Right bracket: \]
Left paren: \(
Right paren: \)
Greater-than: \>
Hash: \#
Period: \.
Bang: \!
Plus: \+
Minus: \-
These should not, because they occur within a code block:
Backslash: \\
Backtick: \`
Asterisk: \*
Underscore: \_
Left brace: \{
Right brace: \}
Left bracket: \[
Right bracket: \]
Left paren: \(
Right paren: \)
Greater-than: \>
Hash: \#
Period: \.
Bang: \!
Plus: \+
Minus: \-
Nor should these, which occur in code spans:
Backslash: `\\`
Backtick: `` \` ``
Asterisk: `\*`
Underscore: `\_`
Left brace: `\{`
Right brace: `\}`
Left bracket: `\[`
Right bracket: `\]`
Left paren: `\(`
Right paren: `\)`
Greater-than: `\>`
Hash: `\#`
Period: `\.`
Bang: `\!`
Plus: `\+`
Minus: `\-`
These should get escaped, even though they're matching pairs for
other Markdown constructs:
\*asterisks\*
\_underscores\_
\`backticks\`
This is a code span with a literal backslash-backtick sequence: `` \` ``
This is a tag with unescaped backticks <span attr='`ticks`'>bar</span>.
This is a tag with backslashes <span attr='\\backslashes\\'>bar</span>.

+ 118
- 0
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Backslash escapes.xhtml View File

@ -0,0 +1,118 @@
<p>These should all get escaped:</p>
<p>Backslash: \</p>
<p>Backtick: `</p>
<p>Asterisk: *</p>
<p>Underscore: _</p>
<p>Left brace: {</p>
<p>Right brace: }</p>
<p>Left bracket: [</p>
<p>Right bracket: ]</p>
<p>Left paren: (</p>
<p>Right paren: )</p>
<p>Greater-than: ></p>
<p>Hash: #</p>
<p>Period: .</p>
<p>Bang: !</p>
<p>Plus: +</p>
<p>Minus: -</p>
<p>These should not, because they occur within a code block:</p>
<pre><code>Backslash: \\
Backtick: \`
Asterisk: \*
Underscore: \_
Left brace: \{
Right brace: \}
Left bracket: \[
Right bracket: \]
Left paren: \(
Right paren: \)
Greater-than: \&gt;
Hash: \#
Period: \.
Bang: \!
Plus: \+
Minus: \-
</code></pre>
<p>Nor should these, which occur in code spans:</p>
<p>Backslash: <code>\\</code></p>
<p>Backtick: <code>\`</code></p>
<p>Asterisk: <code>\*</code></p>
<p>Underscore: <code>\_</code></p>
<p>Left brace: <code>\{</code></p>
<p>Right brace: <code>\}</code></p>
<p>Left bracket: <code>\[</code></p>
<p>Right bracket: <code>\]</code></p>
<p>Left paren: <code>\(</code></p>
<p>Right paren: <code>\)</code></p>
<p>Greater-than: <code>\&gt;</code></p>
<p>Hash: <code>\#</code></p>
<p>Period: <code>\.</code></p>
<p>Bang: <code>\!</code></p>
<p>Plus: <code>\+</code></p>
<p>Minus: <code>\-</code></p>
<p>These should get escaped, even though they're matching pairs for
other Markdown constructs:</p>
<p>*asterisks*</p>
<p>_underscores_</p>
<p>`backticks`</p>
<p>This is a code span with a literal backslash-backtick sequence: <code>\`</code></p>
<p>This is a tag with unescaped backticks <span attr='`ticks`'>bar</span>.</p>
<p>This is a tag with backslashes <span attr='\\backslashes\\'>bar</span>.</p>

+ 11
- 0
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Blockquotes with code blocks.text View File

@ -0,0 +1,11 @@
> Example:
>
> sub status {
> print "working";
> }
>
> Or:
>
> sub status {
> return "working";
> }

+ 15
- 0
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Blockquotes with code blocks.xhtml View File

@ -0,0 +1,15 @@
<blockquote>
<p>Example:</p>
<pre><code>sub status {
print "working";
}
</code></pre>
<p>Or:</p>
<pre><code>sub status {
return "working";
}
</code></pre>
</blockquote>

+ 14
- 0
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Code Blocks.text View File

@ -0,0 +1,14 @@
code block on the first line
Regular text.
code block indented by spaces
Regular text.
the lines in this block
all contain trailing spaces
Regular Text.
code block on the last line

+ 18
- 0
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Code Blocks.xhtml View File

@ -0,0 +1,18 @@
<pre><code>code block on the first line
</code></pre>
<p>Regular text.</p>
<pre><code>code block indented by spaces
</code></pre>
<p>Regular text.</p>
<pre><code>the lines in this block
all contain trailing spaces
</code></pre>
<p>Regular Text.</p>
<pre><code>code block on the last line
</code></pre>

+ 5
- 0
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Code Spans.text View File

@ -0,0 +1,5 @@
`<test a="` content of attribute `">`
Fix for backticks within HTML tag: <span attr='`ticks`'>like this</span>
Here's how you put `` `backticks` `` in a code span.

+ 5
- 0
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Code Spans.xhtml View File

@ -0,0 +1,5 @@
<p><code>&lt;test a="</code> content of attribute <code>"&gt;</code></p>
<p>Fix for backticks within HTML tag: <span attr='`ticks`'>like this</span></p>
<p>Here's how you put <code>`backticks`</code> in a code span.</p>

+ 8
- 0
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Hard-wrapped paragraphs with list-like lines.text View File

@ -0,0 +1,8 @@
In Markdown 1.0.0 and earlier. Version
8. This line turns into a list item.
Because a hard-wrapped line in the
middle of a paragraph looked like a
list item.
Here's one with a bullet.
* criminey.

+ 8
- 0
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Hard-wrapped paragraphs with list-like lines.xhtml View File

@ -0,0 +1,8 @@
<p>In Markdown 1.0.0 and earlier. Version
8. This line turns into a list item.
Because a hard-wrapped line in the
middle of a paragraph looked like a
list item.</p>
<p>Here's one with a bullet.
* criminey.</p>

+ 67
- 0
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Horizontal rules.text View File

@ -0,0 +1,67 @@
Dashes:
---
---
---
---
---
- - -
- - -
- - -
- - -
- - -
Asterisks:
***
***
***
***
***
* * *
* * *
* * *
* * *
* * *
Underscores:
___
___
___
___
___
_ _ _
_ _ _
_ _ _
_ _ _
_ _ _

+ 71
- 0
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Horizontal rules.xhtml View File

@ -0,0 +1,71 @@
<p>Dashes:</p>
<hr />
<hr />
<hr />
<hr />
<pre><code>---
</code></pre>
<hr />
<hr />
<hr />
<hr />
<pre><code>- - -
</code></pre>
<p>Asterisks:</p>
<hr />
<hr />
<hr />
<hr />
<pre><code>***
</code></pre>
<hr />
<hr />
<hr />
<hr />
<pre><code>* * *
</code></pre>
<p>Underscores:</p>
<hr />
<hr />
<hr />
<hr />
<pre><code>___
</code></pre>
<hr />
<hr />
<hr />
<hr />
<pre><code>_ _ _
</code></pre>

+ 26
- 0
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Images.text View File

@ -0,0 +1,26 @@
![Alt text](/path/to/img.jpg)
![Alt text](/path/to/img.jpg "Optional title")
Inline within a paragraph: [alt text](/url/).
![alt text](/url/ "title preceded by two spaces")
![alt text](/url/ "title has spaces afterward" )
![alt text](</url/>)
![alt text](</url/> "with a title").
![Empty]()
![this is a stupid URL](http://example.com/(parens).jpg)
![alt text][foo]
[foo]: /url/
![alt text][bar]
[bar]: /url/ "Title here"

+ 21
- 0
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Images.xhtml View File

@ -0,0 +1,21 @@
<p><img src="/path/to/img.jpg" alt="Alt text" /></p>
<p><img src="/path/to/img.jpg" alt="Alt text" title="Optional title" /></p>
<p>Inline within a paragraph: <a href="/url/">alt text</a>.</p>
<p><img src="/url/" alt="alt text" title="title preceded by two spaces" /></p>
<p><img src="/url/" alt="alt text" title="title has spaces afterward" /></p>
<p><img src="/url/" alt="alt text" /></p>
<p><img src="/url/" alt="alt text" title="with a title" />.</p>
<p><img src="" alt="Empty" /></p>
<p><img src="http://example.com/(parens).jpg" alt="this is a stupid URL" /></p>
<p><img src="/url/" alt="alt text" /></p>
<p><img src="/url/" alt="alt text" title="Title here" /></p>

+ 30
- 0
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Inline HTML (Advanced).text View File

@ -0,0 +1,30 @@
Simple block on one line:
<div>foo</div>
And nested without indentation:
<div>
<div>
<div>
foo
</div>
<div style=">"/>
</div>
<div>bar</div>
</div>
And with attributes:
<div>
<div id="foo">
</div>
</div>
This was broken in 1.0.2b7:
<div class="inlinepage">
<div class="toggleableend">
foo
</div>
</div>

+ 30
- 0
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Inline HTML (Advanced).xhtml View File

@ -0,0 +1,30 @@
<p>Simple block on one line:</p>
<div>foo</div>
<p>And nested without indentation:</p>
<div>
<div>
<div>
foo
</div>
<div style=">"/>
</div>
<div>bar</div>
</div>
<p>And with attributes:</p>
<div>
<div id="foo">
</div>
</div>
<p>This was broken in 1.0.2b7:</p>
<div class="inlinepage">
<div class="toggleableend">
foo
</div>
</div>

+ 72
- 0
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Inline HTML (Simple).html View File

@ -0,0 +1,72 @@
<p>Here's a simple block:</p>
<div>
foo
</div>
<p>This should be a code block, though:</p>
<pre><code>&lt;div&gt;
foo
&lt;/div&gt;
</code></pre>
<p>As should this:</p>
<pre><code>&lt;div&gt;foo&lt;/div&gt;
</code></pre>
<p>Now, nested:</p>
<div>
<div>
<div>
foo
</div>
</div>
</div>
<p>This should just be an HTML comment:</p>
<!-- Comment -->
<p>Multiline:</p>
<!--
Blah
Blah
-->
<p>Code block:</p>
<pre><code>&lt;!-- Comment --&gt;
</code></pre>
<p>Just plain comment, with trailing spaces on the line:</p>
<!-- foo -->
<p>Code:</p>
<pre><code>&lt;hr /&gt;
</code></pre>
<p>Hr's:</p>
<hr>
<hr/>
<hr />
<hr>
<hr/>
<hr />
<hr class="foo" id="bar" />
<hr class="foo" id="bar"/>
<hr class="foo" id="bar" >

+ 69
- 0
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Inline HTML (Simple).text View File

@ -0,0 +1,69 @@
Here's a simple block:
<div>
foo
</div>
This should be a code block, though:
<div>
foo
</div>
As should this:
<div>foo</div>
Now, nested:
<div>
<div>
<div>
foo
</div>
</div>
</div>
This should just be an HTML comment:
<!-- Comment -->
Multiline:
<!--
Blah
Blah
-->
Code block:
<!-- Comment -->
Just plain comment, with trailing spaces on the line:
<!-- foo -->
Code:
<hr />
Hr's:
<hr>
<hr/>
<hr />
<hr>
<hr/>
<hr />
<hr class="foo" id="bar" />
<hr class="foo" id="bar"/>
<hr class="foo" id="bar" >

+ 13
- 0
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Inline HTML comments.html View File

@ -0,0 +1,13 @@
<p>Paragraph one.</p>
<!-- This is a simple comment -->
<!--
This is another comment.
-->
<p>Paragraph two.</p>
<!-- one comment block -- -- with two comments -->
<p>The end.</p>

+ 13
- 0
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Inline HTML comments.text View File

@ -0,0 +1,13 @@
Paragraph one.
<!-- This is a simple comment -->
<!--
This is another comment.
-->
Paragraph two.
<!-- one comment block -- -- with two comments -->
The end.

+ 24
- 0
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Links, inline style.text View File

@ -0,0 +1,24 @@
Just a [URL](/url/).
[URL and title](/url/ "title").
[URL and title](/url/ "title preceded by two spaces").
[URL and title](/url/ "title preceded by a tab").
[URL and title](/url/ "title has spaces afterward" ).
[URL wrapped in angle brackets](</url/>).
[URL w/ angle brackets + title](</url/> "Here's the title").
[Empty]().
[With parens in the URL](http://en.wikipedia.org/wiki/WIMP_(computing))
(With outer parens and [parens in url](/foo(bar)))
[With parens in the URL](/foo(bar) "and a title")
(With outer parens and [parens in url](/foo(bar) "and a title"))

+ 23
- 0
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Links, inline style.xhtml View File

@ -0,0 +1,23 @@
<p>Just a <a href="/url/">URL</a>.</p>
<p><a href="/url/" title="title">URL and title</a>.</p>
<p><a href="/url/" title="title preceded by two spaces">URL and title</a>.</p>
<p><a href="/url/" title="title preceded by a tab">URL and title</a>.</p>
<p><a href="/url/" title="title has spaces afterward">URL and title</a>.</p>
<p><a href="/url/">URL wrapped in angle brackets</a>.</p>
<p><a href="/url/" title="Here's the title">URL w/ angle brackets + title</a>.</p>
<p><a href="">Empty</a>.</p>
<p><a href="http://en.wikipedia.org/wiki/WIMP_(computing)">With parens in the URL</a></p>
<p>(With outer parens and <a href="/foo(bar)">parens in url</a>)</p>
<p><a href="/foo(bar)" title="and a title">With parens in the URL</a></p>
<p>(With outer parens and <a href="/foo(bar)" title="and a title">parens in url</a>)</p>

+ 71
- 0
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Links, reference style.text View File

@ -0,0 +1,71 @@
Foo [bar] [1].
Foo [bar][1].
Foo [bar]
[1].
[1]: /url/ "Title"
With [embedded [brackets]] [b].
Indented [once][].
Indented [twice][].
Indented [thrice][].
Indented [four][] times.
[once]: /url
[twice]: /url
[thrice]: /url
[four]: /url
[b]: /url/
* * *
[this] [this] should work
So should [this][this].
And [this] [].
And [this][].
And [this].
But not [that] [].
Nor [that][].
Nor [that].
[Something in brackets like [this][] should work]
[Same with [this].]
In this case, [this](/somethingelse/) points to something else.
Backslashing should suppress \[this] and [this\].
[this]: foo
* * *
Here's one where the [link
breaks] across lines.
Here's another where the [link
breaks] across lines, but with a line-ending space.
[link breaks]: /url/

+ 52
- 0
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Links, reference style.xhtml View File

@ -0,0 +1,52 @@
<p>Foo <a href="/url/" title="Title">bar</a>.</p>
<p>Foo <a href="/url/" title="Title">bar</a>.</p>
<p>Foo <a href="/url/" title="Title">bar</a>.</p>
<p>With <a href="/url/">embedded [brackets]</a>.</p>
<p>Indented <a href="/url">once</a>.</p>
<p>Indented <a href="/url">twice</a>.</p>
<p>Indented <a href="/url">thrice</a>.</p>
<p>Indented [four][] times.</p>
<pre><code>[four]: /url
</code></pre>
<hr />
<p><a href="foo">this</a> should work</p>
<p>So should <a href="foo">this</a>.</p>
<p>And <a href="foo">this</a>.</p>
<p>And <a href="foo">this</a>.</p>
<p>And <a href="foo">this</a>.</p>
<p>But not [that] [].</p>
<p>Nor [that][].</p>
<p>Nor [that].</p>
<p>[Something in brackets like <a href="foo">this</a> should work]</p>
<p>[Same with <a href="foo">this</a>.]</p>
<p>In this case, <a href="/somethingelse/">this</a> points to something else.</p>
<p>Backslashing should suppress [this] and [this].</p>
<hr />
<p>Here's one where the <a href="/url/">link
breaks</a> across lines.</p>
<p>Here's another where the <a href="/url/">link
breaks</a> across lines, but with a line-ending space.</p>

+ 20
- 0
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Links, shortcut references.text View File

@ -0,0 +1,20 @@
This is the [simple case].
[simple case]: /simple
This one has a [line
break].
This one has a [line
break] with a line-ending space.
[line break]: /foo
[this] [that] and the [other]
[this]: /this
[that]: /that
[other]: /other

+ 9
- 0
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Links, shortcut references.xhtml View File

@ -0,0 +1,9 @@
<p>This is the <a href="/simple">simple case</a>.</p>
<p>This one has a <a href="/foo">line
break</a>.</p>
<p>This one has a <a href="/foo">line
break</a> with a line-ending space.</p>
<p><a href="/that">this</a> and the <a href="/other">other</a></p>

+ 7
- 0
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Literal quotes in titles.text View File

@ -0,0 +1,7 @@
Foo [bar][].
Foo [bar](/url/ "Title with "quotes" inside").
[bar]: /url/ "Title with "quotes" inside"

+ 3
- 0
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Literal quotes in titles.xhtml View File

@ -0,0 +1,3 @@
<p>Foo <a href="/url/" title="Title with &quot;quotes&quot; inside">bar</a>.</p>
<p>Foo <a href="/url/" title="Title with &quot;quotes&quot; inside">bar</a>.</p>

+ 306
- 0
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Markdown Documentation - Basics.text View File

@ -0,0 +1,306 @@
Markdown: Basics
================
<ul id="ProjectSubmenu">
<li><a href="/projects/markdown/" title="Markdown Project Page">Main</a></li>
<li><a class="selected" title="Markdown Basics">Basics</a></li>
<li><a href="/projects/markdown/syntax" title="Markdown Syntax Documentation">Syntax</a></li>
<li><a href="/projects/markdown/license" title="Pricing and License Information">License</a></li>
<li><a href="/projects/markdown/dingus" title="Online Markdown Web Form">Dingus</a></li>
</ul>
Getting the Gist of Markdown's Formatting Syntax
------------------------------------------------
This page offers a brief overview of what it's like to use Markdown.
The [syntax page] [s] provides complete, detailed documentation for
every feature, but Markdown should be very easy to pick up simply by
looking at a few examples of it in action. The examples on this page
are written in a before/after style, showing example syntax and the
HTML output produced by Markdown.
It's also helpful to simply try Markdown out; the [Dingus] [d] is a
web application that allows you type your own Markdown-formatted text
and translate it to XHTML.
**Note:** This document is itself written using Markdown; you
can [see the source for it by adding '.text' to the URL] [src].
[s]: /projects/markdown/syntax "Markdown Syntax"
[d]: /projects/markdown/dingus "Markdown Dingus"
[src]: /projects/markdown/basics.text
## Paragraphs, Headers, Blockquotes ##
A paragraph is simply one or more consecutive lines of text, separated
by one or more blank lines. (A blank line is any line that looks like a
blank line -- a line containing nothing spaces or tabs is considered
blank.) Normal paragraphs should not be intended with spaces or tabs.
Markdown offers two styles of headers: *Setext* and *atx*.
Setext-style headers for `<h1>` and `<h2>` are created by
"underlining" with equal signs (`=`) and hyphens (`-`), respectively.
To create an atx-style header, you put 1-6 hash marks (`#`) at the
beginning of the line -- the number of hashes equals the resulting
HTML header level.
Blockquotes are indicated using email-style '`>`' angle brackets.
Markdown:
A First Level Header
====================
A Second Level Header
---------------------
Now is the time for all good men to come to
the aid of their country. This is just a
regular paragraph.
The quick brown fox jumped over the lazy
dog's back.
### Header 3
> This is a blockquote.
>
> This is the second paragraph in the blockquote.
>
> ## This is an H2 in a blockquote
Output:
<h1>A First Level Header</h1>
<h2>A Second Level Header</h2>
<p>Now is the time for all good men to come to
the aid of their country. This is just a
regular paragraph.</p>
<p>The quick brown fox jumped over the lazy
dog's back.</p>
<h3>Header 3</h3>
<blockquote>
<p>This is a blockquote.</p>
<p>This is the second paragraph in the blockquote.</p>
<h2>This is an H2 in a blockquote</h2>
</blockquote>
### Phrase Emphasis ###
Markdown uses asterisks and underscores to indicate spans of emphasis.
Markdown:
Some of these words *are emphasized*.
Some of these words _are emphasized also_.
Use two asterisks for **strong emphasis**.
Or, if you prefer, __use two underscores instead__.
Output:
<p>Some of these words <em>are emphasized</em>.
Some of these words <em>are emphasized also</em>.</p>
<p>Use two asterisks for <strong>strong emphasis</strong>.
Or, if you prefer, <strong>use two underscores instead</strong>.</p>
## Lists ##
Unordered (bulleted) lists use asterisks, pluses, and hyphens (`*`,
`+`, and `-`) as list markers. These three markers are
interchangable; this:
* Candy.
* Gum.
* Booze.
this:
+ Candy.
+ Gum.
+ Booze.
and this:
- Candy.
- Gum.
- Booze.
all produce the same output:
<ul>
<li>Candy.</li>
<li>Gum.</li>
<li>Booze.</li>
</ul>
Ordered (numbered) lists use regular numbers, followed by periods, as
list markers:
1. Red
2. Green
3. Blue
Output:
<ol>
<li>Red</li>
<li>Green</li>
<li>Blue</li>
</ol>
If you put blank lines between items, you'll get `<p>` tags for the
list item text. You can create multi-paragraph list items by indenting
the paragraphs by 4 spaces or 1 tab:
* A list item.
With multiple paragraphs.
* Another item in the list.
Output:
<ul>
<li><p>A list item.</p>
<p>With multiple paragraphs.</p></li>
<li><p>Another item in the list.</p></li>
</ul>
### Links ###
Markdown supports two styles for creating links: *inline* and
*reference*. With both styles, you use square brackets to delimit the
text you want to turn into a link.
Inline-style links use parentheses immediately after the link text.
For example:
This is an [example link](http://example.com/).
Output:
<p>This is an <a href="http://example.com/">
example link</a>.</p>
Optionally, you may include a title attribute in the parentheses:
This is an [example link](http://example.com/ "With a Title").
Output:
<p>This is an <a href="http://example.com/" title="With a Title">
example link</a>.</p>
Reference-style links allow you to refer to your links by names, which
you define elsewhere in your document:
I get 10 times more traffic from [Google][1] than from
[Yahoo][2] or [MSN][3].
[1]: http://google.com/ "Google"
[2]: http://search.yahoo.com/ "Yahoo Search"
[3]: http://search.msn.com/ "MSN Search"
Output:
<p>I get 10 times more traffic from <a href="http://google.com/"
title="Google">Google</a> than from <a href="http://search.yahoo.com/"
title="Yahoo Search">Yahoo</a> or <a href="http://search.msn.com/"
title="MSN Search">MSN</a>.</p>
The title attribute is optional. Link names may contain letters,
numbers and spaces, but are *not* case sensitive:
I start my morning with a cup of coffee and
[The New York Times][NY Times].
[ny times]: http://www.nytimes.com/
Output:
<p>I start my morning with a cup of coffee and
<a href="http://www.nytimes.com/">The New York Times</a>.</p>
### Images ###
Image syntax is very much like link syntax.
Inline (titles are optional):
![alt text](/path/to/img.jpg "Title")
Reference-style:
![alt text][id]
[id]: /path/to/img.jpg "Title"
Both of the above examples produce the same output:
<img src="/path/to/img.jpg" alt="alt text" title="Title" />
### Code ###
In a regular paragraph, you can create code span by wrapping text in
backtick quotes. Any ampersands (`&`) and angle brackets (`<` or
`>`) will automatically be translated into HTML entities. This makes
it easy to use Markdown to write about HTML example code:
I strongly recommend against using any `<blink>` tags.
I wish SmartyPants used named entities like `&mdash;`
instead of decimal-encoded entites like `&#8212;`.
Output:
<p>I strongly recommend against using any
<code>&lt;blink&gt;</code> tags.</p>
<p>I wish SmartyPants used named entities like
<code>&amp;mdash;</code> instead of decimal-encoded
entites like <code>&amp;#8212;</code>.</p>
To specify an entire block of pre-formatted code, indent every line of
the block by 4 spaces or 1 tab. Just like with code spans, `&`, `<`,
and `>` characters will be escaped automatically.
Markdown:
If you want your page to validate under XHTML 1.0 Strict,
you've got to put paragraph tags in your blockquotes:
<blockquote>
<p>For example.</p>
</blockquote>
Output:
<p>If you want your page to validate under XHTML 1.0 Strict,
you've got to put paragraph tags in your blockquotes:</p>
<pre><code>&lt;blockquote&gt;
&lt;p&gt;For example.&lt;/p&gt;
&lt;/blockquote&gt;
</code></pre>

+ 314
- 0
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Markdown Documentation - Basics.xhtml View File

@ -0,0 +1,314 @@
<h1>Markdown: Basics</h1>
<ul id="ProjectSubmenu">
<li><a href="/projects/markdown/" title="Markdown Project Page">Main</a></li>
<li><a class="selected" title="Markdown Basics">Basics</a></li>
<li><a href="/projects/markdown/syntax" title="Markdown Syntax Documentation">Syntax</a></li>
<li><a href="/projects/markdown/license" title="Pricing and License Information">License</a></li>
<li><a href="/projects/markdown/dingus" title="Online Markdown Web Form">Dingus</a></li>
</ul>
<h2>Getting the Gist of Markdown's Formatting Syntax</h2>
<p>This page offers a brief overview of what it's like to use Markdown.
The <a href="/projects/markdown/syntax" title="Markdown Syntax">syntax page</a> provides complete, detailed documentation for
every feature, but Markdown should be very easy to pick up simply by
looking at a few examples of it in action. The examples on this page
are written in a before/after style, showing example syntax and the
HTML output produced by Markdown.</p>
<p>It's also helpful to simply try Markdown out; the <a href="/projects/markdown/dingus" title="Markdown Dingus">Dingus</a> is a
web application that allows you type your own Markdown-formatted text
and translate it to XHTML.</p>
<p><strong>Note:</strong> This document is itself written using Markdown; you
can <a href="/projects/markdown/basics.text">see the source for it by adding '.text' to the URL</a>.</p>
<h2>Paragraphs, Headers, Blockquotes</h2>
<p>A paragraph is simply one or more consecutive lines of text, separated
by one or more blank lines. (A blank line is any line that looks like a
blank line -- a line containing nothing spaces or tabs is considered
blank.) Normal paragraphs should not be intended with spaces or tabs.</p>
<p>Markdown offers two styles of headers: <em>Setext</em> and <em>atx</em>.
Setext-style headers for <code>&lt;h1&gt;</code> and <code>&lt;h2&gt;</code> are created by
"underlining" with equal signs (<code>=</code>) and hyphens (<code>-</code>), respectively.
To create an atx-style header, you put 1-6 hash marks (<code>#</code>) at the
beginning of the line -- the number of hashes equals the resulting
HTML header level.</p>
<p>Blockquotes are indicated using email-style '<code>&gt;</code>' angle brackets.</p>
<p>Markdown:</p>
<pre><code>A First Level Header
====================
A Second Level Header
---------------------
Now is the time for all good men to come to
the aid of their country. This is just a
regular paragraph.
The quick brown fox jumped over the lazy
dog's back.
### Header 3
&gt; This is a blockquote.
&gt;
&gt; This is the second paragraph in the blockquote.
&gt;
&gt; ## This is an H2 in a blockquote
</code></pre>
<p>Output:</p>
<pre><code>&lt;h1&gt;A First Level Header&lt;/h1&gt;
&lt;h2&gt;A Second Level Header&lt;/h2&gt;
&lt;p&gt;Now is the time for all good men to come to
the aid of their country. This is just a
regular paragraph.&lt;/p&gt;
&lt;p&gt;The quick brown fox jumped over the lazy
dog's back.&lt;/p&gt;
&lt;h3&gt;Header 3&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;This is a blockquote.&lt;/p&gt;
&lt;p&gt;This is the second paragraph in the blockquote.&lt;/p&gt;
&lt;h2&gt;This is an H2 in a blockquote&lt;/h2&gt;
&lt;/blockquote&gt;
</code></pre>
<h3>Phrase Emphasis</h3>
<p>Markdown uses asterisks and underscores to indicate spans of emphasis.</p>
<p>Markdown:</p>
<pre><code>Some of these words *are emphasized*.
Some of these words _are emphasized also_.
Use two asterisks for **strong emphasis**.
Or, if you prefer, __use two underscores instead__.
</code></pre>
<p>Output:</p>
<pre><code>&lt;p&gt;Some of these words &lt;em&gt;are emphasized&lt;/em&gt;.
Some of these words &lt;em&gt;are emphasized also&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Use two asterisks for &lt;strong&gt;strong emphasis&lt;/strong&gt;.
Or, if you prefer, &lt;strong&gt;use two underscores instead&lt;/strong&gt;.&lt;/p&gt;
</code></pre>
<h2>Lists</h2>
<p>Unordered (bulleted) lists use asterisks, pluses, and hyphens (<code>*</code>,
<code>+</code>, and <code>-</code>) as list markers. These three markers are
interchangable; this:</p>
<pre><code>* Candy.
* Gum.
* Booze.
</code></pre>
<p>this:</p>
<pre><code>+ Candy.
+ Gum.
+ Booze.
</code></pre>
<p>and this:</p>
<pre><code>- Candy.
- Gum.
- Booze.
</code></pre>
<p>all produce the same output:</p>
<pre><code>&lt;ul&gt;
&lt;li&gt;Candy.&lt;/li&gt;
&lt;li&gt;Gum.&lt;/li&gt;
&lt;li&gt;Booze.&lt;/li&gt;
&lt;/ul&gt;
</code></pre>
<p>Ordered (numbered) lists use regular numbers, followed by periods, as
list markers:</p>
<pre><code>1. Red
2. Green
3. Blue
</code></pre>
<p>Output:</p>
<pre><code>&lt;ol&gt;
&lt;li&gt;Red&lt;/li&gt;
&lt;li&gt;Green&lt;/li&gt;
&lt;li&gt;Blue&lt;/li&gt;
&lt;/ol&gt;
</code></pre>
<p>If you put blank lines between items, you'll get <code>&lt;p&gt;</code> tags for the
list item text. You can create multi-paragraph list items by indenting
the paragraphs by 4 spaces or 1 tab:</p>
<pre><code>* A list item.
With multiple paragraphs.
* Another item in the list.
</code></pre>
<p>Output:</p>
<pre><code>&lt;ul&gt;
&lt;li&gt;&lt;p&gt;A list item.&lt;/p&gt;
&lt;p&gt;With multiple paragraphs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Another item in the list.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
</code></pre>
<h3>Links</h3>
<p>Markdown supports two styles for creating links: <em>inline</em> and
<em>reference</em>. With both styles, you use square brackets to delimit the
text you want to turn into a link.</p>
<p>Inline-style links use parentheses immediately after the link text.
For example:</p>
<pre><code>This is an [example link](http://example.com/).
</code></pre>
<p>Output:</p>
<pre><code>&lt;p&gt;This is an &lt;a href="http://example.com/"&gt;
example link&lt;/a&gt;.&lt;/p&gt;
</code></pre>
<p>Optionally, you may include a title attribute in the parentheses:</p>
<pre><code>This is an [example link](http://example.com/ "With a Title").
</code></pre>
<p>Output:</p>
<pre><code>&lt;p&gt;This is an &lt;a href="http://example.com/" title="With a Title"&gt;
example link&lt;/a&gt;.&lt;/p&gt;
</code></pre>
<p>Reference-style links allow you to refer to your links by names, which
you define elsewhere in your document:</p>
<pre><code>I get 10 times more traffic from [Google][1] than from
[Yahoo][2] or [MSN][3].
[1]: http://google.com/ "Google"
[2]: http://search.yahoo.com/ "Yahoo Search"
[3]: http://search.msn.com/ "MSN Search"
</code></pre>
<p>Output:</p>
<pre><code>&lt;p&gt;I get 10 times more traffic from &lt;a href="http://google.com/"
title="Google"&gt;Google&lt;/a&gt; than from &lt;a href="http://search.yahoo.com/"
title="Yahoo Search"&gt;Yahoo&lt;/a&gt; or &lt;a href="http://search.msn.com/"
title="MSN Search"&gt;MSN&lt;/a&gt;.&lt;/p&gt;
</code></pre>
<p>The title attribute is optional. Link names may contain letters,
numbers and spaces, but are <em>not</em> case sensitive:</p>
<pre><code>I start my morning with a cup of coffee and
[The New York Times][NY Times].
[ny times]: http://www.nytimes.com/
</code></pre>
<p>Output:</p>
<pre><code>&lt;p&gt;I start my morning with a cup of coffee and
&lt;a href="http://www.nytimes.com/"&gt;The New York Times&lt;/a&gt;.&lt;/p&gt;
</code></pre>
<h3>Images</h3>
<p>Image syntax is very much like link syntax.</p>
<p>Inline (titles are optional):</p>
<pre><code>![alt text](/path/to/img.jpg "Title")
</code></pre>
<p>Reference-style:</p>
<pre><code>![alt text][id]
[id]: /path/to/img.jpg "Title"
</code></pre>
<p>Both of the above examples produce the same output:</p>
<pre><code>&lt;img src="/path/to/img.jpg" alt="alt text" title="Title" /&gt;
</code></pre>
<h3>Code</h3>
<p>In a regular paragraph, you can create code span by wrapping text in
backtick quotes. Any ampersands (<code>&amp;</code>) and angle brackets (<code>&lt;</code> or
<code>&gt;</code>) will automatically be translated into HTML entities. This makes
it easy to use Markdown to write about HTML example code:</p>
<pre><code>I strongly recommend against using any `&lt;blink&gt;` tags.
I wish SmartyPants used named entities like `&amp;mdash;`
instead of decimal-encoded entites like `&amp;#8212;`.
</code></pre>
<p>Output:</p>
<pre><code>&lt;p&gt;I strongly recommend against using any
&lt;code&gt;&amp;lt;blink&amp;gt;&lt;/code&gt; tags.&lt;/p&gt;
&lt;p&gt;I wish SmartyPants used named entities like
&lt;code&gt;&amp;amp;mdash;&lt;/code&gt; instead of decimal-encoded
entites like &lt;code&gt;&amp;amp;#8212;&lt;/code&gt;.&lt;/p&gt;
</code></pre>
<p>To specify an entire block of pre-formatted code, indent every line of
the block by 4 spaces or 1 tab. Just like with code spans, <code>&amp;</code>, <code>&lt;</code>,
and <code>&gt;</code> characters will be escaped automatically.</p>
<p>Markdown:</p>
<pre><code>If you want your page to validate under XHTML 1.0 Strict,
you've got to put paragraph tags in your blockquotes:
&lt;blockquote&gt;
&lt;p&gt;For example.&lt;/p&gt;
&lt;/blockquote&gt;
</code></pre>
<p>Output:</p>
<pre><code>&lt;p&gt;If you want your page to validate under XHTML 1.0 Strict,
you've got to put paragraph tags in your blockquotes:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;blockquote&amp;gt;
&amp;lt;p&amp;gt;For example.&amp;lt;/p&amp;gt;
&amp;lt;/blockquote&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
</code></pre>

+ 888
- 0
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Markdown Documentation - Syntax.text View File

@ -0,0 +1,888 @@
Markdown: Syntax
================
<ul id="ProjectSubmenu">
<li><a href="/projects/markdown/" title="Markdown Project Page">Main</a></li>
<li><a href="/projects/markdown/basics" title="Markdown Basics">Basics</a></li>
<li><a class="selected" title="Markdown Syntax Documentation">Syntax</a></li>
<li><a href="/projects/markdown/license" title="Pricing and License Information">License</a></li>
<li><a href="/projects/markdown/dingus" title="Online Markdown Web Form">Dingus</a></li>
</ul>
* [Overview](#overview)
* [Philosophy](#philosophy)
* [Inline HTML](#html)
* [Automatic Escaping for Special Characters](#autoescape)
* [Block Elements](#block)
* [Paragraphs and Line Breaks](#p)
* [Headers](#header)
* [Blockquotes](#blockquote)
* [Lists](#list)
* [Code Blocks](#precode)
* [Horizontal Rules](#hr)
* [Span Elements](#span)
* [Links](#link)
* [Emphasis](#em)
* [Code](#code)
* [Images](#img)
* [Miscellaneous](#misc)
* [Backslash Escapes](#backslash)
* [Automatic Links](#autolink)
**Note:** This document is itself written using Markdown; you
can [see the source for it by adding '.text' to the URL][src].
[src]: /projects/markdown/syntax.text
* * *
<h2 id="overview">Overview</h2>
<h3 id="philosophy">Philosophy</h3>
Markdown is intended to be as easy-to-read and easy-to-write as is feasible.
Readability, however, is emphasized above all else. A Markdown-formatted
document should be publishable as-is, as plain text, without looking
like it's been marked up with tags or formatting instructions. While
Markdown's syntax has been influenced by several existing text-to-HTML
filters -- including [Setext] [1], [atx] [2], [Textile] [3], [reStructuredText] [4],
[Grutatext] [5], and [EtText] [6] -- the single biggest source of
inspiration for Markdown's syntax is the format of plain text email.
[1]: http://docutils.sourceforge.net/mirror/setext.html
[2]: http://www.aaronsw.com/2002/atx/
[3]: http://textism.com/tools/textile/
[4]: http://docutils.sourceforge.net/rst.html
[5]: http://www.triptico.com/software/grutatxt.html
[6]: http://ettext.taint.org/doc/
To this end, Markdown's syntax is comprised entirely of punctuation
characters, which punctuation characters have been carefully chosen so
as to look like what they mean. E.g., asterisks around a word actually
look like \*emphasis\*. Markdown lists look like, well, lists. Even
blockquotes look like quoted passages of text, assuming you've ever
used email.
<h3 id="html">Inline HTML</h3>
Markdown's syntax is intended for one purpose: to be used as a
format for *writing* for the web.
Markdown is not a replacement for HTML, or even close to it. Its
syntax is very small, corresponding only to a very small subset of
HTML tags. The idea is *not* to create a syntax that makes it easier
to insert HTML tags. In my opinion, HTML tags are already easy to
insert. The idea for Markdown is to make it easy to read, write, and
edit prose. HTML is a *publishing* format; Markdown is a *writing*
format. Thus, Markdown's formatting syntax only addresses issues that
can be conveyed in plain text.
For any markup that is not covered by Markdown's syntax, you simply
use HTML itself. There's no need to preface it or delimit it to
indicate that you're switching from Markdown to HTML; you just use
the tags.
The only restrictions are that block-level HTML elements -- e.g. `<div>`,
`<table>`, `<pre>`, `<p>`, etc. -- must be separated from surrounding
content by blank lines, and the start and end tags of the block should
not be indented with tabs or spaces. Markdown is smart enough not
to add extra (unwanted) `<p>` tags around HTML block-level tags.
For example, to add an HTML table to a Markdown article:
This is a regular paragraph.
<table>
<tr>
<td>Foo</td>
</tr>
</table>
This is another regular paragraph.
Note that Markdown formatting syntax is not processed within block-level
HTML tags. E.g., you can't use Markdown-style `*emphasis*` inside an
HTML block.
Span-level HTML tags -- e.g. `<span>`, `<cite>`, or `<del>` -- can be
used anywhere in a Markdown paragraph, list item, or header. If you
want, you can even use HTML tags instead of Markdown formatting; e.g. if
you'd prefer to use HTML `<a>` or `<img>` tags instead of Markdown's
link or image syntax, go right ahead.
Unlike block-level HTML tags, Markdown syntax *is* processed within
span-level tags.
<h3 id="autoescape">Automatic Escaping for Special Characters</h3>
In HTML, there are two characters that demand special treatment: `<`
and `&`. Left angle brackets are used to start tags; ampersands are
used to denote HTML entities. If you want to use them as literal
characters, you must escape them as entities, e.g. `&lt;`, and
`&amp;`.
Ampersands in particular are bedeviling for web writers. If you want to
write about 'AT&T', you need to write '`AT&amp;T`'. You even need to
escape ampersands within URLs. Thus, if you want to link to:
http://images.google.com/images?num=30&q=larry+bird
you need to encode the URL as:
http://images.google.com/images?num=30&amp;q=larry+bird
in your anchor tag `href` attribute. Needless to say, this is easy to
forget, and is probably the single most common source of HTML validation
errors in otherwise well-marked-up web sites.
Markdown allows you to use these characters naturally, taking care of
all the necessary escaping for you. If you use an ampersand as part of
an HTML entity, it remains unchanged; otherwise it will be translated
into `&amp;`.
So, if you want to include a copyright symbol in your article, you can write:
&copy;
and Markdown will leave it alone. But if you write:
AT&T
Markdown will translate it to:
AT&amp;T
Similarly, because Markdown supports [inline HTML](#html), if you use
angle brackets as delimiters for HTML tags, Markdown will treat them as
such. But if you write:
4 < 5
Markdown will translate it to:
4 &lt; 5
However, inside Markdown code spans and blocks, angle brackets and
ampersands are *always* encoded automatically. This makes it easy to use
Markdown to write about HTML code. (As opposed to raw HTML, which is a
terrible format for writing about HTML syntax, because every single `<`
and `&` in your example code needs to be escaped.)
* * *
<h2 id="block">Block Elements</h2>
<h3 id="p">Paragraphs and Line Breaks</h3>
A paragraph is simply one or more consecutive lines of text, separated
by one or more blank lines. (A blank line is any line that looks like a
blank line -- a line containing nothing but spaces or tabs is considered
blank.) Normal paragraphs should not be intended with spaces or tabs.
The implication of the "one or more consecutive lines of text" rule is
that Markdown supports "hard-wrapped" text paragraphs. This differs
significantly from most other text-to-HTML formatters (including Movable
Type's "Convert Line Breaks" option) which translate every line break
character in a paragraph into a `<br />` tag.
When you *do* want to insert a `<br />` break tag using Markdown, you
end a line with two or more spaces, then type return.
Yes, this takes a tad more effort to create a `<br />`, but a simplistic
"every line break is a `<br />`" rule wouldn't work for Markdown.
Markdown's email-style [blockquoting][bq] and multi-paragraph [list items][l]
work best -- and look better -- when you format them with hard breaks.
[bq]: #blockquote
[l]: #list
<h3 id="header">Headers</h3>
Markdown supports two styles of headers, [Setext] [1] and [atx] [2].
Setext-style headers are "underlined" using equal signs (for first-level
headers) and dashes (for second-level headers). For example:
This is an H1
=============
This is an H2
-------------
Any number of underlining `=`'s or `-`'s will work.
Atx-style headers use 1-6 hash characters at the start of the line,
corresponding to header levels 1-6. For example:
# This is an H1
## This is an H2
###### This is an H6
Optionally, you may "close" atx-style headers. This is purely
cosmetic -- you can use this if you think it looks better. The
closing hashes don't even need to match the number of hashes
used to open the header. (The number of opening hashes
determines the header level.) :
# This is an H1 #
## This is an H2 ##
### This is an H3 ######
<h3 id="blockquote">Blockquotes</h3>
Markdown uses email-style `>` characters for blockquoting. If you're
familiar with quoting passages of text in an email message, then you
know how to create a blockquote in Markdown. It looks best if you hard
wrap the text and put a `>` before every line:
> This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
> consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
> Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
>
> Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
> id sem consectetuer libero luctus adipiscing.
Markdown allows you to be lazy and only put the `>` before the first
line of a hard-wrapped paragraph:
> This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
> Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
id sem consectetuer libero luctus adipiscing.
Blockquotes can be nested (i.e. a blockquote-in-a-blockquote) by
adding additional levels of `>`:
> This is the first level of quoting.
>
> > This is nested blockquote.
>
> Back to the first level.
Blockquotes can contain other Markdown elements, including headers, lists,
and code blocks:
> ## This is a header.
>
> 1. This is the first list item.
> 2. This is the second list item.
>
> Here's some example code:
>
> return shell_exec("echo $input | $markdown_script");
Any decent text editor should make email-style quoting easy. For
example, with BBEdit, you can make a selection and choose Increase
Quote Level from the Text menu.
<h3 id="list">Lists</h3>
Markdown supports ordered (numbered) and unordered (bulleted) lists.
Unordered lists use asterisks, pluses, and hyphens -- interchangably
-- as list markers:
* Red
* Green
* Blue
is equivalent to:
+ Red
+ Green
+ Blue
and:
- Red
- Green
- Blue
Ordered lists use numbers followed by periods:
1. Bird
2. McHale
3. Parish
It's important to note that the actual numbers you use to mark the
list have no effect on the HTML output Markdown produces. The HTML
Markdown produces from the above list is:
<ol>
<li>Bird</li>
<li>McHale</li>
<li>Parish</li>
</ol>
If you instead wrote the list in Markdown like this:
1. Bird
1. McHale
1. Parish
or even:
3. Bird
1. McHale
8. Parish
you'd get the exact same HTML output. The point is, if you want to,
you can use ordinal numbers in your ordered Markdown lists, so that
the numbers in your source match the numbers in your published HTML.
But if you want to be lazy, you don't have to.
If you do use lazy list numbering, however, you should still start the
list with the number 1. At some point in the future, Markdown may support
starting ordered lists at an arbitrary number.
List markers typically start at the left margin, but may be indented by
up to three spaces. List markers must be followed by one or more spaces
or a tab.
To make lists look nice, you can wrap items with hanging indents:
* Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
viverra nec, fringilla in, laoreet vitae, risus.
* Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
Suspendisse id sem consectetuer libero luctus adipiscing.
But if you want to be lazy, you don't have to:
* Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
viverra nec, fringilla in, laoreet vitae, risus.
* Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
Suspendisse id sem consectetuer libero luctus adipiscing.
If list items are separated by blank lines, Markdown will wrap the
items in `<p>` tags in the HTML output. For example, this input:
* Bird
* Magic
will turn into:
<ul>
<li>Bird</li>
<li>Magic</li>
</ul>
But this:
* Bird
* Magic
will turn into:
<ul>
<li><p>Bird</p></li>
<li><p>Magic</p></li>
</ul>
List items may consist of multiple paragraphs. Each subsequent
paragraph in a list item must be intended by either 4 spaces
or one tab:
1. This is a list item with two paragraphs. Lorem ipsum dolor
sit amet, consectetuer adipiscing elit. Aliquam hendrerit
mi posuere lectus.
Vestibulum enim wisi, viverra nec, fringilla in, laoreet
vitae, risus. Donec sit amet nisl. Aliquam semper ipsum
sit amet velit.
2. Suspendisse id sem consectetuer libero luctus adipiscing.
It looks nice if you indent every line of the subsequent
paragraphs, but here again, Markdown will allow you to be
lazy:
* This is a list item with two paragraphs.
This is the second paragraph in the list item. You're
only required to indent the first line. Lorem ipsum dolor
sit amet, consectetuer adipiscing elit.
* Another item in the same list.
To put a blockquote within a list item, the blockquote's `>`
delimiters need to be indented:
* A list item with a blockquote:
> This is a blockquote
> inside a list item.
To put a code block within a list item, the code block needs
to be indented *twice* -- 8 spaces or two tabs:
* A list item with a code block:
<code goes here>
It's worth noting that it's possible to trigger an ordered list by
accident, by writing something like this:
1986. What a great season.
In other words, a *number-period-space* sequence at the beginning of a
line. To avoid this, you can backslash-escape the period:
1986\. What a great season.
<h3 id="precode">Code Blocks</h3>
Pre-formatted code blocks are used for writing about programming or
markup source code. Rather than forming normal paragraphs, the lines
of a code block are interpreted literally. Markdown wraps a code block
in both `<pre>` and `<code>` tags.
To produce a code block in Markdown, simply indent every line of the
block by at least 4 spaces or 1 tab. For example, given this input:
This is a normal paragraph:
This is a code block.
Markdown will generate:
<p>This is a normal paragraph:</p>
<pre><code>This is a code block.
</code></pre>
One level of indentation -- 4 spaces or 1 tab -- is removed from each
line of the code block. For example, this:
Here is an example of AppleScript:
tell application "Foo"
beep
end tell
will turn into:
<p>Here is an example of AppleScript:</p>
<pre><code>tell application "Foo"
beep
end tell
</code></pre>
A code block continues until it reaches a line that is not indented
(or the end of the article).
Within a code block, ampersands (`&`) and angle brackets (`<` and `>`)
are automatically converted into HTML entities. This makes it very
easy to include example HTML source code using Markdown -- just paste
it and indent it, and Markdown will handle the hassle of encoding the
ampersands and angle brackets. For example, this:
<div class="footer">
&copy; 2004 Foo Corporation
</div>
will turn into:
<pre><code>&lt;div class="footer"&gt;
&amp;copy; 2004 Foo Corporation
&lt;/div&gt;
</code></pre>
Regular Markdown syntax is not processed within code blocks. E.g.,
asterisks are just literal asterisks within a code block. This means
it's also easy to use Markdown to write about Markdown's own syntax.
<h3 id="hr">Horizontal Rules</h3>
You can produce a horizontal rule tag (`<hr />`) by placing three or
more hyphens, asterisks, or underscores on a line by themselves. If you
wish, you may use spaces between the hyphens or asterisks. Each of the
following lines will produce a horizontal rule:
* * *
***
*****
- - -
---------------------------------------
_ _ _
* * *
<h2 id="span">Span Elements</h2>
<h3 id="link">Links</h3>
Markdown supports two style of links: *inline* and *reference*.
In both styles, the link text is delimited by [square brackets].
To create an inline link, use a set of regular parentheses immediately
after the link text's closing square bracket. Inside the parentheses,
put the URL where you want the link to point, along with an *optional*
title for the link, surrounded in quotes. For example:
This is [an example](http://example.com/ "Title") inline link.
[This link](http://example.net/) has no title attribute.
Will produce:
<p>This is <a href="http://example.com/" title="Title">
an example</a> inline link.</p>
<p><a href="http://example.net/">This link</a> has no
title attribute.</p>
If you're referring to a local resource on the same server, you can
use relative paths:
See my [About](/about/) page for details.
Reference-style links use a second set of square brackets, inside
which you place a label of your choosing to identify the link:
This is [an example][id] reference-style link.
You can optionally use a space to separate the sets of brackets:
This is [an example] [id] reference-style link.
Then, anywhere in the document, you define your link label like this,
on a line by itself:
[id]: http://example.com/ "Optional Title Here"
That is:
* Square brackets containing the link identifier (optionally
indented from the left margin using up to three spaces);
* followed by a colon;
* followed by one or more spaces (or tabs);
* followed by the URL for the link;
* optionally followed by a title attribute for the link, enclosed
in double or single quotes.
The link URL may, optionally, be surrounded by angle brackets:
[id]: <http://example.com/> "Optional Title Here"
You can put the title attribute on the next line and use extra spaces
or tabs for padding, which tends to look better with longer URLs:
[id]: http://example.com/longish/path/to/resource/here
"Optional Title Here"
Link definitions are only used for creating links during Markdown
processing, and are stripped from your document in the HTML output.
Link definition names may constist of letters, numbers, spaces, and punctuation -- but they are *not* case sensitive. E.g. these two links:
[link text][a]
[link text][A]
are equivalent.
The *implicit link name* shortcut allows you to omit the name of the
link, in which case the link text itself is used as the name.
Just use an empty set of square brackets -- e.g., to link the word
"Google" to the google.com web site, you could simply write:
[Google][]
And then define the link:
[Google]: http://google.com/
Because link names may contain spaces, this shortcut even works for
multiple words in the link text:
Visit [Daring Fireball][] for more information.
And then define the link:
[Daring Fireball]: http://daringfireball.net/
Link definitions can be placed anywhere in your Markdown document. I
tend to put them immediately after each paragraph in which they're
used, but if you want, you can put them all at the end of your
document, sort of like footnotes.
Here's an example of reference links in action:
I get 10 times more traffic from [Google] [1] than from
[Yahoo] [2] or [MSN] [3].
[1]: http://google.com/ "Google"
[2]: http://search.yahoo.com/ "Yahoo Search"
[3]: http://search.msn.com/ "MSN Search"
Using the implicit link name shortcut, you could instead write:
I get 10 times more traffic from [Google][] than from
[Yahoo][] or [MSN][].
[google]: http://google.com/ "Google"
[yahoo]: http://search.yahoo.com/ "Yahoo Search"
[msn]: http://search.msn.com/ "MSN Search"
Both of the above examples will produce the following HTML output:
<p>I get 10 times more traffic from <a href="http://google.com/"
title="Google">Google</a> than from
<a href="http://search.yahoo.com/" title="Yahoo Search">Yahoo</a>
or <a href="http://search.msn.com/" title="MSN Search">MSN</a>.</p>
For comparison, here is the same paragraph written using
Markdown's inline link style:
I get 10 times more traffic from [Google](http://google.com/ "Google")
than from [Yahoo](http://search.yahoo.com/ "Yahoo Search") or
[MSN](http://search.msn.com/ "MSN Search").
The point of reference-style links is not that they're easier to
write. The point is that with reference-style links, your document
source is vastly more readable. Compare the above examples: using
reference-style links, the paragraph itself is only 81 characters
long; with inline-style links, it's 176 characters; and as raw HTML,
it's 234 characters. In the raw HTML, there's more markup than there
is text.
With Markdown's reference-style links, a source document much more
closely resembles the final output, as rendered in a browser. By
allowing you to move the markup-related metadata out of the paragraph,
you can add links without interrupting the narrative flow of your
prose.
<h3 id="em">Emphasis</h3>
Markdown treats asterisks (`*`) and underscores (`_`) as indicators of
emphasis. Text wrapped with one `*` or `_` will be wrapped with an
HTML `<em>` tag; double `*`'s or `_`'s will be wrapped with an HTML
`<strong>` tag. E.g., this input:
*single asterisks*
_single underscores_
**double asterisks**
__double underscores__
will produce:
<em>single asterisks</em>
<em>single underscores</em>
<strong>double asterisks</strong>
<strong>double underscores</strong>
You can use whichever style you prefer; the lone restriction is that
the same character must be used to open and close an emphasis span.
Emphasis can be used in the middle of a word:
un*fucking*believable
But if you surround an `*` or `_` with spaces, it'll be treated as a
literal asterisk or underscore.
To produce a literal asterisk or underscore at a position where it
would otherwise be used as an emphasis delimiter, you can backslash
escape it:
\*this text is surrounded by literal asterisks\*
<h3 id="code">Code</h3>
To indicate a span of code, wrap it with backtick quotes (`` ` ``).
Unlike a pre-formatted code block, a code span indicates code within a
normal paragraph. For example:
Use the `printf()` function.
will produce:
<p>Use the <code>printf()</code> function.</p>
To include a literal backtick character within a code span, you can use
multiple backticks as the opening and closing delimiters:
``There is a literal backtick (`) here.``
which will produce this:
<p><code>There is a literal backtick (`) here.</code></p>
The backtick delimiters surrounding a code span may include spaces --
one after the opening, one before the closing. This allows you to place
literal backtick characters at the beginning or end of a code span:
A single backtick in a code span: `` ` ``
A backtick-delimited string in a code span: `` `foo` ``
will produce:
<p>A single backtick in a code span: <code>`</code></p>
<p>A backtick-delimited string in a code span: <code>`foo`</code></p>
With a code span, ampersands and angle brackets are encoded as HTML
entities automatically, which makes it easy to include example HTML
tags. Markdown will turn this:
Please don't use any `<blink>` tags.
into:
<p>Please don't use any <code>&lt;blink&gt;</code> tags.</p>
You can write this:
`&#8212;` is the decimal-encoded equivalent of `&mdash;`.
to produce:
<p><code>&amp;#8212;</code> is the decimal-encoded
equivalent of <code>&amp;mdash;</code>.</p>
<h3 id="img">Images</h3>
Admittedly, it's fairly difficult to devise a "natural" syntax for
placing images into a plain text document format.
Markdown uses an image syntax that is intended to resemble the syntax
for links, allowing for two styles: *inline* and *reference*.
Inline image syntax looks like this:
![Alt text](/path/to/img.jpg)
![Alt text](/path/to/img.jpg "Optional title")
That is:
* An exclamation mark: `!`;
* followed by a set of square brackets, containing the `alt`
attribute text for the image;
* followed by a set of parentheses, containing the URL or path to
the image, and an optional `title` attribute enclosed in double
or single quotes.
Reference-style image syntax looks like this:
![Alt text][id]
Where "id" is the name of a defined image reference. Image references
are defined using syntax identical to link references:
[id]: url/to/image "Optional title attribute"
As of this writing, Markdown has no syntax for specifying the
dimensions of an image; if this is important to you, you can simply
use regular HTML `<img>` tags.
* * *
<h2 id="misc">Miscellaneous</h2>
<h3 id="autolink">Automatic Links</h3>
Markdown supports a shortcut style for creating "automatic" links for URLs and email addresses: simply surround the URL or email address with angle brackets. What this means is that if you want to show the actual text of a URL or email address, and also have it be a clickable link, you can do this:
<http://example.com/>
Markdown will turn this into:
<a href="http://example.com/">http://example.com/</a>
Automatic links for email addresses work similarly, except that
Markdown will also perform a bit of randomized decimal and hex
entity-encoding to help obscure your address from address-harvesting
spambots. For example, Markdown will turn this:
<address@example.com>
into something like this:
<a href="&#x6D;&#x61;i&#x6C;&#x74;&#x6F;:&#x61;&#x64;&#x64;&#x72;&#x65;
&#115;&#115;&#64;&#101;&#120;&#x61;&#109;&#x70;&#x6C;e&#x2E;&#99;&#111;
&#109;">&#x61;&#x64;&#x64;&#x72;&#x65;&#115;&#115;&#64;&#101;&#120;&#x61;
&#109;&#x70;&#x6C;e&#x2E;&#99;&#111;&#109;</a>
which will render in a browser as a clickable link to "address@example.com".
(This sort of entity-encoding trick will indeed fool many, if not
most, address-harvesting bots, but it definitely won't fool all of
them. It's better than nothing, but an address published in this way
will probably eventually start receiving spam.)
<h3 id="backslash">Backslash Escapes</h3>
Markdown allows you to use backslash escapes to generate literal
characters which would otherwise have special meaning in Markdown's
formatting syntax. For example, if you wanted to surround a word with
literal asterisks (instead of an HTML `<em>` tag), you can backslashes
before the asterisks, like this:
\*literal asterisks\*
Markdown provides backslash escapes for the following characters:
\ backslash
` backtick
* asterisk
_ underscore
{} curly braces
[] square brackets
() parentheses
# hash mark
+ plus sign
- minus sign (hyphen)
. dot
! exclamation mark

+ 942
- 0
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Markdown Documentation - Syntax.xhtml View File

@ -0,0 +1,942 @@
<h1>Markdown: Syntax</h1>
<ul id="ProjectSubmenu">
<li><a href="/projects/markdown/" title="Markdown Project Page">Main</a></li>
<li><a href="/projects/markdown/basics" title="Markdown Basics">Basics</a></li>
<li><a class="selected" title="Markdown Syntax Documentation">Syntax</a></li>
<li><a href="/projects/markdown/license" title="Pricing and License Information">License</a></li>
<li><a href="/projects/markdown/dingus" title="Online Markdown Web Form">Dingus</a></li>
</ul>
<ul>
<li><a href="#overview">Overview</a>
<ul>
<li><a href="#philosophy">Philosophy</a></li>
<li><a href="#html">Inline HTML</a></li>
<li><a href="#autoescape">Automatic Escaping for Special Characters</a></li>
</ul></li>
<li><a href="#block">Block Elements</a>
<ul>
<li><a href="#p">Paragraphs and Line Breaks</a></li>
<li><a href="#header">Headers</a></li>
<li><a href="#blockquote">Blockquotes</a></li>
<li><a href="#list">Lists</a></li>
<li><a href="#precode">Code Blocks</a></li>
<li><a href="#hr">Horizontal Rules</a></li>
</ul></li>
<li><a href="#span">Span Elements</a>
<ul>
<li><a href="#link">Links</a></li>
<li><a href="#em">Emphasis</a></li>
<li><a href="#code">Code</a></li>
<li><a href="#img">Images</a></li>
</ul></li>
<li><a href="#misc">Miscellaneous</a>
<ul>
<li><a href="#backslash">Backslash Escapes</a></li>
<li><a href="#autolink">Automatic Links</a></li>
</ul></li>
</ul>
<p><strong>Note:</strong> This document is itself written using Markdown; you
can <a href="/projects/markdown/syntax.text">see the source for it by adding '.text' to the URL</a>.</p>
<hr />
<h2 id="overview">Overview</h2>
<h3 id="philosophy">Philosophy</h3>
<p>Markdown is intended to be as easy-to-read and easy-to-write as is feasible.</p>
<p>Readability, however, is emphasized above all else. A Markdown-formatted
document should be publishable as-is, as plain text, without looking
like it's been marked up with tags or formatting instructions. While
Markdown's syntax has been influenced by several existing text-to-HTML
filters -- including <a href="http://docutils.sourceforge.net/mirror/setext.html">Setext</a>, <a href="http://www.aaronsw.com/2002/atx/">atx</a>, <a href="http://textism.com/tools/textile/">Textile</a>, <a href="http://docutils.sourceforge.net/rst.html">reStructuredText</a>,
<a href="http://www.triptico.com/software/grutatxt.html">Grutatext</a>, and <a href="http://ettext.taint.org/doc/">EtText</a> -- the single biggest source of
inspiration for Markdown's syntax is the format of plain text email.</p>
<p>To this end, Markdown's syntax is comprised entirely of punctuation
characters, which punctuation characters have been carefully chosen so
as to look like what they mean. E.g., asterisks around a word actually
look like *emphasis*. Markdown lists look like, well, lists. Even
blockquotes look like quoted passages of text, assuming you've ever
used email.</p>
<h3 id="html">Inline HTML</h3>
<p>Markdown's syntax is intended for one purpose: to be used as a
format for <em>writing</em> for the web.</p>
<p>Markdown is not a replacement for HTML, or even close to it. Its
syntax is very small, corresponding only to a very small subset of
HTML tags. The idea is <em>not</em> to create a syntax that makes it easier
to insert HTML tags. In my opinion, HTML tags are already easy to
insert. The idea for Markdown is to make it easy to read, write, and
edit prose. HTML is a <em>publishing</em> format; Markdown is a <em>writing</em>
format. Thus, Markdown's formatting syntax only addresses issues that
can be conveyed in plain text.</p>
<p>For any markup that is not covered by Markdown's syntax, you simply
use HTML itself. There's no need to preface it or delimit it to
indicate that you're switching from Markdown to HTML; you just use
the tags.</p>
<p>The only restrictions are that block-level HTML elements -- e.g. <code>&lt;div&gt;</code>,
<code>&lt;table&gt;</code>, <code>&lt;pre&gt;</code>, <code>&lt;p&gt;</code>, etc. -- must be separated from surrounding
content by blank lines, and the start and end tags of the block should
not be indented with tabs or spaces. Markdown is smart enough not
to add extra (unwanted) <code>&lt;p&gt;</code> tags around HTML block-level tags.</p>
<p>For example, to add an HTML table to a Markdown article:</p>
<pre><code>This is a regular paragraph.
&lt;table&gt;
&lt;tr&gt;
&lt;td&gt;Foo&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
This is another regular paragraph.
</code></pre>
<p>Note that Markdown formatting syntax is not processed within block-level
HTML tags. E.g., you can't use Markdown-style <code>*emphasis*</code> inside an
HTML block.</p>
<p>Span-level HTML tags -- e.g. <code>&lt;span&gt;</code>, <code>&lt;cite&gt;</code>, or <code>&lt;del&gt;</code> -- can be
used anywhere in a Markdown paragraph, list item, or header. If you
want, you can even use HTML tags instead of Markdown formatting; e.g. if
you'd prefer to use HTML <code>&lt;a&gt;</code> or <code>&lt;img&gt;</code> tags instead of Markdown's
link or image syntax, go right ahead.</p>
<p>Unlike block-level HTML tags, Markdown syntax <em>is</em> processed within
span-level tags.</p>
<h3 id="autoescape">Automatic Escaping for Special Characters</h3>
<p>In HTML, there are two characters that demand special treatment: <code>&lt;</code>
and <code>&amp;</code>. Left angle brackets are used to start tags; ampersands are
used to denote HTML entities. If you want to use them as literal
characters, you must escape them as entities, e.g. <code>&amp;lt;</code>, and
<code>&amp;amp;</code>.</p>
<p>Ampersands in particular are bedeviling for web writers. If you want to
write about 'AT&amp;T', you need to write '<code>AT&amp;amp;T</code>'. You even need to
escape ampersands within URLs. Thus, if you want to link to:</p>
<pre><code>http://images.google.com/images?num=30&amp;q=larry+bird
</code></pre>
<p>you need to encode the URL as:</p>
<pre><code>http://images.google.com/images?num=30&amp;amp;q=larry+bird
</code></pre>
<p>in your anchor tag <code>href</code> attribute. Needless to say, this is easy to
forget, and is probably the single most common source of HTML validation
errors in otherwise well-marked-up web sites.</p>
<p>Markdown allows you to use these characters naturally, taking care of
all the necessary escaping for you. If you use an ampersand as part of
an HTML entity, it remains unchanged; otherwise it will be translated
into <code>&amp;amp;</code>.</p>
<p>So, if you want to include a copyright symbol in your article, you can write:</p>
<pre><code>&amp;copy;
</code></pre>
<p>and Markdown will leave it alone. But if you write:</p>
<pre><code>AT&amp;T
</code></pre>
<p>Markdown will translate it to:</p>
<pre><code>AT&amp;amp;T
</code></pre>
<p>Similarly, because Markdown supports <a href="#html">inline HTML</a>, if you use
angle brackets as delimiters for HTML tags, Markdown will treat them as
such. But if you write:</p>
<pre><code>4 &lt; 5
</code></pre>
<p>Markdown will translate it to:</p>
<pre><code>4 &amp;lt; 5
</code></pre>
<p>However, inside Markdown code spans and blocks, angle brackets and
ampersands are <em>always</em> encoded automatically. This makes it easy to use
Markdown to write about HTML code. (As opposed to raw HTML, which is a
terrible format for writing about HTML syntax, because every single <code>&lt;</code>
and <code>&amp;</code> in your example code needs to be escaped.)</p>
<hr />
<h2 id="block">Block Elements</h2>
<h3 id="p">Paragraphs and Line Breaks</h3>
<p>A paragraph is simply one or more consecutive lines of text, separated
by one or more blank lines. (A blank line is any line that looks like a
blank line -- a line containing nothing but spaces or tabs is considered
blank.) Normal paragraphs should not be intended with spaces or tabs.</p>
<p>The implication of the "one or more consecutive lines of text" rule is
that Markdown supports "hard-wrapped" text paragraphs. This differs
significantly from most other text-to-HTML formatters (including Movable
Type's "Convert Line Breaks" option) which translate every line break
character in a paragraph into a <code>&lt;br /&gt;</code> tag.</p>
<p>When you <em>do</em> want to insert a <code>&lt;br /&gt;</code> break tag using Markdown, you
end a line with two or more spaces, then type return.</p>
<p>Yes, this takes a tad more effort to create a <code>&lt;br /&gt;</code>, but a simplistic
"every line break is a <code>&lt;br /&gt;</code>" rule wouldn't work for Markdown.
Markdown's email-style <a href="#blockquote">blockquoting</a> and multi-paragraph <a href="#list">list items</a>
work best -- and look better -- when you format them with hard breaks.</p>
<h3 id="header">Headers</h3>
<p>Markdown supports two styles of headers, <a href="http://docutils.sourceforge.net/mirror/setext.html">Setext</a> and <a href="http://www.aaronsw.com/2002/atx/">atx</a>.</p>
<p>Setext-style headers are "underlined" using equal signs (for first-level
headers) and dashes (for second-level headers). For example:</p>
<pre><code>This is an H1
=============
This is an H2
-------------
</code></pre>
<p>Any number of underlining <code>=</code>'s or <code>-</code>'s will work.</p>
<p>Atx-style headers use 1-6 hash characters at the start of the line,
corresponding to header levels 1-6. For example:</p>
<pre><code># This is an H1
## This is an H2
###### This is an H6
</code></pre>
<p>Optionally, you may "close" atx-style headers. This is purely
cosmetic -- you can use this if you think it looks better. The
closing hashes don't even need to match the number of hashes
used to open the header. (The number of opening hashes
determines the header level.) :</p>
<pre><code># This is an H1 #
## This is an H2 ##
### This is an H3 ######
</code></pre>
<h3 id="blockquote">Blockquotes</h3>
<p>Markdown uses email-style <code>&gt;</code> characters for blockquoting. If you're
familiar with quoting passages of text in an email message, then you
know how to create a blockquote in Markdown. It looks best if you hard
wrap the text and put a <code>&gt;</code> before every line:</p>
<pre><code>&gt; This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
&gt; consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
&gt; Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
&gt;
&gt; Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
&gt; id sem consectetuer libero luctus adipiscing.
</code></pre>
<p>Markdown allows you to be lazy and only put the <code>&gt;</code> before the first
line of a hard-wrapped paragraph:</p>
<pre><code>&gt; This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,
consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.
Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
&gt; Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse
id sem consectetuer libero luctus adipiscing.
</code></pre>
<p>Blockquotes can be nested (i.e. a blockquote-in-a-blockquote) by
adding additional levels of <code>&gt;</code>:</p>
<pre><code>&gt; This is the first level of quoting.
&gt;
&gt; &gt; This is nested blockquote.
&gt;
&gt; Back to the first level.
</code></pre>
<p>Blockquotes can contain other Markdown elements, including headers, lists,
and code blocks:</p>
<pre><code>&gt; ## This is a header.
&gt;
&gt; 1. This is the first list item.
&gt; 2. This is the second list item.
&gt;
&gt; Here's some example code:
&gt;
&gt; return shell_exec("echo $input | $markdown_script");
</code></pre>
<p>Any decent text editor should make email-style quoting easy. For
example, with BBEdit, you can make a selection and choose Increase
Quote Level from the Text menu.</p>
<h3 id="list">Lists</h3>
<p>Markdown supports ordered (numbered) and unordered (bulleted) lists.</p>
<p>Unordered lists use asterisks, pluses, and hyphens -- interchangably
-- as list markers:</p>
<pre><code>* Red
* Green
* Blue
</code></pre>
<p>is equivalent to:</p>
<pre><code>+ Red
+ Green
+ Blue
</code></pre>
<p>and:</p>
<pre><code>- Red
- Green
- Blue
</code></pre>
<p>Ordered lists use numbers followed by periods:</p>
<pre><code>1. Bird
2. McHale
3. Parish
</code></pre>
<p>It's important to note that the actual numbers you use to mark the
list have no effect on the HTML output Markdown produces. The HTML
Markdown produces from the above list is:</p>
<pre><code>&lt;ol&gt;
&lt;li&gt;Bird&lt;/li&gt;
&lt;li&gt;McHale&lt;/li&gt;
&lt;li&gt;Parish&lt;/li&gt;
&lt;/ol&gt;
</code></pre>
<p>If you instead wrote the list in Markdown like this:</p>
<pre><code>1. Bird
1. McHale
1. Parish
</code></pre>
<p>or even:</p>
<pre><code>3. Bird
1. McHale
8. Parish
</code></pre>
<p>you'd get the exact same HTML output. The point is, if you want to,
you can use ordinal numbers in your ordered Markdown lists, so that
the numbers in your source match the numbers in your published HTML.
But if you want to be lazy, you don't have to.</p>
<p>If you do use lazy list numbering, however, you should still start the
list with the number 1. At some point in the future, Markdown may support
starting ordered lists at an arbitrary number.</p>
<p>List markers typically start at the left margin, but may be indented by
up to three spaces. List markers must be followed by one or more spaces
or a tab.</p>
<p>To make lists look nice, you can wrap items with hanging indents:</p>
<pre><code>* Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
viverra nec, fringilla in, laoreet vitae, risus.
* Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
Suspendisse id sem consectetuer libero luctus adipiscing.
</code></pre>
<p>But if you want to be lazy, you don't have to:</p>
<pre><code>* Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
viverra nec, fringilla in, laoreet vitae, risus.
* Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
Suspendisse id sem consectetuer libero luctus adipiscing.
</code></pre>
<p>If list items are separated by blank lines, Markdown will wrap the
items in <code>&lt;p&gt;</code> tags in the HTML output. For example, this input:</p>
<pre><code>* Bird
* Magic
</code></pre>
<p>will turn into:</p>
<pre><code>&lt;ul&gt;
&lt;li&gt;Bird&lt;/li&gt;
&lt;li&gt;Magic&lt;/li&gt;
&lt;/ul&gt;
</code></pre>
<p>But this:</p>
<pre><code>* Bird
* Magic
</code></pre>
<p>will turn into:</p>
<pre><code>&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Bird&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Magic&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
</code></pre>
<p>List items may consist of multiple paragraphs. Each subsequent
paragraph in a list item must be intended by either 4 spaces
or one tab:</p>
<pre><code>1. This is a list item with two paragraphs. Lorem ipsum dolor
sit amet, consectetuer adipiscing elit. Aliquam hendrerit
mi posuere lectus.
Vestibulum enim wisi, viverra nec, fringilla in, laoreet
vitae, risus. Donec sit amet nisl. Aliquam semper ipsum
sit amet velit.
2. Suspendisse id sem consectetuer libero luctus adipiscing.
</code></pre>
<p>It looks nice if you indent every line of the subsequent
paragraphs, but here again, Markdown will allow you to be
lazy:</p>
<pre><code>* This is a list item with two paragraphs.
This is the second paragraph in the list item. You're
only required to indent the first line. Lorem ipsum dolor
sit amet, consectetuer adipiscing elit.
* Another item in the same list.
</code></pre>
<p>To put a blockquote within a list item, the blockquote's <code>&gt;</code>
delimiters need to be indented:</p>
<pre><code>* A list item with a blockquote:
&gt; This is a blockquote
&gt; inside a list item.
</code></pre>
<p>To put a code block within a list item, the code block needs
to be indented <em>twice</em> -- 8 spaces or two tabs:</p>
<pre><code>* A list item with a code block:
&lt;code goes here&gt;
</code></pre>
<p>It's worth noting that it's possible to trigger an ordered list by
accident, by writing something like this:</p>
<pre><code>1986. What a great season.
</code></pre>
<p>In other words, a <em>number-period-space</em> sequence at the beginning of a
line. To avoid this, you can backslash-escape the period:</p>
<pre><code>1986\. What a great season.
</code></pre>
<h3 id="precode">Code Blocks</h3>
<p>Pre-formatted code blocks are used for writing about programming or
markup source code. Rather than forming normal paragraphs, the lines
of a code block are interpreted literally. Markdown wraps a code block
in both <code>&lt;pre&gt;</code> and <code>&lt;code&gt;</code> tags.</p>
<p>To produce a code block in Markdown, simply indent every line of the
block by at least 4 spaces or 1 tab. For example, given this input:</p>
<pre><code>This is a normal paragraph:
This is a code block.
</code></pre>
<p>Markdown will generate:</p>
<pre><code>&lt;p&gt;This is a normal paragraph:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;This is a code block.
&lt;/code&gt;&lt;/pre&gt;
</code></pre>
<p>One level of indentation -- 4 spaces or 1 tab -- is removed from each
line of the code block. For example, this:</p>
<pre><code>Here is an example of AppleScript:
tell application "Foo"
beep
end tell
</code></pre>
<p>will turn into:</p>
<pre><code>&lt;p&gt;Here is an example of AppleScript:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;tell application "Foo"
beep
end tell
&lt;/code&gt;&lt;/pre&gt;
</code></pre>
<p>A code block continues until it reaches a line that is not indented
(or the end of the article).</p>
<p>Within a code block, ampersands (<code>&amp;</code>) and angle brackets (<code>&lt;</code> and <code>&gt;</code>)
are automatically converted into HTML entities. This makes it very
easy to include example HTML source code using Markdown -- just paste
it and indent it, and Markdown will handle the hassle of encoding the
ampersands and angle brackets. For example, this:</p>
<pre><code> &lt;div class="footer"&gt;
&amp;copy; 2004 Foo Corporation
&lt;/div&gt;
</code></pre>
<p>will turn into:</p>
<pre><code>&lt;pre&gt;&lt;code&gt;&amp;lt;div class="footer"&amp;gt;
&amp;amp;copy; 2004 Foo Corporation
&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
</code></pre>
<p>Regular Markdown syntax is not processed within code blocks. E.g.,
asterisks are just literal asterisks within a code block. This means
it's also easy to use Markdown to write about Markdown's own syntax.</p>
<h3 id="hr">Horizontal Rules</h3>
<p>You can produce a horizontal rule tag (<code>&lt;hr /&gt;</code>) by placing three or
more hyphens, asterisks, or underscores on a line by themselves. If you
wish, you may use spaces between the hyphens or asterisks. Each of the
following lines will produce a horizontal rule:</p>
<pre><code>* * *
***
*****
- - -
---------------------------------------
_ _ _
</code></pre>
<hr />
<h2 id="span">Span Elements</h2>
<h3 id="link">Links</h3>
<p>Markdown supports two style of links: <em>inline</em> and <em>reference</em>.</p>
<p>In both styles, the link text is delimited by [square brackets].</p>
<p>To create an inline link, use a set of regular parentheses immediately
after the link text's closing square bracket. Inside the parentheses,
put the URL where you want the link to point, along with an <em>optional</em>
title for the link, surrounded in quotes. For example:</p>
<pre><code>This is [an example](http://example.com/ "Title") inline link.
[This link](http://example.net/) has no title attribute.
</code></pre>
<p>Will produce:</p>
<pre><code>&lt;p&gt;This is &lt;a href="http://example.com/" title="Title"&gt;
an example&lt;/a&gt; inline link.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://example.net/"&gt;This link&lt;/a&gt; has no
title attribute.&lt;/p&gt;
</code></pre>
<p>If you're referring to a local resource on the same server, you can
use relative paths:</p>
<pre><code>See my [About](/about/) page for details.
</code></pre>
<p>Reference-style links use a second set of square brackets, inside
which you place a label of your choosing to identify the link:</p>
<pre><code>This is [an example][id] reference-style link.
</code></pre>
<p>You can optionally use a space to separate the sets of brackets:</p>
<pre><code>This is [an example] [id] reference-style link.
</code></pre>
<p>Then, anywhere in the document, you define your link label like this,
on a line by itself:</p>
<pre><code>[id]: http://example.com/ "Optional Title Here"
</code></pre>
<p>That is:</p>
<ul>
<li>Square brackets containing the link identifier (optionally
indented from the left margin using up to three spaces);</li>
<li>followed by a colon;</li>
<li>followed by one or more spaces (or tabs);</li>
<li>followed by the URL for the link;</li>
<li>optionally followed by a title attribute for the link, enclosed
in double or single quotes.</li>
</ul>
<p>The link URL may, optionally, be surrounded by angle brackets:</p>
<pre><code>[id]: &lt;http://example.com/&gt; "Optional Title Here"
</code></pre>
<p>You can put the title attribute on the next line and use extra spaces
or tabs for padding, which tends to look better with longer URLs:</p>
<pre><code>[id]: http://example.com/longish/path/to/resource/here
"Optional Title Here"
</code></pre>
<p>Link definitions are only used for creating links during Markdown
processing, and are stripped from your document in the HTML output.</p>
<p>Link definition names may constist of letters, numbers, spaces, and punctuation -- but they are <em>not</em> case sensitive. E.g. these two links:</p>
<pre><code>[link text][a]
[link text][A]
</code></pre>
<p>are equivalent.</p>
<p>The <em>implicit link name</em> shortcut allows you to omit the name of the
link, in which case the link text itself is used as the name.
Just use an empty set of square brackets -- e.g., to link the word
"Google" to the google.com web site, you could simply write:</p>
<pre><code>[Google][]
</code></pre>
<p>And then define the link:</p>
<pre><code>[Google]: http://google.com/
</code></pre>
<p>Because link names may contain spaces, this shortcut even works for
multiple words in the link text:</p>
<pre><code>Visit [Daring Fireball][] for more information.
</code></pre>
<p>And then define the link:</p>
<pre><code>[Daring Fireball]: http://daringfireball.net/
</code></pre>
<p>Link definitions can be placed anywhere in your Markdown document. I
tend to put them immediately after each paragraph in which they're
used, but if you want, you can put them all at the end of your
document, sort of like footnotes.</p>
<p>Here's an example of reference links in action:</p>
<pre><code>I get 10 times more traffic from [Google] [1] than from
[Yahoo] [2] or [MSN] [3].
[1]: http://google.com/ "Google"
[2]: http://search.yahoo.com/ "Yahoo Search"
[3]: http://search.msn.com/ "MSN Search"
</code></pre>
<p>Using the implicit link name shortcut, you could instead write:</p>
<pre><code>I get 10 times more traffic from [Google][] than from
[Yahoo][] or [MSN][].
[google]: http://google.com/ "Google"
[yahoo]: http://search.yahoo.com/ "Yahoo Search"
[msn]: http://search.msn.com/ "MSN Search"
</code></pre>
<p>Both of the above examples will produce the following HTML output:</p>
<pre><code>&lt;p&gt;I get 10 times more traffic from &lt;a href="http://google.com/"
title="Google"&gt;Google&lt;/a&gt; than from
&lt;a href="http://search.yahoo.com/" title="Yahoo Search"&gt;Yahoo&lt;/a&gt;
or &lt;a href="http://search.msn.com/" title="MSN Search"&gt;MSN&lt;/a&gt;.&lt;/p&gt;
</code></pre>
<p>For comparison, here is the same paragraph written using
Markdown's inline link style:</p>
<pre><code>I get 10 times more traffic from [Google](http://google.com/ "Google")
than from [Yahoo](http://search.yahoo.com/ "Yahoo Search") or
[MSN](http://search.msn.com/ "MSN Search").
</code></pre>
<p>The point of reference-style links is not that they're easier to
write. The point is that with reference-style links, your document
source is vastly more readable. Compare the above examples: using
reference-style links, the paragraph itself is only 81 characters
long; with inline-style links, it's 176 characters; and as raw HTML,
it's 234 characters. In the raw HTML, there's more markup than there
is text.</p>
<p>With Markdown's reference-style links, a source document much more
closely resembles the final output, as rendered in a browser. By
allowing you to move the markup-related metadata out of the paragraph,
you can add links without interrupting the narrative flow of your
prose.</p>
<h3 id="em">Emphasis</h3>
<p>Markdown treats asterisks (<code>*</code>) and underscores (<code>_</code>) as indicators of
emphasis. Text wrapped with one <code>*</code> or <code>_</code> will be wrapped with an
HTML <code>&lt;em&gt;</code> tag; double <code>*</code>'s or <code>_</code>'s will be wrapped with an HTML
<code>&lt;strong&gt;</code> tag. E.g., this input:</p>
<pre><code>*single asterisks*
_single underscores_
**double asterisks**
__double underscores__
</code></pre>
<p>will produce:</p>
<pre><code>&lt;em&gt;single asterisks&lt;/em&gt;
&lt;em&gt;single underscores&lt;/em&gt;
&lt;strong&gt;double asterisks&lt;/strong&gt;
&lt;strong&gt;double underscores&lt;/strong&gt;
</code></pre>
<p>You can use whichever style you prefer; the lone restriction is that
the same character must be used to open and close an emphasis span.</p>
<p>Emphasis can be used in the middle of a word:</p>
<pre><code>un*fucking*believable
</code></pre>
<p>But if you surround an <code>*</code> or <code>_</code> with spaces, it'll be treated as a
literal asterisk or underscore.</p>
<p>To produce a literal asterisk or underscore at a position where it
would otherwise be used as an emphasis delimiter, you can backslash
escape it:</p>
<pre><code>\*this text is surrounded by literal asterisks\*
</code></pre>
<h3 id="code">Code</h3>
<p>To indicate a span of code, wrap it with backtick quotes (<code>`</code>).
Unlike a pre-formatted code block, a code span indicates code within a
normal paragraph. For example:</p>
<pre><code>Use the `printf()` function.
</code></pre>
<p>will produce:</p>
<pre><code>&lt;p&gt;Use the &lt;code&gt;printf()&lt;/code&gt; function.&lt;/p&gt;
</code></pre>
<p>To include a literal backtick character within a code span, you can use
multiple backticks as the opening and closing delimiters:</p>
<pre><code>``There is a literal backtick (`) here.``
</code></pre>
<p>which will produce this:</p>
<pre><code>&lt;p&gt;&lt;code&gt;There is a literal backtick (`) here.&lt;/code&gt;&lt;/p&gt;
</code></pre>
<p>The backtick delimiters surrounding a code span may include spaces --
one after the opening, one before the closing. This allows you to place
literal backtick characters at the beginning or end of a code span:</p>
<pre><code>A single backtick in a code span: `` ` ``
A backtick-delimited string in a code span: `` `foo` ``
</code></pre>
<p>will produce:</p>
<pre><code>&lt;p&gt;A single backtick in a code span: &lt;code&gt;`&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;A backtick-delimited string in a code span: &lt;code&gt;`foo`&lt;/code&gt;&lt;/p&gt;
</code></pre>
<p>With a code span, ampersands and angle brackets are encoded as HTML
entities automatically, which makes it easy to include example HTML
tags. Markdown will turn this:</p>
<pre><code>Please don't use any `&lt;blink&gt;` tags.
</code></pre>
<p>into:</p>
<pre><code>&lt;p&gt;Please don't use any &lt;code&gt;&amp;lt;blink&amp;gt;&lt;/code&gt; tags.&lt;/p&gt;
</code></pre>
<p>You can write this:</p>
<pre><code>`&amp;#8212;` is the decimal-encoded equivalent of `&amp;mdash;`.
</code></pre>
<p>to produce:</p>
<pre><code>&lt;p&gt;&lt;code&gt;&amp;amp;#8212;&lt;/code&gt; is the decimal-encoded
equivalent of &lt;code&gt;&amp;amp;mdash;&lt;/code&gt;.&lt;/p&gt;
</code></pre>
<h3 id="img">Images</h3>
<p>Admittedly, it's fairly difficult to devise a "natural" syntax for
placing images into a plain text document format.</p>
<p>Markdown uses an image syntax that is intended to resemble the syntax
for links, allowing for two styles: <em>inline</em> and <em>reference</em>.</p>
<p>Inline image syntax looks like this:</p>
<pre><code>![Alt text](/path/to/img.jpg)
![Alt text](/path/to/img.jpg "Optional title")
</code></pre>
<p>That is:</p>
<ul>
<li>An exclamation mark: <code>!</code>;</li>
<li>followed by a set of square brackets, containing the <code>alt</code>
attribute text for the image;</li>
<li>followed by a set of parentheses, containing the URL or path to
the image, and an optional <code>title</code> attribute enclosed in double
or single quotes.</li>
</ul>
<p>Reference-style image syntax looks like this:</p>
<pre><code>![Alt text][id]
</code></pre>
<p>Where "id" is the name of a defined image reference. Image references
are defined using syntax identical to link references:</p>
<pre><code>[id]: url/to/image "Optional title attribute"
</code></pre>
<p>As of this writing, Markdown has no syntax for specifying the
dimensions of an image; if this is important to you, you can simply
use regular HTML <code>&lt;img&gt;</code> tags.</p>
<hr />
<h2 id="misc">Miscellaneous</h2>
<h3 id="autolink">Automatic Links</h3>
<p>Markdown supports a shortcut style for creating "automatic" links for URLs and email addresses: simply surround the URL or email address with angle brackets. What this means is that if you want to show the actual text of a URL or email address, and also have it be a clickable link, you can do this:</p>
<pre><code>&lt;http://example.com/&gt;
</code></pre>
<p>Markdown will turn this into:</p>
<pre><code>&lt;a href="http://example.com/"&gt;http://example.com/&lt;/a&gt;
</code></pre>
<p>Automatic links for email addresses work similarly, except that
Markdown will also perform a bit of randomized decimal and hex
entity-encoding to help obscure your address from address-harvesting
spambots. For example, Markdown will turn this:</p>
<pre><code>&lt;address@example.com&gt;
</code></pre>
<p>into something like this:</p>
<pre><code>&lt;a href="&amp;#x6D;&amp;#x61;i&amp;#x6C;&amp;#x74;&amp;#x6F;:&amp;#x61;&amp;#x64;&amp;#x64;&amp;#x72;&amp;#x65;
&amp;#115;&amp;#115;&amp;#64;&amp;#101;&amp;#120;&amp;#x61;&amp;#109;&amp;#x70;&amp;#x6C;e&amp;#x2E;&amp;#99;&amp;#111;
&amp;#109;"&gt;&amp;#x61;&amp;#x64;&amp;#x64;&amp;#x72;&amp;#x65;&amp;#115;&amp;#115;&amp;#64;&amp;#101;&amp;#120;&amp;#x61;
&amp;#109;&amp;#x70;&amp;#x6C;e&amp;#x2E;&amp;#99;&amp;#111;&amp;#109;&lt;/a&gt;
</code></pre>
<p>which will render in a browser as a clickable link to "address@example.com".</p>
<p>(This sort of entity-encoding trick will indeed fool many, if not
most, address-harvesting bots, but it definitely won't fool all of
them. It's better than nothing, but an address published in this way
will probably eventually start receiving spam.)</p>
<h3 id="backslash">Backslash Escapes</h3>
<p>Markdown allows you to use backslash escapes to generate literal
characters which would otherwise have special meaning in Markdown's
formatting syntax. For example, if you wanted to surround a word with
literal asterisks (instead of an HTML <code>&lt;em&gt;</code> tag), you can backslashes
before the asterisks, like this:</p>
<pre><code>\*literal asterisks\*
</code></pre>
<p>Markdown provides backslash escapes for the following characters:</p>
<pre><code>\ backslash
` backtick
* asterisk
_ underscore
{} curly braces
[] square brackets
() parentheses
# hash mark
+ plus sign
- minus sign (hyphen)
. dot
! exclamation mark
</code></pre>

+ 5
- 0
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Nested blockquotes.text View File

@ -0,0 +1,5 @@
> foo
>
> > bar
>
> foo

+ 9
- 0
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Nested blockquotes.xhtml View File

@ -0,0 +1,9 @@
<blockquote>
<p>foo</p>
<blockquote>
<p>bar</p>
</blockquote>
<p>foo</p>
</blockquote>

+ 131
- 0
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Ordered and unordered lists.text View File

@ -0,0 +1,131 @@
## Unordered
Asterisks tight:
* asterisk 1
* asterisk 2
* asterisk 3
Asterisks loose:
* asterisk 1
* asterisk 2
* asterisk 3
* * *
Pluses tight:
+ Plus 1
+ Plus 2
+ Plus 3
Pluses loose:
+ Plus 1
+ Plus 2
+ Plus 3
* * *
Minuses tight:
- Minus 1
- Minus 2
- Minus 3
Minuses loose:
- Minus 1
- Minus 2
- Minus 3
## Ordered
Tight:
1. First
2. Second
3. Third
and:
1. One
2. Two
3. Three
Loose using tabs:
1. First
2. Second
3. Third
and using spaces:
1. One
2. Two
3. Three
Multiple paragraphs:
1. Item 1, graf one.
Item 2. graf two. The quick brown fox jumped over the lazy dog's
back.
2. Item 2.
3. Item 3.
## Nested
* Tab
* Tab
* Tab
Here's another:
1. First
2. Second:
* Fee
* Fie
* Foe
3. Third
Same thing but with paragraphs:
1. First
2. Second:
* Fee
* Fie
* Foe
3. Third
This was an error in Markdown 1.0.1:
* this
* sub
that

+ 148
- 0
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Ordered and unordered lists.xhtml View File

@ -0,0 +1,148 @@
<h2>Unordered</h2>
<p>Asterisks tight:</p>
<ul>
<li>asterisk 1</li>
<li>asterisk 2</li>
<li>asterisk 3</li>
</ul>
<p>Asterisks loose:</p>
<ul>
<li><p>asterisk 1</p></li>
<li><p>asterisk 2</p></li>
<li><p>asterisk 3</p></li>
</ul>
<hr />
<p>Pluses tight:</p>
<ul>
<li>Plus 1</li>
<li>Plus 2</li>
<li>Plus 3</li>
</ul>
<p>Pluses loose:</p>
<ul>
<li><p>Plus 1</p></li>
<li><p>Plus 2</p></li>
<li><p>Plus 3</p></li>
</ul>
<hr />
<p>Minuses tight:</p>
<ul>
<li>Minus 1</li>
<li>Minus 2</li>
<li>Minus 3</li>
</ul>
<p>Minuses loose:</p>
<ul>
<li><p>Minus 1</p></li>
<li><p>Minus 2</p></li>
<li><p>Minus 3</p></li>
</ul>
<h2>Ordered</h2>
<p>Tight:</p>
<ol>
<li>First</li>
<li>Second</li>
<li>Third</li>
</ol>
<p>and:</p>
<ol>
<li>One</li>
<li>Two</li>
<li>Three</li>
</ol>
<p>Loose using tabs:</p>
<ol>
<li><p>First</p></li>
<li><p>Second</p></li>
<li><p>Third</p></li>
</ol>
<p>and using spaces:</p>
<ol>
<li><p>One</p></li>
<li><p>Two</p></li>
<li><p>Three</p></li>
</ol>
<p>Multiple paragraphs:</p>
<ol>
<li><p>Item 1, graf one.</p>
<p>Item 2. graf two. The quick brown fox jumped over the lazy dog's
back.</p></li>
<li><p>Item 2.</p></li>
<li><p>Item 3.</p></li>
</ol>
<h2>Nested</h2>
<ul>
<li>Tab
<ul>
<li>Tab
<ul>
<li>Tab</li>
</ul></li>
</ul></li>
</ul>
<p>Here's another:</p>
<ol>
<li>First</li>
<li>Second:
<ul>
<li>Fee</li>
<li>Fie</li>
<li>Foe</li>
</ul></li>
<li>Third</li>
</ol>
<p>Same thing but with paragraphs:</p>
<ol>
<li><p>First</p></li>
<li><p>Second:</p>
<ul>
<li>Fee</li>
<li>Fie</li>
<li>Foe</li>
</ul></li>
<li><p>Third</p></li>
</ol>
<p>This was an error in Markdown 1.0.1:</p>
<ul>
<li><p>this</p>
<ul><li>sub</li></ul>
<p>that</p></li>
</ul>

+ 7
- 0
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Strong and em together.text View File

@ -0,0 +1,7 @@
***This is strong and em.***
So is ***this*** word.
___This is strong and em.___
So is ___this___ word.

+ 7
- 0
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Strong and em together.xhtml View File

@ -0,0 +1,7 @@
<p><strong><em>This is strong and em.</em></strong></p>
<p>So is <strong><em>this</em></strong> word.</p>
<p><strong><em>This is strong and em.</em></strong></p>
<p>So is <strong><em>this</em></strong> word.</p>

+ 21
- 0
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Tabs.text View File

@ -0,0 +1,21 @@
+ this is a list item
indented with tabs
+ this is a list item
indented with spaces
Code:
this code block is indented by one tab
And:
this code block is indented by two tabs
And:
+ this is an example list item
indented with tabs
+ this is an example list item
indented with spaces

+ 25
- 0
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Tabs.xhtml View File

@ -0,0 +1,25 @@
<ul>
<li><p>this is a list item
indented with tabs</p></li>
<li><p>this is a list item
indented with spaces</p></li>
</ul>
<p>Code:</p>
<pre><code>this code block is indented by one tab
</code></pre>
<p>And:</p>
<pre><code> this code block is indented by two tabs
</code></pre>
<p>And:</p>
<pre><code>+ this is an example list item
indented with tabs
+ this is an example list item
indented with spaces
</code></pre>

+ 5
- 0
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Tidyness.text View File

@ -0,0 +1,5 @@
> A list within a blockquote:
>
> * asterisk 1
> * asterisk 2
> * asterisk 3

+ 8
- 0
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Tidyness.xhtml View File

@ -0,0 +1,8 @@
<blockquote>
<p>A list within a blockquote:</p>
<ul>
<li>asterisk 1</li>
<li>asterisk 2</li>
<li>asterisk 3</li>
</ul>
</blockquote>

+ 31
- 0
system/vendor/michelf/php-markdown/test/resources/php-markdown-extra.mdtest/Abbr.text View File

@ -0,0 +1,31 @@
Some text about HTML, SGML and HTML4.
Let's talk about the U.S.A., (É.U. or É.-U. d'A. in French).
*[HTML4]: Hyper Text Markup Language version 4
*[HTML]: Hyper Text Markup Language
*[SGML]: Standard Generalized Markup Language
*[U.S.A.]: United States of America
*[É.U.] : États-Unis d'Amérique
*[É.-U. d'A.] : États-Unis d'Amérique
And here we have a CD, some CDs, and some other CD's.
*[CD]: Compact Disk
Let's transfert documents through TCP/IP, using TCP packets.
*[IP]: Internet Protocol
*[TCP]: Transmission Control Protocol
---
Bienvenue sur [CMS](http://www.bidulecms.com "Bidule CMS").
*[CMS]: Content Management System
---
ATCCE
*[ATCCE]: Abbreviation "Testing" Correct 'Character' < Escapes >

+ 15
- 0
system/vendor/michelf/php-markdown/test/resources/php-markdown-extra.mdtest/Abbr.xhtml View File

@ -0,0 +1,15 @@
<p>Some text about <abbr title="Hyper Text Markup Language">HTML</abbr>, <abbr title="Standard Generalized Markup Language">SGML</abbr> and <abbr title="Hyper Text Markup Language version 4">HTML4</abbr>.</p>
<p>Let's talk about the <abbr title="United States of America">U.S.A.</abbr>, (<abbr title="États-Unis d'Amérique">É.U.</abbr> or <abbr title="États-Unis d'Amérique">É.-U. d'A.</abbr> in French).</p>
<p>And here we have a <abbr title="Compact Disk">CD</abbr>, some CDs, and some other <abbr title="Compact Disk">CD</abbr>'s.</p>
<p>Let's transfert documents through <abbr title="Transmission Control Protocol">TCP</abbr>/<abbr title="Internet Protocol">IP</abbr>, using <abbr title="Transmission Control Protocol">TCP</abbr> packets.</p>
<hr />
<p>Bienvenue sur <a href="http://www.bidulecms.com" title="Bidule CMS"><abbr title="Content Management System">CMS</abbr></a>.</p>
<hr />
<p><abbr title="Abbreviation &quot;Testing&quot; Correct 'Character' &lt; Escapes &gt;">ATCCE</abbr></p>

+ 69
- 0
system/vendor/michelf/php-markdown/test/resources/php-markdown-extra.mdtest/Backtick Fenced Code Blocks Special Cases.text View File

@ -0,0 +1,69 @@
``` .html
<ul>
<li>Code block first in file</li>
<li>doesn't work under some circumstances</li>
</ul>
```
As above: checking for bad interractions with the HTML block parser:
``` html
<div>
```
Some *markdown* `formatting`.
``` html
</div>
```
Some *markdown*
```
<div>
<html>
```
```
function test();
```
<div markdown="1">
<html>
<title>
</div>
<div markdown="1">
```
<html>
<title>
```
</div>
Two code blocks with no blank line between them:
```
<div>
```
```
<div>
```
Testing *confusion* with code spans at the HTML block parser:
```
<div>```</div>
```
Testing mixing with title code blocks
```
<p>```
~~~
<p>```
```
~~~
<p>```
```
<p>```
~~~

+ 61
- 0
system/vendor/michelf/php-markdown/test/resources/php-markdown-extra.mdtest/Backtick Fenced Code Blocks Special Cases.xhtml View File

@ -0,0 +1,61 @@
<pre><code class="html">&lt;ul>
&lt;li>Code block first in file&lt;/li>
&lt;li>doesn't work under some circumstances&lt;/li>
&lt;/ul>
</code></pre>
<p>As above: checking for bad interractions with the HTML block parser:</p>
<pre><code class="html">&lt;div>
</code></pre>
<p>Some <em>markdown</em><code>formatting</code>.</p>
<pre><code class="html">&lt;/div>
</code></pre>
<p>Some <em>markdown</em></p>
<pre><code>&lt;div>
&lt;html>
</code></pre>
<pre><code>function test();
</code></pre>
<div>
<pre><code>&lt;html&gt;
&lt;title&gt;
</code></pre>
</div>
<div>
<pre><code>&lt;html&gt;
&lt;title&gt;
</code></pre>
</div>
<p>Two code blocks with no blank line between them:</p>
<pre><code>&lt;div&gt;
</code></pre>
<pre><code>&lt;div&gt;
</code></pre>
<p>Testing <em>confusion</em> with code spans at the HTML block parser:</p>
<pre><code>&lt;div>```&lt;/div>
</code></pre>
<p>Testing mixing with title code blocks</p>
<pre><code>&lt;p>```
~~~
&lt;p>```
</code></pre>
<pre><code>&lt;p>```
```
&lt;p>```
</code></pre>

+ 123
- 0
system/vendor/michelf/php-markdown/test/resources/php-markdown-extra.mdtest/Backtick Fenced Code Blocks.text View File

@ -0,0 +1,123 @@
```
<Fenced>
```
Code block starting and ending with empty lines:
```
<Fenced>
```
Indented code block containing fenced code block sample:
```
<Fenced>
```
Fenced code block with indented code block sample:
```
Some text
Indented code block sample code
```
Fenced code block with long markers:
``````````````````
Fenced
``````````````````
Fenced code block with fenced code block markers of different length in it:
````
In code block
```
Still in code block
`````
Still in code block
````
Fenced code block with Markdown header and horizontal rule:
```
#test
---
```
Fenced code block with link definitions, footnote definition and
abbreviation definitions:
```
[example]: http://example.com/
[^1]: Footnote def
*[HTML]: HyperText Markup Language
```
* In a list item with smalish indent:
`````
#!/bin/sh
#
# Preload driver binary
LD_PRELOAD=libusb-driver.so $0.bin $*
`````
With HTML content.
`````
<b>bold</b>
`````
Bug with block level elements in this case:
```
<div>
</div>
```
Indented code block of a fenced code block:
```
haha!
```
With class:
`````html
<b>bold</b>
`````
````` html
<b>bold</b>
`````
`````.html
<b>bold</b>
`````
````` .html
<b>bold</b>
`````
With extra attribute block:
`````{.html}
<b>bold</b>
`````
````` {.html #codeid}
<b>bold</b>
`````
````` .html{.bold}
<div>
`````
`````` .html {#codeid}
</div>
``````

+ 109
- 0
system/vendor/michelf/php-markdown/test/resources/php-markdown-extra.mdtest/Backtick Fenced Code Blocks.xhtml View File

@ -0,0 +1,109 @@
<pre><code>&lt;Fenced>
</code></pre>
<p>Code block starting and ending with empty lines:</p>
<pre><code><br /><br />&lt;Fenced>
</code></pre>
<p>Indented code block containing fenced code block sample:</p>
<pre><code>```
&lt;Fenced>
```
</code></pre>
<p>Fenced code block with indented code block sample:</p>
<pre><code>Some text
Indented code block sample code
</code></pre>
<p>Fenced code block with long markers:</p>
<pre><code>Fenced
</code></pre>
<p>Fenced code block with fenced code block markers of different length in it:</p>
<pre><code>In code block
```
Still in code block
`````
Still in code block
</code></pre>
<p>Fenced code block with Markdown header and horizontal rule:</p>
<pre><code>#test
---
</code></pre>
<p>Fenced code block with link definitions, footnote definition and
abbreviation definitions:</p>
<pre><code>[example]: http://example.com/
[^1]: Footnote def
*[HTML]: HyperText Markup Language
</code></pre>
<ul>
<li><p>In a list item with smalish indent:</p>
<pre><code>#!/bin/sh
#
# Preload driver binary
LD_PRELOAD=libusb-driver.so $0.bin $*
</code></pre>
</li>
</ul>
<p>With HTML content.</p>
<pre><code>&lt;b>bold&lt;/b>
</code></pre>
<p>Bug with block level elements in this case:</p>
<pre><code> &lt;div>
&lt;/div>
</code></pre>
<p>Indented code block of a fenced code block:</p>
<pre><code>```
haha!
```
</code></pre>
<p>With class:</p>
<pre><code class="html">&lt;b>bold&lt;/b>
</code></pre>
<pre><code class="html">&lt;b>bold&lt;/b>
</code></pre>
<pre><code class="html">&lt;b>bold&lt;/b>
</code></pre>
<pre><code class="html">&lt;b>bold&lt;/b>
</code></pre>
<p>With extra attribute block:</p>
<pre><code class="html">&lt;b>bold&lt;/b>
</code></pre>
<pre><code class="html" id="codeid">&lt;b>bold&lt;/b>
</code></pre>
<pre><code class="html bold">&lt;div>
</code></pre>
<pre><code class="html" id="codeid">&lt;/div>
</code></pre>

+ 115
- 0
system/vendor/michelf/php-markdown/test/resources/php-markdown-extra.mdtest/Definition Lists.text View File

@ -0,0 +1,115 @@
A simple definition list:
Term 1
: Definition 1
Term 2
: Definition 2
With multiple terms:
Term 1
Term 2
: Definition 1
Term 3
Term 4
: Definition 2
With multiple definitions:
Term 1
: Definition 1
: Definition 2
Term 2
: Definition 3
: Definition 4
With multiple lines per definition:
Term 1
: Definition 1 line 1 ...
Definition 1 line 2
: Definition 2 line 1 ...
Definition 2 line 2
Term 2
: Definition 3 line 2 ...
Definition 3 line 2
: Definition 4 line 2 ...
Definition 4 line 2
With paragraphs:
Term 1
: Definition 1 (paragraph)
Term 2
: Definition 2 (paragraph)
With multiple paragraphs:
Term 1
: Definition 1 paragraph 1 line 1 ...
Definition 1 paragraph 1 line 2
Definition 1 paragraph 2 line 1 ...
Definition 1 paragraph 2 line 2
Term 2
: Definition 1 paragraph 1 line 1 ...
Definition 1 paragraph 1 line 2 (lazy)
Definition 1 paragraph 2 line 1 ...
Definition 1 paragraph 2 line 2 (lazy)
* * *
A mix:
Term 1
Term 2
: Definition 1 paragraph 1 line 1 ...
Definition 1 paragraph 1 line 2 (lazy)
Definition 1 paragraph 2 line 1 ...
Definition 1 paragraph 2 line 2
: Definition 2 paragraph 1 line 1 ...
Definition 2 paragraph 1 line 2 (lazy)
Term 3
: Definition 3 (no paragraph)
: Definition 4 (no paragraph)
: Definition 5 line 1 ...
Definition 5 line 2 (no paragraph)
: Definition 6 paragraph 1 line 1 ...
Definition 6 paragraph 1 line 2
: Definition 7 (no paragraph)
: Definition 8 paragraph 1 line 1 (forced paragraph) ...
Definition 8 paragraph 1 line 2
Definition 8 paragraph 2 line 1
Term 4
: Definition 9 paragraph 1 line 1 (forced paragraph) ...
Definition 9 paragraph 1 line 2
Definition 9 paragraph 2 line 1
: Definition 10 (no paragraph)
* * *
Special cases:
Term
: code block
as first element of a definition

+ 155
- 0
system/vendor/michelf/php-markdown/test/resources/php-markdown-extra.mdtest/Definition Lists.xhtml View File

@ -0,0 +1,155 @@
<p>A simple definition list:</p>
<dl>
<dt>Term 1</dt>
<dd>Definition 1</dd>
<dt>Term 2</dt>
<dd>Definition 2</dd>
</dl>
<p>With multiple terms:</p>
<dl>
<dt>Term 1</dt>
<dt>Term 2</dt>
<dd>Definition 1</dd>
<dt>Term 3</dt>
<dt>Term 4</dt>
<dd>Definition 2</dd>
</dl>
<p>With multiple definitions:</p>
<dl>
<dt>Term 1</dt>
<dd>Definition 1</dd>
<dd>Definition 2</dd>
<dt>Term 2</dt>
<dd>Definition 3</dd>
<dd>Definition 4</dd>
</dl>
<p>With multiple lines per definition:</p>
<dl>
<dt>Term 1</dt>
<dd>Definition 1 line 1 ...
Definition 1 line 2</dd>
<dd>Definition 2 line 1 ...
Definition 2 line 2</dd>
<dt>Term 2</dt>
<dd>Definition 3 line 2 ...
Definition 3 line 2</dd>
<dd>Definition 4 line 2 ...
Definition 4 line 2</dd>
</dl>
<p>With paragraphs:</p>
<dl>
<dt>Term 1</dt>
<dd>
<p>Definition 1 (paragraph)</p>
</dd>
<dt>Term 2</dt>
<dd>
<p>Definition 2 (paragraph)</p>
</dd>
</dl>
<p>With multiple paragraphs:</p>
<dl>
<dt>Term 1</dt>
<dd>
<p>Definition 1 paragraph 1 line 1 ...
Definition 1 paragraph 1 line 2</p>
<p>Definition 1 paragraph 2 line 1 ...
Definition 1 paragraph 2 line 2</p>
</dd>
<dt>Term 2</dt>
<dd>
<p>Definition 1 paragraph 1 line 1 ...
Definition 1 paragraph 1 line 2 (lazy)</p>
<p>Definition 1 paragraph 2 line 1 ...
Definition 1 paragraph 2 line 2 (lazy)</p>
</dd>
</dl>
<hr />
<p>A mix:</p>
<dl>
<dt>Term 1</dt>
<dt>Term 2</dt>
<dd>
<p>Definition 1 paragraph 1 line 1 ...
Definition 1 paragraph 1 line 2 (lazy)</p>
<p>Definition 1 paragraph 2 line 1 ...
Definition 1 paragraph 2 line 2</p>
</dd>
<dd>
<p>Definition 2 paragraph 1 line 1 ...
Definition 2 paragraph 1 line 2 (lazy)</p>
</dd>
<dt>Term 3</dt>
<dd>Definition 3 (no paragraph)</dd>
<dd>Definition 4 (no paragraph)</dd>
<dd>Definition 5 line 1 ...
Definition 5 line 2 (no paragraph)</dd>
<dd>
<p>Definition 6 paragraph 1 line 1 ...
Definition 6 paragraph 1 line 2</p>
</dd>
<dd>Definition 7 (no paragraph)</dd>
<dd>
<p>Definition 8 paragraph 1 line 1 (forced paragraph) ...
Definition 8 paragraph 1 line 2</p>
<p>Definition 8 paragraph 2 line 1</p>
</dd>
<dt>Term 4</dt>
<dd>
<p>Definition 9 paragraph 1 line 1 (forced paragraph) ...
Definition 9 paragraph 1 line 2</p>
<p>Definition 9 paragraph 2 line 1</p>
</dd>
<dd>Definition 10 (no paragraph)</dd>
</dl>
<hr />
<p>Special cases:</p>
<dl>
<dt>Term</dt>
<dd>
<pre><code>code block
as first element of a definition
</code></pre>
</dd>
</dl>

+ 100
- 0
system/vendor/michelf/php-markdown/test/resources/php-markdown-extra.mdtest/Emphasis.text View File

@ -0,0 +1,100 @@
Combined emphasis:
1. ***test test***
2. ___test test___
3. *test **test***
4. **test *test***
5. ***test* test**
6. ***test** test*
7. ***test* test**
8. **test *test***
9. *test **test***
10. _test __test___
11. __test _test___
12. ___test_ test__
13. ___test__ test_
14. ___test_ test__
15. __test _test___
16. _test __test___
17. *test __test__*
18. **test _test_**
19. **_test_ test**
20. *__test__ test*
21. **_test_ test**
22. **test _test_**
23. *test __test__*
24. _test **test**_
25. __test *test*__
26. __*test* test__
27. _**test** test_
28. __*test* test__
29. __test *test*__
30. _test **test**_
Incorrect nesting:
1. *test **test* test**
2. _test __test_ test__
3. **test *test** test*
4. __test _test__ test_
5. *test *test* test*
6. _test _test_ test_
7. **test **test** test**
8. __test __test__ test__
9. _**some text_**
10. *__some text*__
11. **_some text**_
12. *__some text*__
No emphasis:
1. test* test *test
2. test** test **test
3. test_ test _test
4. test__ test __test
Middle-word emphasis (asterisks):
1. *a*b
2. a*b*
3. a*b*c
4. **a**b
5. a**b**
6. a**b**c
Middle-word emphasis (underscore):
1. _a_b
2. a_b_
3. a_b_c
4. __a__b
5. a__b__
6. a__b__c
my_precious_file.txt
## Tricky Cases
E**. **Test** TestTestTest
E**. **Test** Test Test Test
## Overlong emphasis
Name: ____________
Organization: ____
Region/Country: __
_____Cut here_____
____Cut here____
# Regression
_**Note**_: This _is emphasis_.

+ 106
- 0
system/vendor/michelf/php-markdown/test/resources/php-markdown-extra.mdtest/Emphasis.xhtml View File

@ -0,0 +1,106 @@
<p>Combined emphasis:</p>
<ol>
<li><strong><em>test test</em></strong></li>
<li><strong><em>test test</em></strong></li>
<li><em>test <strong>test</strong></em></li>
<li><strong>test <em>test</em></strong></li>
<li><strong><em>test</em> test</strong></li>
<li><em><strong>test</strong> test</em></li>
<li><strong><em>test</em> test</strong></li>
<li><strong>test <em>test</em></strong></li>
<li><em>test <strong>test</strong></em></li>
<li><em>test <strong>test</strong></em></li>
<li><strong>test <em>test</em></strong></li>
<li><strong><em>test</em> test</strong></li>
<li><em><strong>test</strong> test</em></li>
<li><strong><em>test</em> test</strong></li>
<li><strong>test <em>test</em></strong></li>
<li><em>test <strong>test</strong></em></li>
<li><em>test <strong>test</strong></em></li>
<li><strong>test <em>test</em></strong></li>
<li><strong><em>test</em> test</strong></li>
<li><em><strong>test</strong> test</em></li>
<li><strong><em>test</em> test</strong></li>
<li><strong>test <em>test</em></strong></li>
<li><em>test <strong>test</strong></em></li>
<li><em>test <strong>test</strong></em></li>
<li><strong>test <em>test</em></strong></li>
<li><strong><em>test</em> test</strong></li>
<li><em><strong>test</strong> test</em></li>
<li><strong><em>test</em> test</strong></li>
<li><strong>test <em>test</em></strong></li>
<li><em>test <strong>test</strong></em></li>
</ol>
<p>Incorrect nesting:</p>
<ol>
<li>*test <strong>test* test</strong></li>
<li>_test <strong>test_ test</strong></li>
<li><strong>test *test</strong> test*</li>
<li><strong>test _test</strong> test_</li>
<li><em>test *test</em> test*</li>
<li><em>test _test</em> test_</li>
<li><strong>test **test</strong> test**</li>
<li><strong>test __test</strong> test__</li>
<li>_<strong>some text_</strong></li>
<li>*<strong>some text*</strong></li>
<li><strong>_some text</strong>_</li>
<li>*<strong>some text*</strong></li>
</ol>
<p>No emphasis:</p>
<ol>
<li>test* test *test</li>
<li>test** test **test</li>
<li>test_ test _test</li>
<li>test__ test __test</li>
</ol>
<p>Middle-word emphasis (asterisks):</p>
<ol>
<li><em>a</em>b</li>
<li>a<em>b</em></li>
<li>a<em>b</em>c</li>
<li><strong>a</strong>b</li>
<li>a<strong>b</strong></li>
<li>a<strong>b</strong>c</li>
</ol>
<p>Middle-word emphasis (underscore):</p>
<ol>
<li>_a_b</li>
<li>a_b_</li>
<li>a_b_c</li>
<li>__a__b</li>
<li>a__b__</li>
<li>a__b__c</li>
</ol>
<p>my_precious_file.txt</p>
<h2>Tricky Cases</h2>
<p>E**. <strong>Test</strong> TestTestTest</p>
<p>E**. <strong>Test</strong> Test Test Test</p>
<h2>Overlong emphasis</h2>
<p>Name: ____________<br />
Organization: ____<br />
Region/Country: __</p>
<p>_____Cut here_____</p>
<p>____Cut here____</p>
<h1>Regression</h1>
<p><em><strong>Note</strong></em>: This <em>is emphasis</em>.</p>

+ 70
- 0
system/vendor/michelf/php-markdown/test/resources/php-markdown-extra.mdtest/Footnotes.text View File

@ -0,0 +1,70 @@
This is the first paragraph.[^first]
[^first]: This is the first note.
* List item one.[^second]
* List item two.[^third]
[^third]: This is the third note, defined out of order.
[^second]: This is the second note.
[^fourth]: This is the fourth note.
# Header[^fourth]
Some paragraph with a footnote[^1], and another[^2].
[^1]: Content for fifth footnote.
[^2]: Content for sixth footnote spaning on
three lines, with some span-level markup like
_emphasis_, a [link][].
[link]: http://michelf.ca/
Another paragraph with a named footnote[^fn-name].
[^fn-name]:
Footnote beginning on the line next to the marker.
This paragraph should not have a footnote marker since
the footnote is undefined.[^3]
This paragraph has a second footnote marker to footnote number one.[^1]
This paragraph links to a footnote with plenty of
block-level content.[^block]
[^block]:
Paragraph.
* List item
> Blockquote
Code block
This paragraph host the footnote reference within a
footnote test[^reference].
[^reference]:
This footnote has a footnote of its own.[^nested]
[^nested]:
This footnote should appear even though it is referenced
from another footnote. But [^reference] should be litteral
since the footnote with that name has already been used.
- - -
Testing unusual footnote name[^1$^!"'].
[^1$^!"']: Haha!
- - -
Footnotes mixed with images[^image-mixed]
![1800 Travel][img6]
![1830 Travel][img7]
[img6]: images/MGR-1800-travel.jpeg "Travel Speeds in 1800"
[^image-mixed]: Footnote Content
[img7]: images/MGR-1830-travel.jpeg "Travel Speeds in 1830"

+ 103
- 0
system/vendor/michelf/php-markdown/test/resources/php-markdown-extra.mdtest/Footnotes.xhtml View File

@ -0,0 +1,103 @@
<p>This is the first paragraph.<sup id="fnref:first"><a href="#fn:first" class="footnote-ref" role="doc-noteref">1</a></sup></p>
<ul>
<li>List item one.<sup id="fnref:second"><a href="#fn:second" class="footnote-ref" role="doc-noteref">2</a></sup></li>
<li>List item two.<sup id="fnref:third"><a href="#fn:third" class="footnote-ref" role="doc-noteref">3</a></sup></li>
</ul>
<h1>Header<sup id="fnref:fourth"><a href="#fn:fourth" class="footnote-ref" role="doc-noteref">4</a></sup></h1>
<p>Some paragraph with a footnote<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">5</a></sup>, and another<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">6</a></sup>.</p>
<p>Another paragraph with a named footnote<sup id="fnref:fn-name"><a href="#fn:fn-name" class="footnote-ref" role="doc-noteref">7</a></sup>.</p>
<p>This paragraph should not have a footnote marker since
the footnote is undefined.[^3]</p>
<p>This paragraph has a second footnote marker to footnote number one.<sup id="fnref2:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">5</a></sup></p>
<p>This paragraph links to a footnote with plenty of
block-level content.<sup id="fnref:block"><a href="#fn:block" class="footnote-ref" role="doc-noteref">8</a></sup></p>
<p>This paragraph host the footnote reference within a
footnote test<sup id="fnref:reference"><a href="#fn:reference" class="footnote-ref" role="doc-noteref">9</a></sup>.</p>
<hr />
<p>Testing unusual footnote name<sup id="fnref:1$^!&quot;'"><a href="#fn:1$^!&quot;'" class="footnote-ref" role="doc-noteref">10</a></sup>.</p>
<hr />
<p>Footnotes mixed with images<sup id="fnref:image-mixed"><a class="footnote-ref" role="doc-noteref" href="#fn:image-mixed">11</a></sup><img alt="1800 Travel" src="images/MGR-1800-travel.jpeg" title="Travel Speeds in 1800"/><img alt="1830 Travel" src="images/MGR-1830-travel.jpeg" title="Travel Speeds in 1830"/></p>
<div class="footnotes" role="doc-endnotes">
<hr />
<ol>
<li id="fn:first" role="doc-endnote">
<p>This is the first note.&#160;<a href="#fnref:first" class="footnote-backref" role="doc-backlink">&#8617;&#xFE0E;</a></p>
</li>
<li id="fn:second" role="doc-endnote">
<p>This is the second note.&#160;<a href="#fnref:second" class="footnote-backref" role="doc-backlink">&#8617;&#xFE0E;</a></p>
</li>
<li id="fn:third" role="doc-endnote">
<p>This is the third note, defined out of order.&#160;<a href="#fnref:third" class="footnote-backref" role="doc-backlink">&#8617;&#xFE0E;</a></p>
</li>
<li id="fn:fourth" role="doc-endnote">
<p>This is the fourth note.&#160;<a href="#fnref:fourth" class="footnote-backref" role="doc-backlink">&#8617;&#xFE0E;</a></p>
</li>
<li id="fn:1" role="doc-endnote">
<p>Content for fifth footnote.&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#8617;&#xFE0E;</a> <a href="#fnref2:1" class="footnote-backref" role="doc-backlink">&#8617;&#xFE0E;</a></p>
</li>
<li id="fn:2" role="doc-endnote">
<p>Content for sixth footnote spaning on
three lines, with some span-level markup like
<em>emphasis</em>, a <a href="http://michelf.ca/">link</a>.&#160;<a href="#fnref:2" class="footnote-backref" role="doc-backlink">&#8617;&#xFE0E;</a></p>
</li>
<li id="fn:fn-name" role="doc-endnote">
<p>Footnote beginning on the line next to the marker.&#160;<a href="#fnref:fn-name" class="footnote-backref" role="doc-backlink">&#8617;&#xFE0E;</a></p>
</li>
<li id="fn:block" role="doc-endnote">
<p>Paragraph.</p>
<ul>
<li>List item</li>
</ul>
<blockquote>
<p>Blockquote</p>
</blockquote>
<pre><code>Code block
</code></pre>
<p><a href="#fnref:block" class="footnote-backref" role="doc-backlink">&#8617;&#xFE0E;</a></p>
</li>
<li id="fn:reference" role="doc-endnote">
<p>This footnote has a footnote of its own.<sup id="fnref:nested"><a href="#fn:nested" class="footnote-ref" role="doc-noteref">12</a></sup>&#160;<a href="#fnref:reference" class="footnote-backref" role="doc-backlink">&#8617;&#xFE0E;</a></p>
</li>
<li id="fn:1$^!&quot;'" role="doc-endnote">
<p>Haha!&#160;<a href="#fnref:1$^!&quot;'" class="footnote-backref" role="doc-backlink">&#8617;&#xFE0E;</a></p>
</li>
<li id="fn:image-mixed" role="doc-endnote">
<p>Footnote Content&#xA0;<a class="footnote-backref" role="doc-backlink" href="#fnref:image-mixed">&#8617;&#xFE0E;</a></p>
</li>
<li id="fn:nested" role="doc-endnote">
<p>This footnote should appear even though it is referenced
from another footnote. But [^reference] should be litteral
since the footnote with that name has already been used.&#160;<a href="#fnref:nested" class="footnote-backref" role="doc-backlink">&#8617;&#xFE0E;</a></p>
</li>
</ol>
</div>

+ 41
- 0
system/vendor/michelf/php-markdown/test/resources/php-markdown-extra.mdtest/Headers with attributes.text View File

@ -0,0 +1,41 @@
Header {#id1}
======
Header { #id2}
------
### Header {#id3 }
#### Header ## { #id4 }
- - -
Header {.cl}
======
Header { .cl}
------
### Header {.cl }
#### Header ## { .cl }
- - -
Header {.cl.class}
======
Header { .cl .class}
------
### Header {.cl .class }
#### Header ## { .cl.class }
- - -
Header {#id5.cl.class}
======
Header { #id6 .cl .class}
------
### Header {.cl.class#id7 }
#### Header ## { .cl.class#id8 }

+ 37
- 0
system/vendor/michelf/php-markdown/test/resources/php-markdown-extra.mdtest/Headers with attributes.xhtml View File

@ -0,0 +1,37 @@
<h1 id="id1">Header</h1>
<h2 id="id2">Header</h2>
<h3 id="id3">Header</h3>
<h4 id="id4">Header</h4>
<hr />
<h1 class="cl">Header</h1>
<h2 class="cl">Header</h2>
<h3 class="cl">Header</h3>
<h4 class="cl">Header</h4>
<hr />
<h1 class="cl class">Header</h1>
<h2 class="cl class">Header</h2>
<h3 class="cl class">Header</h3>
<h4 class="cl class">Header</h4>
<hr />
<h1 class="cl class" id="id5">Header</h1>
<h2 class="cl class" id="id6">Header</h2>
<h3 class="cl class" id="id7">Header</h3>
<h4 class="cl class" id="id8">Header</h4>

+ 110
- 0
system/vendor/michelf/php-markdown/test/resources/php-markdown-extra.mdtest/Inline HTML with Markdown content.text View File

@ -0,0 +1,110 @@
# Markdown inside code blocks
<div markdown="1">
foo
</div>
<div markdown='1'>
foo
</div>
<div markdown=1>
foo
</div>
<table>
<tr><td markdown="1">test _emphasis_ (span)</td></tr>
</table>
<table>
<tr><td markdown="span">test _emphasis_ (span)</td></tr>
</table>
<table>
<tr><td markdown="block">test _emphasis_ (block)</td></tr>
</table>
## More complicated
<table>
<tr><td markdown="1">
* this is _not_ a list item</td></tr>
<tr><td markdown="span">
* this is _not_ a list item</td></tr>
<tr><td markdown="block">
* this _is_ a list item
</td></tr>
</table>
## With indent
<div>
<div markdown="1">
This text is no code block: if it was, the
closing `<div>` would be too and the HTML block
would be invalid.
Markdown content in HTML blocks is assumed to be
indented the same as the block opening tag.
**This should be the third paragraph after the header.**
</div>
</div>
## Code block with rogue `</div>`s in Markdown code span and block
<div>
<div markdown="1">
This is a code block however:
</div>
Funny isn't it? Here is a code span: `</div>`.
</div>
</div>
<div>
<div markdown="1">
* List item, not a code block
Some text
This is a code block.
</div>
</div>
## No code block in markdown span mode
<p markdown="1">
This is not a code block since Markdown parse paragraph
content as span. Code spans like `</p>` are allowed though.
</p>
<p markdown="1">_Hello_ _world_</p>
<p markdown="1" class="poem">
line 1
line 2
line 3
</p>
## Preserving attributes and tags on more than one line:
<p class="test" markdown="1"
id="12">
Some _span_ content.
</p>
## Header confusion bug
<table class="canvas">
<tr>
<td id="main" markdown="1">Hello World!
============
Hello World!</td>
</tr>
</table>

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

Loading…
Cancel
Save