mirror of
https://github.com/danpros/htmly.git
synced 2026-04-17 19:26:08 +05:30
Composer update
This commit is contained in:
parent
0fc0d127da
commit
e5265527db
157 changed files with 9808 additions and 1594 deletions
50
composer.lock
generated
50
composer.lock
generated
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
2
system/vendor/autoload.php
vendored
2
system/vendor/autoload.php
vendored
|
|
@ -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();
|
||||
|
|
|
|||
60
system/vendor/composer/ClassLoader.php
vendored
60
system/vendor/composer/ClassLoader.php
vendored
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
2
system/vendor/composer/LICENSE
vendored
2
system/vendor/composer/LICENSE
vendored
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
system/vendor/composer/autoload_psr4.php
vendored
1
system/vendor/composer/autoload_psr4.php
vendored
|
|
@ -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'),
|
||||
);
|
||||
|
|
|
|||
5
system/vendor/composer/autoload_real.php
vendored
5
system/vendor/composer/autoload_real.php
vendored
|
|
@ -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';
|
||||
|
||||
|
|
|
|||
15
system/vendor/composer/autoload_static.php
vendored
15
system/vendor/composer/autoload_static.php
vendored
|
|
@ -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 (
|
||||
|
|
|
|||
166
system/vendor/composer/installed.json
vendored
166
system/vendor/composer/installed.json
vendored
|
|
@ -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,7 +146,59 @@
|
|||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"description": "Simple Github Updater for Web Projects"
|
||||
"description": "Simple Github Updater for Web Projects",
|
||||
"abandoned": true
|
||||
},
|
||||
{
|
||||
"name": "michelf/php-markdown",
|
||||
"version": "1.9.0",
|
||||
"version_normalized": "1.9.0.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/michelf/php-markdown.git",
|
||||
"reference": "c83178d49e372ca967d1a8c77ae4e051b3a3c75c"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/michelf/php-markdown/zipball/c83178d49e372ca967d1a8c77ae4e051b3a3c75c",
|
||||
"reference": "c83178d49e372ca967d1a8c77ae4e051b3a3c75c",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": ">=4.3 <5.8"
|
||||
},
|
||||
"time": "2019-12-02T02:32:27+00:00",
|
||||
"type": "library",
|
||||
"installation-source": "dist",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Michelf\\": "Michelf/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"BSD-3-Clause"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Michel Fortin",
|
||||
"email": "michel.fortin@michelf.ca",
|
||||
"homepage": "https://michelf.ca/",
|
||||
"role": "Developer"
|
||||
},
|
||||
{
|
||||
"name": "John Gruber",
|
||||
"homepage": "https://daringfireball.net/"
|
||||
}
|
||||
],
|
||||
"description": "PHP Markdown",
|
||||
"homepage": "https://michelf.ca/projects/php-markdown/",
|
||||
"keywords": [
|
||||
"markdown"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "suin/php-rss-writer",
|
||||
|
|
@ -160,7 +218,7 @@
|
|||
"require": {
|
||||
"php": ">=5.3.0"
|
||||
},
|
||||
"time": "2016-03-01 12:09:17",
|
||||
"time": "2016-03-01T12:09:17+00:00",
|
||||
"type": "library",
|
||||
"installation-source": "dist",
|
||||
"autoload": {
|
||||
|
|
@ -187,61 +245,5 @@
|
|||
"rss",
|
||||
"writer"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "jbroadway/urlify",
|
||||
"version": "1.0.8-stable",
|
||||
"version_normalized": "1.0.8.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/jbroadway/urlify.git",
|
||||
"reference": "984c991881501098eafdc41053b243237191cff8"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/jbroadway/urlify/zipball/984c991881501098eafdc41053b243237191cff8",
|
||||
"reference": "984c991881501098eafdc41053b243237191cff8",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.0"
|
||||
},
|
||||
"time": "2016-07-27 15:26:43",
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.0-dev"
|
||||
}
|
||||
},
|
||||
"installation-source": "dist",
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"URLify": ""
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"BSD"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Johnny Broadway",
|
||||
"email": "johnny@johnnybroadway.com",
|
||||
"homepage": "http://www.johnnybroadway.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",
|
||||
"keywords": [
|
||||
"encode",
|
||||
"iconv",
|
||||
"link",
|
||||
"slug",
|
||||
"translit",
|
||||
"transliterate",
|
||||
"transliteration",
|
||||
"url",
|
||||
"urlify"
|
||||
]
|
||||
}
|
||||
]
|
||||
|
|
|
|||
1
system/vendor/jbroadway/urlify/.gitignore
vendored
1
system/vendor/jbroadway/urlify/.gitignore
vendored
|
|
@ -1,3 +1,4 @@
|
|||
vendor
|
||||
composer.phar
|
||||
composer.lock
|
||||
.idea
|
||||
7
system/vendor/jbroadway/urlify/.travis.yml
vendored
7
system/vendor/jbroadway/urlify/.travis.yml
vendored
|
|
@ -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
|
||||
|
|
|
|||
13
system/vendor/jbroadway/urlify/INSTALL
vendored
13
system/vendor/jbroadway/urlify/INSTALL
vendored
|
|
@ -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`
|
||||
|
|
|
|||
40
system/vendor/jbroadway/urlify/README.md
vendored
40
system/vendor/jbroadway/urlify/README.md
vendored
|
|
@ -1,11 +1,19 @@
|
|||
# URLify for PHP
|
||||
# URLify for PHP [](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.
|
||||
|
|
|
|||
75
system/vendor/jbroadway/urlify/URLify.php
vendored
75
system/vendor/jbroadway/urlify/URLify.php
vendored
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
5
system/vendor/jbroadway/urlify/composer.json
vendored
5
system/vendor/jbroadway/urlify/composer.json
vendored
|
|
@ -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": "" }
|
||||
},
|
||||
|
|
|
|||
|
|
@ -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
system/vendor/michelf/php-markdown/.editorconfig
vendored
Normal file
11
system/vendor/michelf/php-markdown/.editorconfig
vendored
Normal 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
system/vendor/michelf/php-markdown/.gitignore
vendored
Normal file
3
system/vendor/michelf/php-markdown/.gitignore
vendored
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
*~
|
||||
/composer.lock
|
||||
/vendor/
|
||||
36
system/vendor/michelf/php-markdown/.scrutinizer.yml
vendored
Normal file
36
system/vendor/michelf/php-markdown/.scrutinizer.yml
vendored
Normal 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
system/vendor/michelf/php-markdown/.travis.yml
vendored
Normal file
29
system/vendor/michelf/php-markdown/.travis.yml
vendored
Normal 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
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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';
|
||||
|
|
|
|||
1417
system/vendor/michelf/php-markdown/Michelf/Markdown.php
vendored
1417
system/vendor/michelf/php-markdown/Michelf/Markdown.php
vendored
File diff suppressed because it is too large
Load diff
|
|
@ -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';
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -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';
|
||||
|
|
|
|||
|
|
@ -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/>
|
||||
#
|
||||
/**
|
||||
* 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/>
|
||||
*/
|
||||
|
||||
namespace Michelf;
|
||||
|
||||
|
||||
#
|
||||
# Markdown Parser Interface
|
||||
#
|
||||
|
||||
/**
|
||||
* 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);
|
||||
}
|
||||
|
|
|
|||
235
system/vendor/michelf/php-markdown/Readme.md
vendored
235
system/vendor/michelf/php-markdown/Readme.md
vendored
|
|
@ -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)
|
||||
|
||||
Note: this version was incorrectly released as 1.5.1 on Dec 22, a number
|
||||
* 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)
|
||||
|
||||
* 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}
|
||||
{#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
|
||||
|
|
|
|||
30
system/vendor/michelf/php-markdown/Readme.php
vendored
30
system/vendor/michelf/php-markdown/Readme.php
vendored
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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
system/vendor/michelf/php-markdown/phpunit.xml.dist
vendored
Normal file
24
system/vendor/michelf/php-markdown/phpunit.xml.dist
vendored
Normal 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
system/vendor/michelf/php-markdown/test/bootstrap.php
vendored
Normal file
6
system/vendor/michelf/php-markdown/test/bootstrap.php
vendored
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
<?php
|
||||
|
||||
define('TEST_ROOT', __DIR__);
|
||||
define('TEST_RESOURCES_ROOT', __DIR__ . '/resources');
|
||||
|
||||
require_once __DIR__ . '/helpers/MarkdownTestHelper.php';
|
||||
267
system/vendor/michelf/php-markdown/test/helpers/MarkdownTestHelper.php
vendored
Normal file
267
system/vendor/michelf/php-markdown/test/helpers/MarkdownTestHelper.php
vendored
Normal 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
system/vendor/michelf/php-markdown/test/integration/PhpMarkdownTest.php
vendored
Normal file
173
system/vendor/michelf/php-markdown/test/integration/PhpMarkdownTest.php
vendored
Normal 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
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Amps and angle encoding.text
vendored
Normal file
21
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Amps and angle encoding.text
vendored
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
AT&T has an ampersand in their name.
|
||||
|
||||
AT&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
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Amps and angle encoding.xhtml
vendored
Normal file
17
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Amps and angle encoding.xhtml
vendored
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
<p>AT&T has an ampersand in their name.</p>
|
||||
|
||||
<p>AT&T is another way to write it.</p>
|
||||
|
||||
<p>This & that.</p>
|
||||
|
||||
<p>4 < 5.</p>
|
||||
|
||||
<p>6 > 5.</p>
|
||||
|
||||
<p>Here's a <a href="http://example.com/?foo=1&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&T">AT&T</a>.</p>
|
||||
|
||||
<p>Here's an inline <a href="/script?foo=1&bar=2">link</a>.</p>
|
||||
|
||||
<p>Here's an inline <a href="/script?foo=1&bar=2">link</a>.</p>
|
||||
13
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Auto links.text
vendored
Normal file
13
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Auto links.text
vendored
Normal 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
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Auto links.xhtml
vendored
Normal file
18
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Auto links.xhtml
vendored
Normal 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&bar=2">http://example.com/?foo=1&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><http://example.com/></code></p>
|
||||
|
||||
<pre><code>or here: <http://example.com/>
|
||||
</code></pre>
|
||||
120
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Backslash escapes.text
vendored
Normal file
120
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Backslash escapes.text
vendored
Normal 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
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Backslash escapes.xhtml
vendored
Normal file
118
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Backslash escapes.xhtml
vendored
Normal 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: \>
|
||||
|
||||
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>\></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>
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
> Example:
|
||||
>
|
||||
> sub status {
|
||||
> print "working";
|
||||
> }
|
||||
>
|
||||
> Or:
|
||||
>
|
||||
> sub status {
|
||||
> return "working";
|
||||
> }
|
||||
|
|
@ -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
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Code Blocks.text
vendored
Normal file
14
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Code Blocks.text
vendored
Normal 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
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Code Blocks.xhtml
vendored
Normal file
18
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Code Blocks.xhtml
vendored
Normal 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
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Code Spans.text
vendored
Normal file
5
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Code Spans.text
vendored
Normal 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
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Code Spans.xhtml
vendored
Normal file
5
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Code Spans.xhtml
vendored
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
<p><code><test a="</code> content of attribute <code>"></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>
|
||||
|
|
@ -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.
|
||||
|
|
@ -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
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Horizontal rules.text
vendored
Normal file
67
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Horizontal rules.text
vendored
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
Dashes:
|
||||
|
||||
---
|
||||
|
||||
---
|
||||
|
||||
---
|
||||
|
||||
---
|
||||
|
||||
---
|
||||
|
||||
- - -
|
||||
|
||||
- - -
|
||||
|
||||
- - -
|
||||
|
||||
- - -
|
||||
|
||||
- - -
|
||||
|
||||
|
||||
Asterisks:
|
||||
|
||||
***
|
||||
|
||||
***
|
||||
|
||||
***
|
||||
|
||||
***
|
||||
|
||||
***
|
||||
|
||||
* * *
|
||||
|
||||
* * *
|
||||
|
||||
* * *
|
||||
|
||||
* * *
|
||||
|
||||
* * *
|
||||
|
||||
|
||||
Underscores:
|
||||
|
||||
___
|
||||
|
||||
___
|
||||
|
||||
___
|
||||
|
||||
___
|
||||
|
||||
___
|
||||
|
||||
_ _ _
|
||||
|
||||
_ _ _
|
||||
|
||||
_ _ _
|
||||
|
||||
_ _ _
|
||||
|
||||
_ _ _
|
||||
71
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Horizontal rules.xhtml
vendored
Normal file
71
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Horizontal rules.xhtml
vendored
Normal 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
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Images.text
vendored
Normal file
26
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Images.text
vendored
Normal file
|
|
@ -0,0 +1,26 @@
|
|||

|
||||
|
||||

|
||||
|
||||
Inline within a paragraph: [alt text](/url/).
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
.
|
||||
|
||||
![Empty]()
|
||||
|
||||
.jpg)
|
||||
|
||||
|
||||
![alt text][foo]
|
||||
|
||||
[foo]: /url/
|
||||
|
||||
![alt text][bar]
|
||||
|
||||
[bar]: /url/ "Title here"
|
||||
21
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Images.xhtml
vendored
Normal file
21
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Images.xhtml
vendored
Normal 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
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Inline HTML (Advanced).text
vendored
Normal file
30
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Inline HTML (Advanced).text
vendored
Normal 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
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Inline HTML (Advanced).xhtml
vendored
Normal file
30
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Inline HTML (Advanced).xhtml
vendored
Normal 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
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Inline HTML (Simple).html
vendored
Normal file
72
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Inline HTML (Simple).html
vendored
Normal 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><div>
|
||||
foo
|
||||
</div>
|
||||
</code></pre>
|
||||
|
||||
<p>As should this:</p>
|
||||
|
||||
<pre><code><div>foo</div>
|
||||
</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><!-- Comment -->
|
||||
</code></pre>
|
||||
|
||||
<p>Just plain comment, with trailing spaces on the line:</p>
|
||||
|
||||
<!-- foo -->
|
||||
|
||||
<p>Code:</p>
|
||||
|
||||
<pre><code><hr />
|
||||
</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
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Inline HTML (Simple).text
vendored
Normal file
69
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Inline HTML (Simple).text
vendored
Normal 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
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Inline HTML comments.html
vendored
Normal file
13
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Inline HTML comments.html
vendored
Normal 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
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Inline HTML comments.text
vendored
Normal file
13
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Inline HTML comments.text
vendored
Normal 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
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Links, inline style.text
vendored
Normal file
24
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Links, inline style.text
vendored
Normal 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
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Links, inline style.xhtml
vendored
Normal file
23
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Links, inline style.xhtml
vendored
Normal 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
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Links, reference style.text
vendored
Normal file
71
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Links, reference style.text
vendored
Normal 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
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Links, reference style.xhtml
vendored
Normal file
52
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Links, reference style.xhtml
vendored
Normal 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>
|
||||
|
|
@ -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
|
||||
|
|
@ -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>
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
Foo [bar][].
|
||||
|
||||
Foo [bar](/url/ "Title with "quotes" inside").
|
||||
|
||||
|
||||
[bar]: /url/ "Title with "quotes" inside"
|
||||
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
<p>Foo <a href="/url/" title="Title with "quotes" inside">bar</a>.</p>
|
||||
|
||||
<p>Foo <a href="/url/" title="Title with "quotes" inside">bar</a>.</p>
|
||||
|
|
@ -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):
|
||||
|
||||

|
||||
|
||||
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 `—`
|
||||
instead of decimal-encoded entites like `—`.
|
||||
|
||||
Output:
|
||||
|
||||
<p>I strongly recommend against using any
|
||||
<code><blink></code> tags.</p>
|
||||
|
||||
<p>I wish SmartyPants used named entities like
|
||||
<code>&mdash;</code> instead of decimal-encoded
|
||||
entites like <code>&#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><blockquote>
|
||||
<p>For example.</p>
|
||||
</blockquote>
|
||||
</code></pre>
|
||||
|
|
@ -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><h1></code> and <code><h2></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>></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
|
||||
|
||||
> This is a blockquote.
|
||||
>
|
||||
> This is the second paragraph in the blockquote.
|
||||
>
|
||||
> ## This is an H2 in a blockquote
|
||||
</code></pre>
|
||||
|
||||
<p>Output:</p>
|
||||
|
||||
<pre><code><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>
|
||||
</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><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>
|
||||
</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><ul>
|
||||
<li>Candy.</li>
|
||||
<li>Gum.</li>
|
||||
<li>Booze.</li>
|
||||
</ul>
|
||||
</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><ol>
|
||||
<li>Red</li>
|
||||
<li>Green</li>
|
||||
<li>Blue</li>
|
||||
</ol>
|
||||
</code></pre>
|
||||
|
||||
<p>If you put blank lines between items, you'll get <code><p></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><ul>
|
||||
<li><p>A list item.</p>
|
||||
<p>With multiple paragraphs.</p></li>
|
||||
<li><p>Another item in the list.</p></li>
|
||||
</ul>
|
||||
</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><p>This is an <a href="http://example.com/">
|
||||
example link</a>.</p>
|
||||
</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><p>This is an <a href="http://example.com/" title="With a Title">
|
||||
example link</a>.</p>
|
||||
</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><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>
|
||||
</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><p>I start my morning with a cup of coffee and
|
||||
<a href="http://www.nytimes.com/">The New York Times</a>.</p>
|
||||
</code></pre>
|
||||
|
||||
<h3>Images</h3>
|
||||
|
||||
<p>Image syntax is very much like link syntax.</p>
|
||||
|
||||
<p>Inline (titles are optional):</p>
|
||||
|
||||
<pre><code>
|
||||
</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><img src="/path/to/img.jpg" alt="alt text" title="Title" />
|
||||
</code></pre>
|
||||
|
||||
<h3>Code</h3>
|
||||
|
||||
<p>In a regular paragraph, you can create code span by wrapping text in
|
||||
backtick quotes. Any ampersands (<code>&</code>) and angle brackets (<code><</code> or
|
||||
<code>></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 `<blink>` tags.
|
||||
|
||||
I wish SmartyPants used named entities like `&mdash;`
|
||||
instead of decimal-encoded entites like `&#8212;`.
|
||||
</code></pre>
|
||||
|
||||
<p>Output:</p>
|
||||
|
||||
<pre><code><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>
|
||||
</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>&</code>, <code><</code>,
|
||||
and <code>></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:
|
||||
|
||||
<blockquote>
|
||||
<p>For example.</p>
|
||||
</blockquote>
|
||||
</code></pre>
|
||||
|
||||
<p>Output:</p>
|
||||
|
||||
<pre><code><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>
|
||||
</code></pre>
|
||||
|
|
@ -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. `<`, and
|
||||
`&`.
|
||||
|
||||
Ampersands in particular are bedeviling for web writers. If you want to
|
||||
write about 'AT&T', you need to write '`AT&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&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 `&`.
|
||||
|
||||
So, if you want to include a copyright symbol in your article, you can write:
|
||||
|
||||
©
|
||||
|
||||
and Markdown will leave it alone. But if you write:
|
||||
|
||||
AT&T
|
||||
|
||||
Markdown will translate it to:
|
||||
|
||||
AT&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 < 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">
|
||||
© 2004 Foo Corporation
|
||||
</div>
|
||||
|
||||
will turn into:
|
||||
|
||||
<pre><code><div class="footer">
|
||||
&copy; 2004 Foo Corporation
|
||||
</div>
|
||||
</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><blink></code> tags.</p>
|
||||
|
||||
You can write this:
|
||||
|
||||
`—` is the decimal-encoded equivalent of `—`.
|
||||
|
||||
to produce:
|
||||
|
||||
<p><code>&#8212;</code> is the decimal-encoded
|
||||
equivalent of <code>&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:
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
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="mailto:addre
|
||||
ss@example.co
|
||||
m">address@exa
|
||||
mple.com</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
|
||||
|
||||
|
|
@ -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><div></code>,
|
||||
<code><table></code>, <code><pre></code>, <code><p></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><p></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.
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td>Foo</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
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><span></code>, <code><cite></code>, or <code><del></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><a></code> or <code><img></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><</code>
|
||||
and <code>&</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>&lt;</code>, and
|
||||
<code>&amp;</code>.</p>
|
||||
|
||||
<p>Ampersands in particular are bedeviling for web writers. If you want to
|
||||
write about 'AT&T', you need to write '<code>AT&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&q=larry+bird
|
||||
</code></pre>
|
||||
|
||||
<p>you need to encode the URL as:</p>
|
||||
|
||||
<pre><code>http://images.google.com/images?num=30&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;</code>.</p>
|
||||
|
||||
<p>So, if you want to include a copyright symbol in your article, you can write:</p>
|
||||
|
||||
<pre><code>&copy;
|
||||
</code></pre>
|
||||
|
||||
<p>and Markdown will leave it alone. But if you write:</p>
|
||||
|
||||
<pre><code>AT&T
|
||||
</code></pre>
|
||||
|
||||
<p>Markdown will translate it to:</p>
|
||||
|
||||
<pre><code>AT&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 < 5
|
||||
</code></pre>
|
||||
|
||||
<p>Markdown will translate it to:</p>
|
||||
|
||||
<pre><code>4 &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><</code>
|
||||
and <code>&</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><br /></code> tag.</p>
|
||||
|
||||
<p>When you <em>do</em> want to insert a <code><br /></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><br /></code>, but a simplistic
|
||||
"every line break is a <code><br /></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>></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>></code> before every line:</p>
|
||||
|
||||
<pre><code>> 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.
|
||||
</code></pre>
|
||||
|
||||
<p>Markdown allows you to be lazy and only put the <code>></code> before the first
|
||||
line of a hard-wrapped paragraph:</p>
|
||||
|
||||
<pre><code>> 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.
|
||||
</code></pre>
|
||||
|
||||
<p>Blockquotes can be nested (i.e. a blockquote-in-a-blockquote) by
|
||||
adding additional levels of <code>></code>:</p>
|
||||
|
||||
<pre><code>> This is the first level of quoting.
|
||||
>
|
||||
> > This is nested blockquote.
|
||||
>
|
||||
> Back to the first level.
|
||||
</code></pre>
|
||||
|
||||
<p>Blockquotes can contain other Markdown elements, including headers, lists,
|
||||
and code blocks:</p>
|
||||
|
||||
<pre><code>> ## 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");
|
||||
</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><ol>
|
||||
<li>Bird</li>
|
||||
<li>McHale</li>
|
||||
<li>Parish</li>
|
||||
</ol>
|
||||
</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><p></code> tags in the HTML output. For example, this input:</p>
|
||||
|
||||
<pre><code>* Bird
|
||||
* Magic
|
||||
</code></pre>
|
||||
|
||||
<p>will turn into:</p>
|
||||
|
||||
<pre><code><ul>
|
||||
<li>Bird</li>
|
||||
<li>Magic</li>
|
||||
</ul>
|
||||
</code></pre>
|
||||
|
||||
<p>But this:</p>
|
||||
|
||||
<pre><code>* Bird
|
||||
|
||||
* Magic
|
||||
</code></pre>
|
||||
|
||||
<p>will turn into:</p>
|
||||
|
||||
<pre><code><ul>
|
||||
<li><p>Bird</p></li>
|
||||
<li><p>Magic</p></li>
|
||||
</ul>
|
||||
</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>></code>
|
||||
delimiters need to be indented:</p>
|
||||
|
||||
<pre><code>* A list item with a blockquote:
|
||||
|
||||
> This is a blockquote
|
||||
> 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:
|
||||
|
||||
<code goes here>
|
||||
</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><pre></code> and <code><code></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><p>This is a normal paragraph:</p>
|
||||
|
||||
<pre><code>This is a code block.
|
||||
</code></pre>
|
||||
</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><p>Here is an example of AppleScript:</p>
|
||||
|
||||
<pre><code>tell application "Foo"
|
||||
beep
|
||||
end tell
|
||||
</code></pre>
|
||||
</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>&</code>) and angle brackets (<code><</code> and <code>></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> <div class="footer">
|
||||
&copy; 2004 Foo Corporation
|
||||
</div>
|
||||
</code></pre>
|
||||
|
||||
<p>will turn into:</p>
|
||||
|
||||
<pre><code><pre><code>&lt;div class="footer"&gt;
|
||||
&amp;copy; 2004 Foo Corporation
|
||||
&lt;/div&gt;
|
||||
</code></pre>
|
||||
</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><hr /></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><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>
|
||||
</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]: <http://example.com/> "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><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>
|
||||
</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><em></code> tag; double <code>*</code>'s or <code>_</code>'s will be wrapped with an HTML
|
||||
<code><strong></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><em>single asterisks</em>
|
||||
|
||||
<em>single underscores</em>
|
||||
|
||||
<strong>double asterisks</strong>
|
||||
|
||||
<strong>double underscores</strong>
|
||||
</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><p>Use the <code>printf()</code> function.</p>
|
||||
</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><p><code>There is a literal backtick (`) here.</code></p>
|
||||
</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><p>A single backtick in a code span: <code>`</code></p>
|
||||
|
||||
<p>A backtick-delimited string in a code span: <code>`foo`</code></p>
|
||||
</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 `<blink>` tags.
|
||||
</code></pre>
|
||||
|
||||
<p>into:</p>
|
||||
|
||||
<pre><code><p>Please don't use any <code>&lt;blink&gt;</code> tags.</p>
|
||||
</code></pre>
|
||||
|
||||
<p>You can write this:</p>
|
||||
|
||||
<pre><code>`&#8212;` is the decimal-encoded equivalent of `&mdash;`.
|
||||
</code></pre>
|
||||
|
||||
<p>to produce:</p>
|
||||
|
||||
<pre><code><p><code>&amp;#8212;</code> is the decimal-encoded
|
||||
equivalent of <code>&amp;mdash;</code>.</p>
|
||||
</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>
|
||||
|
||||

|
||||
</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><img></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><http://example.com/>
|
||||
</code></pre>
|
||||
|
||||
<p>Markdown will turn this into:</p>
|
||||
|
||||
<pre><code><a href="http://example.com/">http://example.com/</a>
|
||||
</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><address@example.com>
|
||||
</code></pre>
|
||||
|
||||
<p>into something like this:</p>
|
||||
|
||||
<pre><code><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>
|
||||
</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><em></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
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Nested blockquotes.text
vendored
Normal file
5
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Nested blockquotes.text
vendored
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
> foo
|
||||
>
|
||||
> > bar
|
||||
>
|
||||
> foo
|
||||
9
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Nested blockquotes.xhtml
vendored
Normal file
9
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Nested blockquotes.xhtml
vendored
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
<blockquote>
|
||||
<p>foo</p>
|
||||
|
||||
<blockquote>
|
||||
<p>bar</p>
|
||||
</blockquote>
|
||||
|
||||
<p>foo</p>
|
||||
</blockquote>
|
||||
131
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Ordered and unordered lists.text
vendored
Normal file
131
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Ordered and unordered lists.text
vendored
Normal 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
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Ordered and unordered lists.xhtml
vendored
Normal file
148
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Ordered and unordered lists.xhtml
vendored
Normal 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>
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
***This is strong and em.***
|
||||
|
||||
So is ***this*** word.
|
||||
|
||||
___This is strong and em.___
|
||||
|
||||
So is ___this___ word.
|
||||
|
|
@ -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
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Tabs.text
vendored
Normal file
21
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Tabs.text
vendored
Normal 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
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Tabs.xhtml
vendored
Normal file
25
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Tabs.xhtml
vendored
Normal 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
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Tidyness.text
vendored
Normal file
5
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Tidyness.text
vendored
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
> A list within a blockquote:
|
||||
>
|
||||
> * asterisk 1
|
||||
> * asterisk 2
|
||||
> * asterisk 3
|
||||
8
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Tidyness.xhtml
vendored
Normal file
8
system/vendor/michelf/php-markdown/test/resources/markdown.mdtest/Tidyness.xhtml
vendored
Normal 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
system/vendor/michelf/php-markdown/test/resources/php-markdown-extra.mdtest/Abbr.text
vendored
Normal file
31
system/vendor/michelf/php-markdown/test/resources/php-markdown-extra.mdtest/Abbr.text
vendored
Normal 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
system/vendor/michelf/php-markdown/test/resources/php-markdown-extra.mdtest/Abbr.xhtml
vendored
Normal file
15
system/vendor/michelf/php-markdown/test/resources/php-markdown-extra.mdtest/Abbr.xhtml
vendored
Normal 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 "Testing" Correct 'Character' < Escapes >">ATCCE</abbr></p>
|
||||
|
|
@ -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>```
|
||||
~~~
|
||||
|
|
@ -0,0 +1,61 @@
|
|||
<pre><code class="html"><ul>
|
||||
<li>Code block first in file</li>
|
||||
<li>doesn't work under some circumstances</li>
|
||||
</ul>
|
||||
</code></pre>
|
||||
|
||||
<p>As above: checking for bad interractions with the HTML block parser:</p>
|
||||
|
||||
<pre><code class="html"><div>
|
||||
</code></pre>
|
||||
|
||||
<p>Some <em>markdown</em><code>formatting</code>.</p>
|
||||
|
||||
<pre><code class="html"></div>
|
||||
</code></pre>
|
||||
|
||||
<p>Some <em>markdown</em></p>
|
||||
|
||||
<pre><code><div>
|
||||
<html>
|
||||
</code></pre>
|
||||
|
||||
<pre><code>function test();
|
||||
</code></pre>
|
||||
|
||||
<div>
|
||||
<pre><code><html>
|
||||
<title>
|
||||
</code></pre>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<pre><code><html>
|
||||
<title>
|
||||
</code></pre>
|
||||
</div>
|
||||
|
||||
<p>Two code blocks with no blank line between them:</p>
|
||||
|
||||
<pre><code><div>
|
||||
</code></pre>
|
||||
|
||||
<pre><code><div>
|
||||
</code></pre>
|
||||
|
||||
<p>Testing <em>confusion</em> with code spans at the HTML block parser:</p>
|
||||
|
||||
<pre><code><div>```</div>
|
||||
</code></pre>
|
||||
|
||||
<p>Testing mixing with title code blocks</p>
|
||||
|
||||
<pre><code><p>```
|
||||
~~~
|
||||
<p>```
|
||||
</code></pre>
|
||||
|
||||
<pre><code><p>```
|
||||
```
|
||||
<p>```
|
||||
</code></pre>
|
||||
|
|
@ -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>
|
||||
``````
|
||||
|
|
@ -0,0 +1,109 @@
|
|||
<pre><code><Fenced>
|
||||
</code></pre>
|
||||
|
||||
<p>Code block starting and ending with empty lines:</p>
|
||||
|
||||
<pre><code><br /><br /><Fenced>
|
||||
|
||||
|
||||
</code></pre>
|
||||
|
||||
<p>Indented code block containing fenced code block sample:</p>
|
||||
|
||||
<pre><code>```
|
||||
<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><b>bold</b>
|
||||
</code></pre>
|
||||
|
||||
<p>Bug with block level elements in this case:</p>
|
||||
<pre><code> <div>
|
||||
</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"><b>bold</b>
|
||||
</code></pre>
|
||||
|
||||
<pre><code class="html"><b>bold</b>
|
||||
</code></pre>
|
||||
|
||||
<pre><code class="html"><b>bold</b>
|
||||
</code></pre>
|
||||
|
||||
<pre><code class="html"><b>bold</b>
|
||||
</code></pre>
|
||||
|
||||
<p>With extra attribute block:</p>
|
||||
|
||||
<pre><code class="html"><b>bold</b>
|
||||
</code></pre>
|
||||
|
||||
<pre><code class="html" id="codeid"><b>bold</b>
|
||||
</code></pre>
|
||||
|
||||
<pre><code class="html bold"><div>
|
||||
</code></pre>
|
||||
|
||||
<pre><code class="html" id="codeid"></div>
|
||||
</code></pre>
|
||||
115
system/vendor/michelf/php-markdown/test/resources/php-markdown-extra.mdtest/Definition Lists.text
vendored
Normal file
115
system/vendor/michelf/php-markdown/test/resources/php-markdown-extra.mdtest/Definition Lists.text
vendored
Normal 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
system/vendor/michelf/php-markdown/test/resources/php-markdown-extra.mdtest/Definition Lists.xhtml
vendored
Normal file
155
system/vendor/michelf/php-markdown/test/resources/php-markdown-extra.mdtest/Definition Lists.xhtml
vendored
Normal 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
system/vendor/michelf/php-markdown/test/resources/php-markdown-extra.mdtest/Emphasis.text
vendored
Normal file
100
system/vendor/michelf/php-markdown/test/resources/php-markdown-extra.mdtest/Emphasis.text
vendored
Normal 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
system/vendor/michelf/php-markdown/test/resources/php-markdown-extra.mdtest/Emphasis.xhtml
vendored
Normal file
106
system/vendor/michelf/php-markdown/test/resources/php-markdown-extra.mdtest/Emphasis.xhtml
vendored
Normal 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
system/vendor/michelf/php-markdown/test/resources/php-markdown-extra.mdtest/Footnotes.text
vendored
Normal file
70
system/vendor/michelf/php-markdown/test/resources/php-markdown-extra.mdtest/Footnotes.text
vendored
Normal 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
system/vendor/michelf/php-markdown/test/resources/php-markdown-extra.mdtest/Footnotes.xhtml
vendored
Normal file
103
system/vendor/michelf/php-markdown/test/resources/php-markdown-extra.mdtest/Footnotes.xhtml
vendored
Normal 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$^!"'"><a href="#fn:1$^!"'" 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. <a href="#fnref:first" class="footnote-backref" role="doc-backlink">↩︎</a></p>
|
||||
</li>
|
||||
|
||||
<li id="fn:second" role="doc-endnote">
|
||||
<p>This is the second note. <a href="#fnref:second" class="footnote-backref" role="doc-backlink">↩︎</a></p>
|
||||
</li>
|
||||
|
||||
<li id="fn:third" role="doc-endnote">
|
||||
<p>This is the third note, defined out of order. <a href="#fnref:third" class="footnote-backref" role="doc-backlink">↩︎</a></p>
|
||||
</li>
|
||||
|
||||
<li id="fn:fourth" role="doc-endnote">
|
||||
<p>This is the fourth note. <a href="#fnref:fourth" class="footnote-backref" role="doc-backlink">↩︎</a></p>
|
||||
</li>
|
||||
|
||||
<li id="fn:1" role="doc-endnote">
|
||||
<p>Content for fifth footnote. <a href="#fnref:1" class="footnote-backref" role="doc-backlink">↩︎</a> <a href="#fnref2:1" class="footnote-backref" role="doc-backlink">↩︎</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>. <a href="#fnref:2" class="footnote-backref" role="doc-backlink">↩︎</a></p>
|
||||
</li>
|
||||
|
||||
<li id="fn:fn-name" role="doc-endnote">
|
||||
<p>Footnote beginning on the line next to the marker. <a href="#fnref:fn-name" class="footnote-backref" role="doc-backlink">↩︎</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">↩︎</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> <a href="#fnref:reference" class="footnote-backref" role="doc-backlink">↩︎</a></p>
|
||||
</li>
|
||||
|
||||
<li id="fn:1$^!"'" role="doc-endnote">
|
||||
<p>Haha! <a href="#fnref:1$^!"'" class="footnote-backref" role="doc-backlink">↩︎</a></p>
|
||||
</li>
|
||||
|
||||
<li id="fn:image-mixed" role="doc-endnote">
|
||||
<p>Footnote Content <a class="footnote-backref" role="doc-backlink" href="#fnref:image-mixed">↩︎</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. <a href="#fnref:nested" class="footnote-backref" role="doc-backlink">↩︎</a></p>
|
||||
</li>
|
||||
|
||||
</ol>
|
||||
</div>
|
||||
|
|
@ -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 }
|
||||
|
|
@ -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>
|
||||
|
|
@ -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>
|
||||
|
|
@ -0,0 +1,131 @@
|
|||
<h1>Markdown inside code blocks</h1>
|
||||
|
||||
<div>
|
||||
|
||||
<p>foo</p>
|
||||
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
<p>foo</p>
|
||||
|
||||
</div>
|
||||
|
||||
<div>
|
||||
|
||||
<p>foo</p>
|
||||
|
||||
</div>
|
||||
|
||||
<table>
|
||||
<tr><td>test <em>emphasis</em> (span)</td></tr>
|
||||
</table>
|
||||
|
||||
<table>
|
||||
<tr><td>test <em>emphasis</em> (span)</td></tr>
|
||||
</table>
|
||||
|
||||
<table>
|
||||
<tr><td>
|
||||
|
||||
<p>test <em>emphasis</em> (block)</p>
|
||||
|
||||
</td></tr>
|
||||
</table>
|
||||
|
||||
<h2>More complicated</h2>
|
||||
|
||||
<table>
|
||||
<tr><td>
|
||||
* this is <em>not</em> a list item</td></tr>
|
||||
<tr><td>
|
||||
* this is <em>not</em> a list item</td></tr>
|
||||
<tr><td>
|
||||
|
||||
<ul>
|
||||
<li>this <em>is</em> a list item</li>
|
||||
</ul>
|
||||
|
||||
</td></tr>
|
||||
</table>
|
||||
|
||||
<h2>With indent</h2>
|
||||
|
||||
<div>
|
||||
<div>
|
||||
|
||||
<p>This text is no code block: if it was, the
|
||||
closing <code><div></code> would be too and the HTML block
|
||||
would be invalid.</p>
|
||||
|
||||
<p>Markdown content in HTML blocks is assumed to be
|
||||
indented the same as the block opening tag.</p>
|
||||
|
||||
<p><strong>This should be the third paragraph after the header.</strong></p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h2>Code block with rogue <code></div></code>s in Markdown code span and block</h2>
|
||||
|
||||
<div>
|
||||
<div>
|
||||
|
||||
<p>This is a code block however:</p>
|
||||
|
||||
<pre><code></div>
|
||||
</code></pre>
|
||||
|
||||
<p>Funny isn't it? Here is a code span: <code></div></code>.</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<div>
|
||||
|
||||
<ul>
|
||||
<li>List item, not a code block</li>
|
||||
</ul>
|
||||
|
||||
<p>Some text</p>
|
||||
|
||||
<pre><code>This is a code block.
|
||||
</code></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h2>No code block in markdown span mode</h2>
|
||||
|
||||
<p>
|
||||
This is not a code block since Markdown parse paragraph
|
||||
content as span. Code spans like <code></p></code> are allowed though.
|
||||
</p>
|
||||
|
||||
<p><em>Hello</em> <em>world</em></p>
|
||||
|
||||
<p class="poem">
|
||||
line 1<br />
|
||||
line 2<br />
|
||||
line 3
|
||||
</p>
|
||||
|
||||
<h2>Preserving attributes and tags on more than one line:</h2>
|
||||
|
||||
<p class="test"
|
||||
id="12">
|
||||
Some <em>span</em> content.
|
||||
</p>
|
||||
|
||||
<h2>Header confusion bug</h2>
|
||||
|
||||
<table class="canvas">
|
||||
<tr>
|
||||
<td id="main">Hello World!
|
||||
============
|
||||
|
||||
Hello World!</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
This is an [inline link](/url "title"){.class #inline-link}.
|
||||
|
||||
This is a [reference link][refid].
|
||||
|
||||
This is an {.class #inline-img}.
|
||||
|
||||
This is a ![reference image][refid].
|
||||
|
||||
[refid]: /path/to/something (Title) { .class #ref data-key=val }
|
||||
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
<p>This is an <a href="/url" title="title" class="class" id="inline-link">inline link</a>.</p>
|
||||
|
||||
<p>This is a <a href="/path/to/something" title="Title" class="class" id="ref" data-key="val">reference link</a>.</p>
|
||||
|
||||
<p>This is an <img alt="inline image" src="/img" title="title" class="class" id="inline-img" />.</p>
|
||||
|
||||
<p>This is a <img alt="reference image" src="/path/to/something" title="Title" class="class" id="ref" data-key="val" />.</p>
|
||||
|
||||
113
system/vendor/michelf/php-markdown/test/resources/php-markdown-extra.mdtest/Tables.text
vendored
Normal file
113
system/vendor/michelf/php-markdown/test/resources/php-markdown-extra.mdtest/Tables.text
vendored
Normal file
|
|
@ -0,0 +1,113 @@
|
|||
# Simple tables
|
||||
|
||||
Header 1 | Header 2
|
||||
--------- | ---------
|
||||
Cell 1 | Cell 2
|
||||
Cell 3 | Cell 4
|
||||
|
||||
With leading pipes:
|
||||
|
||||
| Header 1 | Header 2
|
||||
| --------- | ---------
|
||||
| Cell 1 | Cell 2
|
||||
| Cell 3 | Cell 4
|
||||
|
||||
With tailing pipes:
|
||||
|
||||
Header 1 | Header 2 |
|
||||
--------- | --------- |
|
||||
Cell 1 | Cell 2 |
|
||||
Cell 3 | Cell 4 |
|
||||
|
||||
With leading and tailing pipes:
|
||||
|
||||
| Header 1 | Header 2 |
|
||||
| --------- | --------- |
|
||||
| Cell 1 | Cell 2 |
|
||||
| Cell 3 | Cell 4 |
|
||||
|
||||
* * *
|
||||
|
||||
# One-column one-row table
|
||||
|
||||
With leading pipes:
|
||||
|
||||
| Header
|
||||
| -------
|
||||
| Cell
|
||||
|
||||
With tailing pipes:
|
||||
|
||||
Header |
|
||||
------- |
|
||||
Cell |
|
||||
|
||||
With leading and tailing pipes:
|
||||
|
||||
| Header |
|
||||
| ------- |
|
||||
| Cell |
|
||||
|
||||
* * *
|
||||
|
||||
Table alignement:
|
||||
|
||||
| Default | Right | Center | Left |
|
||||
| --------- |:--------- |:---------:| ---------:|
|
||||
| Long Cell | Long Cell | Long Cell | Long Cell |
|
||||
| Cell | Cell | Cell | Cell |
|
||||
|
||||
Table alignement (alternate spacing):
|
||||
|
||||
| Default | Right | Center | Left |
|
||||
| --------- | :-------- | :-------: | --------: |
|
||||
| Long Cell | Long Cell | Long Cell | Long Cell |
|
||||
| Cell | Cell | Cell | Cell |
|
||||
|
||||
* * *
|
||||
|
||||
# Empty cells
|
||||
|
||||
| Header 1 | Header 2 |
|
||||
| --------- | --------- |
|
||||
| A | B |
|
||||
| C | |
|
||||
|
||||
Header 1 | Header 2
|
||||
--------- | ---------
|
||||
A | B
|
||||
| D
|
||||
|
||||
* * *
|
||||
|
||||
# Missing tailing pipe
|
||||
|
||||
Header 1 | Header 2
|
||||
--------- | --------- |
|
||||
Cell | Cell |
|
||||
Cell | Cell |
|
||||
|
||||
Header 1 | Header 2 |
|
||||
--------- | ---------
|
||||
Cell | Cell |
|
||||
Cell | Cell |
|
||||
|
||||
Header 1 | Header 2 |
|
||||
--------- | --------- |
|
||||
Cell | Cell
|
||||
Cell | Cell |
|
||||
|
||||
Header 1 | Header 2 |
|
||||
--------- | --------- |
|
||||
Cell | Cell |
|
||||
Cell | Cell
|
||||
|
||||
* * *
|
||||
|
||||
# Too many pipes in rows
|
||||
|
||||
| Header 1 | Header 2 |
|
||||
| ---------
|
||||
| Cell | Cell | Extra cell? |
|
||||
| Cell | Cell | Extra cell? |
|
||||
|
||||
333
system/vendor/michelf/php-markdown/test/resources/php-markdown-extra.mdtest/Tables.xhtml
vendored
Normal file
333
system/vendor/michelf/php-markdown/test/resources/php-markdown-extra.mdtest/Tables.xhtml
vendored
Normal file
|
|
@ -0,0 +1,333 @@
|
|||
<h1>Simple tables</h1>
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Header 1</th>
|
||||
<th>Header 2</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Cell 1</td>
|
||||
<td>Cell 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Cell 3</td>
|
||||
<td>Cell 4</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<p>With leading pipes:</p>
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Header 1</th>
|
||||
<th>Header 2</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Cell 1</td>
|
||||
<td>Cell 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Cell 3</td>
|
||||
<td>Cell 4</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<p>With tailing pipes:</p>
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Header 1</th>
|
||||
<th>Header 2</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Cell 1</td>
|
||||
<td>Cell 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Cell 3</td>
|
||||
<td>Cell 4</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<p>With leading and tailing pipes:</p>
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Header 1</th>
|
||||
<th>Header 2</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Cell 1</td>
|
||||
<td>Cell 2</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Cell 3</td>
|
||||
<td>Cell 4</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<hr />
|
||||
|
||||
<h1>One-column one-row table</h1>
|
||||
|
||||
<p>With leading pipes:</p>
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Header</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Cell</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<p>With tailing pipes:</p>
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Header</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Cell</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<p>With leading and tailing pipes:</p>
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Header</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Cell</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<hr />
|
||||
|
||||
<p>Table alignement:</p>
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Default</th>
|
||||
<th align="left">Right</th>
|
||||
<th align="center">Center</th>
|
||||
<th align="right">Left</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Long Cell</td>
|
||||
<td align="left">Long Cell</td>
|
||||
<td align="center">Long Cell</td>
|
||||
<td align="right">Long Cell</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Cell</td>
|
||||
<td align="left">Cell</td>
|
||||
<td align="center">Cell</td>
|
||||
<td align="right">Cell</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<p>Table alignement (alternate spacing):</p>
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Default</th>
|
||||
<th align="left">Right</th>
|
||||
<th align="center">Center</th>
|
||||
<th align="right">Left</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Long Cell</td>
|
||||
<td align="left">Long Cell</td>
|
||||
<td align="center">Long Cell</td>
|
||||
<td align="right">Long Cell</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Cell</td>
|
||||
<td align="left">Cell</td>
|
||||
<td align="center">Cell</td>
|
||||
<td align="right">Cell</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<hr />
|
||||
|
||||
<h1>Empty cells</h1>
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Header 1</th>
|
||||
<th>Header 2</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>A</td>
|
||||
<td>B</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>C</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Header 1</th>
|
||||
<th>Header 2</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>A</td>
|
||||
<td>B</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>D</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<hr />
|
||||
|
||||
<h1>Missing tailing pipe</h1>
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Header 1</th>
|
||||
<th>Header 2</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Cell</td>
|
||||
<td>Cell</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Cell</td>
|
||||
<td>Cell</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Header 1</th>
|
||||
<th>Header 2</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Cell</td>
|
||||
<td>Cell</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Cell</td>
|
||||
<td>Cell</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Header 1</th>
|
||||
<th>Header 2</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Cell</td>
|
||||
<td>Cell</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Cell</td>
|
||||
<td>Cell</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Header 1</th>
|
||||
<th>Header 2</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Cell</td>
|
||||
<td>Cell</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Cell</td>
|
||||
<td>Cell</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<hr />
|
||||
|
||||
<h1>Too many pipes in rows</h1>
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Header 1</th>
|
||||
<th>Header 2</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Cell</td>
|
||||
<td>Cell | Extra cell?</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Cell</td>
|
||||
<td>Cell | Extra cell?</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue