From 2524a9bb37d7ef41b3649508eb03a9b66fd4bdc4 Mon Sep 17 00:00:00 2001
From: =?utf8?q?Tim=20D=C3=BCsterhus?=
Date: Fri, 3 Jun 2016 00:16:30 +0200
Subject: [PATCH] Install Parsedown via composer
---
.../install/files/lib/system/api/autoload.php | 2 +-
.../files/lib/system/api/composer.json | 3 +-
.../files/lib/system/api/composer.lock | 116 +++----------
.../lib/system/api/composer/ClassLoader.php | 8 +-
.../files/lib/system/api/composer/LICENSE | 2 +-
.../system/api/composer/autoload_files.php | 2 +-
.../api/composer/autoload_namespaces.php | 1 +
.../lib/system/api/composer/autoload_psr4.php | 3 -
.../lib/system/api/composer/autoload_real.php | 53 +++---
.../system/api/composer/autoload_static.php | 37 ++++
.../lib/system/api/composer/installed.json | 154 +++++------------
.../system/api/erusev/parsedown/.travis.yml | 16 ++
.../api/{ => erusev}/parsedown/LICENSE.txt | 0
.../api/{ => erusev}/parsedown/Parsedown.php | 64 +++----
.../api/{ => erusev}/parsedown/README.md | 23 ++-
.../system/api/erusev/parsedown/composer.json | 18 ++
.../api/erusev/parsedown/phpunit.xml.dist | 8 +
.../erusev/parsedown/test/CommonMarkTest.php | 74 ++++++++
.../erusev/parsedown/test/ParsedownTest.php | 159 ++++++++++++++++++
.../erusev/parsedown/test/TestParsedown.php | 5 +
.../api/erusev/parsedown/test/bootstrap.php | 3 +
.../parsedown/test/data/aesthetic_table.html | 18 ++
.../parsedown/test/data/aesthetic_table.md | 4 +
.../parsedown/test/data/aligned_table.html | 21 +++
.../parsedown/test/data/aligned_table.md | 4 +
.../parsedown/test/data/atx_heading.html | 9 +
.../erusev/parsedown/test/data/atx_heading.md | 17 ++
.../parsedown/test/data/automatic_link.html | 1 +
.../parsedown/test/data/automatic_link.md | 1 +
.../parsedown/test/data/block-level_html.html | 12 ++
.../parsedown/test/data/block-level_html.md | 16 ++
.../parsedown/test/data/code_block.html | 8 +
.../erusev/parsedown/test/data/code_block.md | 10 ++
.../erusev/parsedown/test/data/code_span.html | 6 +
.../erusev/parsedown/test/data/code_span.md | 11 ++
.../test/data/compound_blockquote.html | 9 +
.../test/data/compound_blockquote.md | 10 ++
.../test/data/compound_emphasis.html | 2 +
.../parsedown/test/data/compound_emphasis.md | 4 +
.../parsedown/test/data/compound_list.html | 12 ++
.../parsedown/test/data/compound_list.md | 7 +
.../test/data/deeply_nested_list.html | 12 ++
.../parsedown/test/data/deeply_nested_list.md | 6 +
.../erusev/parsedown/test/data/em_strong.html | 8 +
.../erusev/parsedown/test/data/em_strong.md | 15 ++
.../api/erusev/parsedown/test/data/email.html | 1 +
.../api/erusev/parsedown/test/data/email.md | 1 +
.../erusev/parsedown/test/data/emphasis.html | 8 +
.../erusev/parsedown/test/data/emphasis.md | 13 ++
.../erusev/parsedown/test/data/escaping.html | 6 +
.../erusev/parsedown/test/data/escaping.md | 11 ++
.../test/data/fenced_code_block.html | 6 +
.../parsedown/test/data/fenced_code_block.md | 14 ++
.../parsedown/test/data/horizontal_rule.html | 5 +
.../parsedown/test/data/horizontal_rule.md | 9 +
.../parsedown/test/data/html_comment.html | 5 +
.../parsedown/test/data/html_comment.md | 8 +
.../parsedown/test/data/html_entity.html | 1 +
.../erusev/parsedown/test/data/html_entity.md | 1 +
.../parsedown/test/data/image_reference.html | 2 +
.../parsedown/test/data/image_reference.md | 5 +
.../parsedown/test/data/image_title.html | 2 +
.../erusev/parsedown/test/data/image_title.md | 3 +
.../test/data/implicit_reference.html | 4 +
.../parsedown/test/data/implicit_reference.md | 13 ++
.../parsedown/test/data/inline_link.html | 6 +
.../erusev/parsedown/test/data/inline_link.md | 11 ++
.../test/data/inline_link_title.html | 6 +
.../parsedown/test/data/inline_link_title.md | 11 ++
.../parsedown/test/data/inline_title.html | 1 +
.../parsedown/test/data/inline_title.md | 1 +
.../parsedown/test/data/lazy_blockquote.html | 6 +
.../parsedown/test/data/lazy_blockquote.md | 5 +
.../erusev/parsedown/test/data/lazy_list.html | 4 +
.../erusev/parsedown/test/data/lazy_list.md | 2 +
.../parsedown/test/data/line_break.html | 2 +
.../erusev/parsedown/test/data/line_break.md | 2 +
.../test/data/multiline_list_paragraph.html | 7 +
.../test/data/multiline_list_paragraph.md | 4 +
.../test/data/nested_block-level_html.html | 10 ++
.../test/data/nested_block-level_html.md | 11 ++
.../parsedown/test/data/ordered_list.html | 13 ++
.../parsedown/test/data/ordered_list.md | 11 ++
.../parsedown/test/data/paragraph_list.html | 12 ++
.../parsedown/test/data/paragraph_list.md | 9 +
.../parsedown/test/data/reference_title.html | 2 +
.../parsedown/test/data/reference_title.md | 6 +
.../test/data/self-closing_html.html | 12 ++
.../parsedown/test/data/self-closing_html.md | 12 ++
.../test/data/separated_nested_list.html | 9 +
.../test/data/separated_nested_list.md | 4 +
.../parsedown/test/data/setext_header.html | 5 +
.../parsedown/test/data/setext_header.md | 12 ++
.../test/data/simple_blockquote.html | 11 ++
.../parsedown/test/data/simple_blockquote.md | 7 +
.../parsedown/test/data/simple_table.html | 37 ++++
.../parsedown/test/data/simple_table.md | 11 ++
.../parsedown/test/data/span-level_html.html | 5 +
.../parsedown/test/data/span-level_html.md | 8 +
.../test/data/sparse_dense_list.html | 7 +
.../parsedown/test/data/sparse_dense_list.md | 4 +
.../parsedown/test/data/sparse_html.html | 8 +
.../erusev/parsedown/test/data/sparse_html.md | 8 +
.../parsedown/test/data/sparse_list.html | 15 ++
.../erusev/parsedown/test/data/sparse_list.md | 9 +
.../test/data/special_characters.html | 6 +
.../parsedown/test/data/special_characters.md | 13 ++
.../parsedown/test/data/strikethrough.html | 3 +
.../parsedown/test/data/strikethrough.md | 5 +
.../erusev/parsedown/test/data/strong_em.html | 6 +
.../erusev/parsedown/test/data/strong_em.md | 11 ++
.../test/data/tab-indented_code_block.html | 6 +
.../test/data/tab-indented_code_block.md | 6 +
.../test/data/table_inline_markdown.html | 22 +++
.../test/data/table_inline_markdown.md | 5 +
.../parsedown/test/data/text_reference.html | 8 +
.../parsedown/test/data/text_reference.md | 21 +++
.../parsedown/test/data/unordered_list.html | 10 ++
.../parsedown/test/data/unordered_list.md | 8 +
.../parsedown/test/data/untidy_table.html | 18 ++
.../parsedown/test/data/untidy_table.md | 4 +
.../parsedown/test/data/url_autolinking.html | 3 +
.../parsedown/test/data/url_autolinking.md | 5 +
.../parsedown/test/data/whitespace.html | 1 +
.../erusev/parsedown/test/data/whitespace.md | 5 +
.../files/lib/system/api/parsedown/version | 1 -
126 files changed, 1310 insertions(+), 275 deletions(-)
create mode 100644 wcfsetup/install/files/lib/system/api/composer/autoload_static.php
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/.travis.yml
rename wcfsetup/install/files/lib/system/api/{ => erusev}/parsedown/LICENSE.txt (100%)
rename wcfsetup/install/files/lib/system/api/{ => erusev}/parsedown/Parsedown.php (95%)
rename wcfsetup/install/files/lib/system/api/{ => erusev}/parsedown/README.md (69%)
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/composer.json
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/phpunit.xml.dist
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/CommonMarkTest.php
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/ParsedownTest.php
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/TestParsedown.php
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/bootstrap.php
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/aesthetic_table.html
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/aesthetic_table.md
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/aligned_table.html
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/aligned_table.md
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/atx_heading.html
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/atx_heading.md
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/automatic_link.html
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/automatic_link.md
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/block-level_html.html
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/block-level_html.md
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/code_block.html
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/code_block.md
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/code_span.html
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/code_span.md
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/compound_blockquote.html
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/compound_blockquote.md
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/compound_emphasis.html
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/compound_emphasis.md
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/compound_list.html
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/compound_list.md
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/deeply_nested_list.html
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/deeply_nested_list.md
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/em_strong.html
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/em_strong.md
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/email.html
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/email.md
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/emphasis.html
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/emphasis.md
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/escaping.html
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/escaping.md
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/fenced_code_block.html
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/fenced_code_block.md
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/horizontal_rule.html
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/horizontal_rule.md
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/html_comment.html
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/html_comment.md
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/html_entity.html
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/html_entity.md
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/image_reference.html
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/image_reference.md
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/image_title.html
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/image_title.md
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/implicit_reference.html
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/implicit_reference.md
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/inline_link.html
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/inline_link.md
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/inline_link_title.html
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/inline_link_title.md
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/inline_title.html
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/inline_title.md
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/lazy_blockquote.html
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/lazy_blockquote.md
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/lazy_list.html
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/lazy_list.md
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/line_break.html
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/line_break.md
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/multiline_list_paragraph.html
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/multiline_list_paragraph.md
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/nested_block-level_html.html
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/nested_block-level_html.md
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/ordered_list.html
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/ordered_list.md
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/paragraph_list.html
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/paragraph_list.md
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/reference_title.html
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/reference_title.md
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/self-closing_html.html
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/self-closing_html.md
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/separated_nested_list.html
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/separated_nested_list.md
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/setext_header.html
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/setext_header.md
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/simple_blockquote.html
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/simple_blockquote.md
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/simple_table.html
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/simple_table.md
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/span-level_html.html
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/span-level_html.md
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/sparse_dense_list.html
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/sparse_dense_list.md
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/sparse_html.html
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/sparse_html.md
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/sparse_list.html
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/sparse_list.md
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/special_characters.html
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/special_characters.md
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/strikethrough.html
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/strikethrough.md
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/strong_em.html
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/strong_em.md
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/tab-indented_code_block.html
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/tab-indented_code_block.md
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/table_inline_markdown.html
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/table_inline_markdown.md
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/text_reference.html
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/text_reference.md
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/unordered_list.html
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/unordered_list.md
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/untidy_table.html
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/untidy_table.md
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/url_autolinking.html
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/url_autolinking.md
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/whitespace.html
create mode 100644 wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/whitespace.md
delete mode 100644 wcfsetup/install/files/lib/system/api/parsedown/version
diff --git a/wcfsetup/install/files/lib/system/api/autoload.php b/wcfsetup/install/files/lib/system/api/autoload.php
index 4694b275f6..42e256858d 100644
--- a/wcfsetup/install/files/lib/system/api/autoload.php
+++ b/wcfsetup/install/files/lib/system/api/autoload.php
@@ -4,4 +4,4 @@
require_once __DIR__ . '/composer' . '/autoload_real.php';
-return ComposerAutoloaderInitbf0ab6890db693133cef0043fae5b370::getLoader();
+return ComposerAutoloaderInit4a4e0e985ef68770d710dc260edc44ab::getLoader();
diff --git a/wcfsetup/install/files/lib/system/api/composer.json b/wcfsetup/install/files/lib/system/api/composer.json
index 19d6b352a0..59da5a24e3 100644
--- a/wcfsetup/install/files/lib/system/api/composer.json
+++ b/wcfsetup/install/files/lib/system/api/composer.json
@@ -3,6 +3,7 @@
"vendor-dir": "./"
},
"require": {
- "ezyang/htmlpurifier": "4.7.*"
+ "ezyang/htmlpurifier": "4.7.*",
+ "erusev/parsedown": "1.6.*"
}
}
diff --git a/wcfsetup/install/files/lib/system/api/composer.lock b/wcfsetup/install/files/lib/system/api/composer.lock
index 81c8f294c5..78f3be2314 100644
--- a/wcfsetup/install/files/lib/system/api/composer.lock
+++ b/wcfsetup/install/files/lib/system/api/composer.lock
@@ -4,35 +4,47 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
- "hash": "7364a2d47c47ff382d4617f4ac22e35c",
- "content-hash": "02969f5fb096600e5baaf84af039646e",
+ "hash": "e898b55b2609b488f1b137f6b9dd8d01",
+ "content-hash": "7dabe058d3ef475f63962fe1d5774a34",
"packages": [
{
- "name": "container-interop/container-interop",
- "version": "1.1.0",
+ "name": "erusev/parsedown",
+ "version": "1.6.0",
"source": {
"type": "git",
- "url": "https://github.com/container-interop/container-interop.git",
- "reference": "fc08354828f8fd3245f77a66b9e23a6bca48297e"
+ "url": "https://github.com/erusev/parsedown.git",
+ "reference": "3ebbd730b5c2cf5ce78bc1bf64071407fc6674b7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/container-interop/container-interop/zipball/fc08354828f8fd3245f77a66b9e23a6bca48297e",
- "reference": "fc08354828f8fd3245f77a66b9e23a6bca48297e",
+ "url": "https://api.github.com/repos/erusev/parsedown/zipball/3ebbd730b5c2cf5ce78bc1bf64071407fc6674b7",
+ "reference": "3ebbd730b5c2cf5ce78bc1bf64071407fc6674b7",
"shasum": ""
},
"type": "library",
"autoload": {
- "psr-4": {
- "Interop\\Container\\": "src/Interop/Container/"
+ "psr-0": {
+ "Parsedown": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
- "description": "Promoting the interoperability of container objects (DIC, SL, etc.)",
- "time": "2014-12-30 15:22:37"
+ "authors": [
+ {
+ "name": "Emanuil Rusev",
+ "email": "hello@erusev.com",
+ "homepage": "http://erusev.com"
+ }
+ ],
+ "description": "Parser for Markdown.",
+ "homepage": "http://parsedown.org",
+ "keywords": [
+ "markdown",
+ "parser"
+ ],
+ "time": "2015-10-04 16:44:32"
},
{
"name": "ezyang/htmlpurifier",
@@ -77,86 +89,6 @@
"html"
],
"time": "2015-08-05 01:03:42"
- },
- {
- "name": "php-di/invoker",
- "version": "1.2.0",
- "source": {
- "type": "git",
- "url": "https://github.com/PHP-DI/Invoker.git",
- "reference": "9949fff87fcf14e8f2ccfbe36dac1e5921944c48"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/PHP-DI/Invoker/zipball/9949fff87fcf14e8f2ccfbe36dac1e5921944c48",
- "reference": "9949fff87fcf14e8f2ccfbe36dac1e5921944c48",
- "shasum": ""
- },
- "require": {
- "container-interop/container-interop": "~1.1"
- },
- "require-dev": {
- "athletic/athletic": "~0.1.8",
- "phpunit/phpunit": "~4.5"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Invoker\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "Generic and extensible callable invoker",
- "homepage": "https://github.com/PHP-DI/Invoker",
- "keywords": [
- "callable",
- "dependency",
- "dependency-injection",
- "injection",
- "invoke",
- "invoker"
- ],
- "time": "2015-10-22 19:49:23"
- },
- {
- "name": "php-di/phpdoc-reader",
- "version": "2.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/PHP-DI/PhpDocReader.git",
- "reference": "21dce5e29f640d655e7b4583ecfb7d166127a5da"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/PHP-DI/PhpDocReader/zipball/21dce5e29f640d655e7b4583ecfb7d166127a5da",
- "reference": "21dce5e29f640d655e7b4583ecfb7d166127a5da",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.0"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.6"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "PhpDocReader\\": "src/PhpDocReader"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "PhpDocReader parses @var and @param values in PHP docblocks (supports namespaced class names with the same resolution rules as PHP)",
- "keywords": [
- "phpdoc",
- "reflection"
- ],
- "time": "2015-06-01 14:23:20"
}
],
"packages-dev": [],
diff --git a/wcfsetup/install/files/lib/system/api/composer/ClassLoader.php b/wcfsetup/install/files/lib/system/api/composer/ClassLoader.php
index 5e1469e830..ff6ecfb822 100644
--- a/wcfsetup/install/files/lib/system/api/composer/ClassLoader.php
+++ b/wcfsetup/install/files/lib/system/api/composer/ClassLoader.php
@@ -13,9 +13,7 @@
namespace Composer\Autoload;
/**
- * ClassLoader implements a PSR-0 class loader
- *
- * See https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md
+ * ClassLoader implements a PSR-0, PSR-4 and classmap class loader.
*
* $loader = new \Composer\Autoload\ClassLoader();
*
@@ -39,6 +37,8 @@ namespace Composer\Autoload;
*
* @author Fabien Potencier
* @author Jordi Boggiano
+ * @see http://www.php-fig.org/psr/psr-0/
+ * @see http://www.php-fig.org/psr/psr-4/
*/
class ClassLoader
{
@@ -147,7 +147,7 @@ class ClassLoader
* appending or prepending to the ones previously set for this namespace.
*
* @param string $prefix The prefix/namespace, with trailing '\\'
- * @param array|string $paths The PSR-0 base directories
+ * @param array|string $paths The PSR-4 base directories
* @param bool $prepend Whether to prepend the directories
*
* @throws \InvalidArgumentException
diff --git a/wcfsetup/install/files/lib/system/api/composer/LICENSE b/wcfsetup/install/files/lib/system/api/composer/LICENSE
index c8d57af8b2..1a28124886 100644
--- a/wcfsetup/install/files/lib/system/api/composer/LICENSE
+++ b/wcfsetup/install/files/lib/system/api/composer/LICENSE
@@ -1,5 +1,5 @@
-Copyright (c) 2015 Nils Adermann, Jordi Boggiano
+Copyright (c) 2016 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
diff --git a/wcfsetup/install/files/lib/system/api/composer/autoload_files.php b/wcfsetup/install/files/lib/system/api/composer/autoload_files.php
index 682ac2e2b4..583a5b7da4 100644
--- a/wcfsetup/install/files/lib/system/api/composer/autoload_files.php
+++ b/wcfsetup/install/files/lib/system/api/composer/autoload_files.php
@@ -6,5 +6,5 @@ $vendorDir = dirname(dirname(__FILE__));
$baseDir = $vendorDir;
return array(
- $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier.composer.php',
+ '2cffec82183ee1cea088009cef9a6fc3' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier.composer.php',
);
diff --git a/wcfsetup/install/files/lib/system/api/composer/autoload_namespaces.php b/wcfsetup/install/files/lib/system/api/composer/autoload_namespaces.php
index 870501a97e..701342db00 100644
--- a/wcfsetup/install/files/lib/system/api/composer/autoload_namespaces.php
+++ b/wcfsetup/install/files/lib/system/api/composer/autoload_namespaces.php
@@ -6,5 +6,6 @@ $vendorDir = dirname(dirname(__FILE__));
$baseDir = $vendorDir;
return array(
+ 'Parsedown' => array($vendorDir . '/erusev/parsedown'),
'HTMLPurifier' => array($vendorDir . '/ezyang/htmlpurifier/library'),
);
diff --git a/wcfsetup/install/files/lib/system/api/composer/autoload_psr4.php b/wcfsetup/install/files/lib/system/api/composer/autoload_psr4.php
index 2ccd01ea12..0c50d0a796 100644
--- a/wcfsetup/install/files/lib/system/api/composer/autoload_psr4.php
+++ b/wcfsetup/install/files/lib/system/api/composer/autoload_psr4.php
@@ -6,7 +6,4 @@ $vendorDir = dirname(dirname(__FILE__));
$baseDir = $vendorDir;
return array(
- 'PhpDocReader\\' => array($vendorDir . '/php-di/phpdoc-reader/src/PhpDocReader'),
- 'Invoker\\' => array($vendorDir . '/php-di/invoker/src'),
- 'Interop\\Container\\' => array($vendorDir . '/container-interop/container-interop/src/Interop/Container'),
);
diff --git a/wcfsetup/install/files/lib/system/api/composer/autoload_real.php b/wcfsetup/install/files/lib/system/api/composer/autoload_real.php
index cf860b92b3..287ef08662 100644
--- a/wcfsetup/install/files/lib/system/api/composer/autoload_real.php
+++ b/wcfsetup/install/files/lib/system/api/composer/autoload_real.php
@@ -2,7 +2,7 @@
// autoload_real.php @generated by Composer
-class ComposerAutoloaderInitbf0ab6890db693133cef0043fae5b370
+class ComposerAutoloaderInit4a4e0e985ef68770d710dc260edc44ab
{
private static $loader;
@@ -19,37 +19,52 @@ class ComposerAutoloaderInitbf0ab6890db693133cef0043fae5b370
return self::$loader;
}
- spl_autoload_register(array('ComposerAutoloaderInitbf0ab6890db693133cef0043fae5b370', 'loadClassLoader'), true, true);
+ spl_autoload_register(array('ComposerAutoloaderInit4a4e0e985ef68770d710dc260edc44ab', 'loadClassLoader'), true, true);
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
- spl_autoload_unregister(array('ComposerAutoloaderInitbf0ab6890db693133cef0043fae5b370', 'loadClassLoader'));
+ spl_autoload_unregister(array('ComposerAutoloaderInit4a4e0e985ef68770d710dc260edc44ab', 'loadClassLoader'));
- $map = require __DIR__ . '/autoload_namespaces.php';
- foreach ($map as $namespace => $path) {
- $loader->set($namespace, $path);
- }
+ $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION');
+ if ($useStaticLoader) {
+ require_once __DIR__ . '/autoload_static.php';
- $map = require __DIR__ . '/autoload_psr4.php';
- foreach ($map as $namespace => $path) {
- $loader->setPsr4($namespace, $path);
- }
+ call_user_func(\Composer\Autoload\ComposerStaticInit4a4e0e985ef68770d710dc260edc44ab::getInitializer($loader));
+ } else {
+ $map = require __DIR__ . '/autoload_namespaces.php';
+ foreach ($map as $namespace => $path) {
+ $loader->set($namespace, $path);
+ }
+
+ $map = require __DIR__ . '/autoload_psr4.php';
+ foreach ($map as $namespace => $path) {
+ $loader->setPsr4($namespace, $path);
+ }
- $classMap = require __DIR__ . '/autoload_classmap.php';
- if ($classMap) {
- $loader->addClassMap($classMap);
+ $classMap = require __DIR__ . '/autoload_classmap.php';
+ if ($classMap) {
+ $loader->addClassMap($classMap);
+ }
}
$loader->register(true);
- $includeFiles = require __DIR__ . '/autoload_files.php';
- foreach ($includeFiles as $file) {
- composerRequirebf0ab6890db693133cef0043fae5b370($file);
+ if ($useStaticLoader) {
+ $includeFiles = Composer\Autoload\ComposerStaticInit4a4e0e985ef68770d710dc260edc44ab::$files;
+ } else {
+ $includeFiles = require __DIR__ . '/autoload_files.php';
+ }
+ foreach ($includeFiles as $fileIdentifier => $file) {
+ composerRequire4a4e0e985ef68770d710dc260edc44ab($fileIdentifier, $file);
}
return $loader;
}
}
-function composerRequirebf0ab6890db693133cef0043fae5b370($file)
+function composerRequire4a4e0e985ef68770d710dc260edc44ab($fileIdentifier, $file)
{
- require $file;
+ if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
+ require $file;
+
+ $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
+ }
}
diff --git a/wcfsetup/install/files/lib/system/api/composer/autoload_static.php b/wcfsetup/install/files/lib/system/api/composer/autoload_static.php
new file mode 100644
index 0000000000..79d01f7cce
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/composer/autoload_static.php
@@ -0,0 +1,37 @@
+ __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier.composer.php',
+ );
+
+ public static $prefixesPsr0 = array (
+ 'P' =>
+ array (
+ 'Parsedown' =>
+ array (
+ 0 => __DIR__ . '/..' . '/erusev/parsedown',
+ ),
+ ),
+ 'H' =>
+ array (
+ 'HTMLPurifier' =>
+ array (
+ 0 => __DIR__ . '/..' . '/ezyang/htmlpurifier/library',
+ ),
+ ),
+ );
+
+ public static function getInitializer(ClassLoader $loader)
+ {
+ return \Closure::bind(function () use ($loader) {
+ $loader->prefixesPsr0 = ComposerStaticInit4a4e0e985ef68770d710dc260edc44ab::$prefixesPsr0;
+
+ }, null, ClassLoader::class);
+ }
+}
diff --git a/wcfsetup/install/files/lib/system/api/composer/installed.json b/wcfsetup/install/files/lib/system/api/composer/installed.json
index 24c222c2b0..9416badb24 100644
--- a/wcfsetup/install/files/lib/system/api/composer/installed.json
+++ b/wcfsetup/install/files/lib/system/api/composer/installed.json
@@ -1,117 +1,4 @@
[
- {
- "name": "php-di/phpdoc-reader",
- "version": "2.0.0",
- "version_normalized": "2.0.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/PHP-DI/PhpDocReader.git",
- "reference": "21dce5e29f640d655e7b4583ecfb7d166127a5da"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/PHP-DI/PhpDocReader/zipball/21dce5e29f640d655e7b4583ecfb7d166127a5da",
- "reference": "21dce5e29f640d655e7b4583ecfb7d166127a5da",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.0"
- },
- "require-dev": {
- "phpunit/phpunit": "~4.6"
- },
- "time": "2015-06-01 14:23:20",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "PhpDocReader\\": "src/PhpDocReader"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "PhpDocReader parses @var and @param values in PHP docblocks (supports namespaced class names with the same resolution rules as PHP)",
- "keywords": [
- "phpdoc",
- "reflection"
- ]
- },
- {
- "name": "container-interop/container-interop",
- "version": "1.1.0",
- "version_normalized": "1.1.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/container-interop/container-interop.git",
- "reference": "fc08354828f8fd3245f77a66b9e23a6bca48297e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/container-interop/container-interop/zipball/fc08354828f8fd3245f77a66b9e23a6bca48297e",
- "reference": "fc08354828f8fd3245f77a66b9e23a6bca48297e",
- "shasum": ""
- },
- "time": "2014-12-30 15:22:37",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Interop\\Container\\": "src/Interop/Container/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "Promoting the interoperability of container objects (DIC, SL, etc.)"
- },
- {
- "name": "php-di/invoker",
- "version": "1.2.0",
- "version_normalized": "1.2.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/PHP-DI/Invoker.git",
- "reference": "9949fff87fcf14e8f2ccfbe36dac1e5921944c48"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/PHP-DI/Invoker/zipball/9949fff87fcf14e8f2ccfbe36dac1e5921944c48",
- "reference": "9949fff87fcf14e8f2ccfbe36dac1e5921944c48",
- "shasum": ""
- },
- "require": {
- "container-interop/container-interop": "~1.1"
- },
- "require-dev": {
- "athletic/athletic": "~0.1.8",
- "phpunit/phpunit": "~4.5"
- },
- "time": "2015-10-22 19:49:23",
- "type": "library",
- "installation-source": "dist",
- "autoload": {
- "psr-4": {
- "Invoker\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "Generic and extensible callable invoker",
- "homepage": "https://github.com/PHP-DI/Invoker",
- "keywords": [
- "callable",
- "dependency",
- "dependency-injection",
- "injection",
- "invoke",
- "invoker"
- ]
- },
{
"name": "ezyang/htmlpurifier",
"version": "v4.7.0",
@@ -157,5 +44,46 @@
"keywords": [
"html"
]
+ },
+ {
+ "name": "erusev/parsedown",
+ "version": "1.6.0",
+ "version_normalized": "1.6.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/erusev/parsedown.git",
+ "reference": "3ebbd730b5c2cf5ce78bc1bf64071407fc6674b7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/erusev/parsedown/zipball/3ebbd730b5c2cf5ce78bc1bf64071407fc6674b7",
+ "reference": "3ebbd730b5c2cf5ce78bc1bf64071407fc6674b7",
+ "shasum": ""
+ },
+ "time": "2015-10-04 16:44:32",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-0": {
+ "Parsedown": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Emanuil Rusev",
+ "email": "hello@erusev.com",
+ "homepage": "http://erusev.com"
+ }
+ ],
+ "description": "Parser for Markdown.",
+ "homepage": "http://parsedown.org",
+ "keywords": [
+ "markdown",
+ "parser"
+ ]
}
]
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/.travis.yml b/wcfsetup/install/files/lib/system/api/erusev/parsedown/.travis.yml
new file mode 100644
index 0000000000..5df49dcb3c
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/.travis.yml
@@ -0,0 +1,16 @@
+language: php
+
+php:
+ - 7.0
+ - 5.6
+ - 5.5
+ - 5.4
+ - 5.3
+ - hhvm
+ - hhvm-nightly
+
+matrix:
+ fast_finish: true
+ allow_failures:
+ - php: 7.0
+ - php: hhvm-nightly
diff --git a/wcfsetup/install/files/lib/system/api/parsedown/LICENSE.txt b/wcfsetup/install/files/lib/system/api/erusev/parsedown/LICENSE.txt
similarity index 100%
rename from wcfsetup/install/files/lib/system/api/parsedown/LICENSE.txt
rename to wcfsetup/install/files/lib/system/api/erusev/parsedown/LICENSE.txt
diff --git a/wcfsetup/install/files/lib/system/api/parsedown/Parsedown.php b/wcfsetup/install/files/lib/system/api/erusev/parsedown/Parsedown.php
similarity index 95%
rename from wcfsetup/install/files/lib/system/api/parsedown/Parsedown.php
rename to wcfsetup/install/files/lib/system/api/erusev/parsedown/Parsedown.php
index c5a8123331..c8c92a3924 100644
--- a/wcfsetup/install/files/lib/system/api/parsedown/Parsedown.php
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/Parsedown.php
@@ -17,7 +17,7 @@ class Parsedown
{
# ~
- const version = '1.5.1';
+ const version = '1.6.0';
# ~
@@ -107,12 +107,6 @@ class Parsedown
# ~
- protected $DefinitionTypes = array(
- '[' => array('Reference'),
- );
-
- # ~
-
protected $unmarkedBlockTypes = array(
'Code',
);
@@ -169,7 +163,7 @@ class Parsedown
# ~
- if (isset($CurrentBlock['incomplete']))
+ if (isset($CurrentBlock['continuable']))
{
$Block = $this->{'block'.$CurrentBlock['type'].'Continue'}($Line, $CurrentBlock);
@@ -185,8 +179,6 @@ class Parsedown
{
$CurrentBlock = $this->{'block'.$CurrentBlock['type'].'Complete'}($CurrentBlock);
}
-
- unset($CurrentBlock['incomplete']);
}
}
@@ -226,7 +218,7 @@ class Parsedown
if (method_exists($this, 'block'.$blockType.'Continue'))
{
- $Block['incomplete'] = true;
+ $Block['continuable'] = true;
}
$CurrentBlock = $Block;
@@ -253,7 +245,7 @@ class Parsedown
# ~
- if (isset($CurrentBlock['incomplete']) and method_exists($this, 'block'.$CurrentBlock['type'].'Complete'))
+ if (isset($CurrentBlock['continuable']) and method_exists($this, 'block'.$CurrentBlock['type'].'Complete'))
{
$CurrentBlock = $this->{'block'.$CurrentBlock['type'].'Complete'}($CurrentBlock);
}
@@ -394,16 +386,16 @@ class Parsedown
protected function blockFencedCode($Line)
{
- if (preg_match('/^(['.$Line['text'][0].']{3,})[ ]*([\w-]+)?[ ]*$/', $Line['text'], $matches))
+ if (preg_match('/^['.$Line['text'][0].']{3,}[ ]*([\w-]+)?[ ]*$/', $Line['text'], $matches))
{
$Element = array(
'name' => 'code',
'text' => '',
);
- if (isset($matches[2]))
+ if (isset($matches[1]))
{
- $class = 'language-'.$matches[2];
+ $class = 'language-'.$matches[1];
$Element['attributes'] = array(
'class' => $class,
@@ -673,7 +665,9 @@ class Parsedown
if (preg_match('/^<(\w*)(?:[ ]*'.$this->regexHtmlAttribute.')*[ ]*(\/)?>/', $Line['text'], $matches))
{
- if (in_array($matches[1], $this->textLevelElements))
+ $element = strtolower($matches[1]);
+
+ if (in_array($element, $this->textLevelElements))
{
return;
}
@@ -987,15 +981,13 @@ class Parsedown
{
$markup = '';
- $unexaminedText = $text;
+ # $excerpt is based on the first occurrence of a marker
- $markerPosition = 0;
-
- while ($excerpt = strpbrk($unexaminedText, $this->inlineMarkerList))
+ while ($excerpt = strpbrk($text, $this->inlineMarkerList))
{
$marker = $excerpt[0];
- $markerPosition += strpos($unexaminedText, $marker);
+ $markerPosition = strpos($text, $marker);
$Excerpt = array('text' => $excerpt, 'context' => $text);
@@ -1008,34 +1000,42 @@ class Parsedown
continue;
}
- if (isset($Inline['position']) and $Inline['position'] > $markerPosition) # position is ahead of marker
+ # makes sure that the inline belongs to "our" marker
+
+ if (isset($Inline['position']) and $Inline['position'] > $markerPosition)
{
continue;
}
+ # sets a default inline position
+
if ( ! isset($Inline['position']))
{
$Inline['position'] = $markerPosition;
}
+ # the text that comes before the inline
$unmarkedText = substr($text, 0, $Inline['position']);
+ # compile the unmarked text
$markup .= $this->unmarkedText($unmarkedText);
+ # compile the inline
$markup .= isset($Inline['markup']) ? $Inline['markup'] : $this->element($Inline['element']);
+ # remove the examined text
$text = substr($text, $Inline['position'] + $Inline['extent']);
- $unexaminedText = $text;
-
- $markerPosition = 0;
-
continue 2;
}
- $unexaminedText = substr($excerpt, 1);
+ # the marker does not belong to an inline
+
+ $unmarkedText = substr($text, 0, $markerPosition + 1);
+
+ $markup .= $this->unmarkedText($unmarkedText);
- $markerPosition ++;
+ $text = substr($text, $markerPosition + 1);
}
$markup .= $this->unmarkedText($text);
@@ -1197,7 +1197,7 @@ class Parsedown
return;
}
- if (preg_match('/^[(]((?:[^ ()]|[(][^ )]+[)])+)(?:[ ]+("[^"]+"|\'[^\']+\'))?[)]/', $remainder, $matches))
+ if (preg_match('/^[(]((?:[^ ()]|[(][^ )]+[)])+)(?:[ ]+("[^"]*"|\'[^\']*\'))?[)]/', $remainder, $matches))
{
$Element['attributes']['href'] = $matches[1];
@@ -1212,7 +1212,7 @@ class Parsedown
{
if (preg_match('/^\s*\[(.*?)\]/', $remainder, $matches))
{
- $definition = $matches[1] ? $matches[1] : $Element['text'];
+ $definition = strlen($matches[1]) ? $matches[1] : $Element['text'];
$definition = strtolower($definition);
$extent += strlen($matches[0]);
@@ -1402,7 +1402,7 @@ class Parsedown
if (isset($Element['handler']))
{
- $markup .= $this->$Element['handler']($Element['text']);
+ $markup .= $this->{$Element['handler']}($Element['text']);
}
else
{
@@ -1476,7 +1476,7 @@ class Parsedown
return self::$instances[$name];
}
- $instance = new self();
+ $instance = new static();
self::$instances[$name] = $instance;
diff --git a/wcfsetup/install/files/lib/system/api/parsedown/README.md b/wcfsetup/install/files/lib/system/api/erusev/parsedown/README.md
similarity index 69%
rename from wcfsetup/install/files/lib/system/api/parsedown/README.md
rename to wcfsetup/install/files/lib/system/api/erusev/parsedown/README.md
index 8d485e7d27..6f9f649856 100644
--- a/wcfsetup/install/files/lib/system/api/parsedown/README.md
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/README.md
@@ -1,16 +1,21 @@
## Parsedown
+[![Build Status](https://img.shields.io/travis/erusev/parsedown/master.svg?style=flat-square)](https://travis-ci.org/erusev/parsedown)
+
+
Better Markdown Parser in PHP
-[[ demo ]](http://parsedown.org/demo)
+[Demo](http://parsedown.org/demo) |
+[Benchmarks](http://parsedown.org/speed) |
+[Tests](http://parsedown.org/tests/) |
+[Documentation](https://github.com/erusev/parsedown/wiki/)
### Features
-* [Fast](http://parsedown.org/speed)
-* [Consistent](http://parsedown.org/consistency)
+* Super Fast
* [GitHub flavored](https://help.github.com/articles/github-flavored-markdown)
-* [Tested](http://parsedown.org/tests/) in PHP 5.2, 5.3, 5.4, 5.5, 5.6 and [hhvm](http://www.hhvm.com/)
-* [Extensible](https://github.com/erusev/parsedown/wiki/Writing-Extensions)
+* Extensible
+* Tested in 5.3 to 5.6
* [Markdown Extra extension](https://github.com/erusev/parsedown-extra)
### Installation
@@ -25,7 +30,7 @@ $Parsedown = new Parsedown();
echo $Parsedown->text('Hello _Parsedown_!'); # prints: Hello Parsedown!
```
-More examples in [the wiki](https://github.com/erusev/parsedown/wiki/Usage) and in [this video tutorial](http://youtu.be/wYZBY8DEikI).
+More examples in [the wiki](https://github.com/erusev/parsedown/wiki/) and in [this video tutorial](http://youtu.be/wYZBY8DEikI).
### Questions
@@ -45,4 +50,8 @@ It passes most of the CommonMark tests. Most of the tests that don't pass deal w
**How can I help?**
-Use it, star it, share it and if you feel generous, [donate some money](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=528P3NZQMP8N2).
+Use it, star it, share it and if you feel generous, [donate](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=528P3NZQMP8N2).
+
+---
+
+You might also like [Caret](http://caret.io) - our Markdown editor for the desktop.
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/composer.json b/wcfsetup/install/files/lib/system/api/erusev/parsedown/composer.json
new file mode 100644
index 0000000000..1439b824dd
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/composer.json
@@ -0,0 +1,18 @@
+{
+ "name": "erusev/parsedown",
+ "description": "Parser for Markdown.",
+ "keywords": ["markdown", "parser"],
+ "homepage": "http://parsedown.org",
+ "type": "library",
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "Emanuil Rusev",
+ "email": "hello@erusev.com",
+ "homepage": "http://erusev.com"
+ }
+ ],
+ "autoload": {
+ "psr-0": {"Parsedown": ""}
+ }
+}
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/phpunit.xml.dist b/wcfsetup/install/files/lib/system/api/erusev/parsedown/phpunit.xml.dist
new file mode 100644
index 0000000000..b2d5e9d4fe
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/phpunit.xml.dist
@@ -0,0 +1,8 @@
+
+
+
+
+ test/ParsedownTest.php
+
+
+
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/CommonMarkTest.php b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/CommonMarkTest.php
new file mode 100644
index 0000000000..9b8d116209
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/CommonMarkTest.php
@@ -0,0 +1,74 @@
+setUrlsLinked(false);
+
+ $actualHtml = $Parsedown->text($markdown);
+ $actualHtml = $this->normalizeMarkup($actualHtml);
+
+ $this->assertEquals($expectedHtml, $actualHtml);
+ }
+
+ function data()
+ {
+ $spec = file_get_contents(self::SPEC_URL);
+ $spec = strstr($spec, '', true);
+
+ $tests = array();
+ $currentSection = '';
+
+ preg_replace_callback(
+ '/^\.\n([\s\S]*?)^\.\n([\s\S]*?)^\.$|^#{1,6} *(.*)$/m',
+ function($matches) use ( & $tests, & $currentSection, & $testCount) {
+ if (isset($matches[3]) and $matches[3]) {
+ $currentSection = $matches[3];
+ } else {
+ $testCount++;
+ $markdown = $matches[1];
+ $markdown = preg_replace('/â/', "\t", $markdown);
+ $expectedHtml = $matches[2];
+ $expectedHtml = $this->normalizeMarkup($expectedHtml);
+ $tests []= array(
+ $currentSection, # section
+ $markdown, # markdown
+ $expectedHtml, # html
+ );
+ }
+ },
+ $spec
+ );
+
+ return $tests;
+ }
+
+ private function normalizeMarkup($markup)
+ {
+ $markup = preg_replace("/\n+/", "\n", $markup);
+ $markup = preg_replace('/^\s+/m', '', $markup);
+ $markup = preg_replace('/^((?:<[\w]+>)+)\n/m', '$1', $markup);
+ $markup = preg_replace('/\n((?:<\/[\w]+>)+)$/m', '$1', $markup);
+ $markup = trim($markup);
+
+ return $markup;
+ }
+}
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/ParsedownTest.php b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/ParsedownTest.php
new file mode 100644
index 0000000000..c922ab1f2b
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/ParsedownTest.php
@@ -0,0 +1,159 @@
+dirs = $this->initDirs();
+ $this->Parsedown = $this->initParsedown();
+
+ parent::__construct($name, $data, $dataName);
+ }
+
+ private $dirs, $Parsedown;
+
+ /**
+ * @return array
+ */
+ protected function initDirs()
+ {
+ $dirs []= dirname(__FILE__).'/data/';
+
+ return $dirs;
+ }
+
+ /**
+ * @return Parsedown
+ */
+ protected function initParsedown()
+ {
+ $Parsedown = new Parsedown();
+
+ return $Parsedown;
+ }
+
+ /**
+ * @dataProvider data
+ * @param $test
+ * @param $dir
+ */
+ function test_($test, $dir)
+ {
+ $markdown = file_get_contents($dir . $test . '.md');
+
+ $expectedMarkup = file_get_contents($dir . $test . '.html');
+
+ $expectedMarkup = str_replace("\r\n", "\n", $expectedMarkup);
+ $expectedMarkup = str_replace("\r", "\n", $expectedMarkup);
+
+ $actualMarkup = $this->Parsedown->text($markdown);
+
+ $this->assertEquals($expectedMarkup, $actualMarkup);
+ }
+
+ function data()
+ {
+ $data = array();
+
+ foreach ($this->dirs as $dir)
+ {
+ $Folder = new DirectoryIterator($dir);
+
+ foreach ($Folder as $File)
+ {
+ /** @var $File DirectoryIterator */
+
+ if ( ! $File->isFile())
+ {
+ continue;
+ }
+
+ $filename = $File->getFilename();
+
+ $extension = pathinfo($filename, PATHINFO_EXTENSION);
+
+ if ($extension !== 'md')
+ {
+ continue;
+ }
+
+ $basename = $File->getBasename('.md');
+
+ if (file_exists($dir . $basename . '.html'))
+ {
+ $data []= array($basename, $dir);
+ }
+ }
+ }
+
+ return $data;
+ }
+
+ public function test_no_markup()
+ {
+ $markdownWithHtml = <<_content_
+
+sparse:
+
+
+
+paragraph
+
+
+
+comment
+
+
+MARKDOWN_WITH_MARKUP;
+
+ $expectedHtml = <<<div>content</div>
+sparse:
+<div>
+<div class="inner">
+content
+</div>
+</div>
+paragraph
+<style type="text/css">
+p {
+color: red;
+}
+</style>
+comment
+<!-- html comment -->
+EXPECTED_HTML;
+ $parsedownWithNoMarkup = new Parsedown();
+ $parsedownWithNoMarkup->setMarkupEscaped(true);
+ $this->assertEquals($expectedHtml, $parsedownWithNoMarkup->text($markdownWithHtml));
+ }
+
+ public function testLateStaticBinding()
+ {
+ include 'test/TestParsedown.php';
+
+ $parsedown = Parsedown::instance();
+ $this->assertInstanceOf('Parsedown', $parsedown);
+
+ // After instance is already called on Parsedown
+ // subsequent calls with the same arguments return the same instance
+ $sameParsedown = TestParsedown::instance();
+ $this->assertInstanceOf('Parsedown', $sameParsedown);
+ $this->assertSame($parsedown, $sameParsedown);
+
+ $testParsedown = TestParsedown::instance('test late static binding');
+ $this->assertInstanceOf('TestParsedown', $testParsedown);
+
+ $sameInstanceAgain = TestParsedown::instance('test late static binding');
+ $this->assertSame($testParsedown, $sameInstanceAgain);
+ }
+}
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/TestParsedown.php b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/TestParsedown.php
new file mode 100644
index 0000000000..7024dfbccd
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/TestParsedown.php
@@ -0,0 +1,5 @@
+
+
+
+header 1 |
+header 2 |
+
+
+
+
+cell 1.1 |
+cell 1.2 |
+
+
+cell 2.1 |
+cell 2.2 |
+
+
+
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/aesthetic_table.md b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/aesthetic_table.md
new file mode 100644
index 0000000000..5245e6c9dd
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/aesthetic_table.md
@@ -0,0 +1,4 @@
+| header 1 | header 2 |
+| -------- | -------- |
+| cell 1.1 | cell 1.2 |
+| cell 2.1 | cell 2.2 |
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/aligned_table.html b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/aligned_table.html
new file mode 100644
index 0000000000..c4acfcb68c
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/aligned_table.html
@@ -0,0 +1,21 @@
+
+
+
+header 1 |
+header 2 |
+header 2 |
+
+
+
+
+cell 1.1 |
+cell 1.2 |
+cell 1.3 |
+
+
+cell 2.1 |
+cell 2.2 |
+cell 2.3 |
+
+
+
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/aligned_table.md b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/aligned_table.md
new file mode 100644
index 0000000000..69a45f90fe
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/aligned_table.md
@@ -0,0 +1,4 @@
+| header 1 | header 2 | header 2 |
+| :------- | :------: | -------: |
+| cell 1.1 | cell 1.2 | cell 1.3 |
+| cell 2.1 | cell 2.2 | cell 2.3 |
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/atx_heading.html b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/atx_heading.html
new file mode 100644
index 0000000000..751f8739f8
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/atx_heading.html
@@ -0,0 +1,9 @@
+h1
+h2
+h3
+h4
+h5
+h6
+####### not a heading
+closed h1
+#
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/atx_heading.md b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/atx_heading.md
new file mode 100644
index 0000000000..ad97b44ca1
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/atx_heading.md
@@ -0,0 +1,17 @@
+# h1
+
+## h2
+
+### h3
+
+#### h4
+
+##### h5
+
+###### h6
+
+####### not a heading
+
+# closed h1 #
+
+#
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/automatic_link.html b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/automatic_link.html
new file mode 100644
index 0000000000..50a94ba0fb
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/automatic_link.html
@@ -0,0 +1 @@
+http://example.com
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/automatic_link.md b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/automatic_link.md
new file mode 100644
index 0000000000..08d3bf46a8
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/automatic_link.md
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/block-level_html.html b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/block-level_html.html
new file mode 100644
index 0000000000..6443a4a6a5
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/block-level_html.html
@@ -0,0 +1,12 @@
+_content_
+paragraph
+
+
+
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/block-level_html.md b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/block-level_html.md
new file mode 100644
index 0000000000..17cbc22d31
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/block-level_html.md
@@ -0,0 +1,16 @@
+_content_
+
+paragraph
+
+
+
+
+
+
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/code_block.html b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/code_block.html
new file mode 100644
index 0000000000..889b02d993
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/code_block.html
@@ -0,0 +1,8 @@
+<?php
+
+$message = 'Hello World!';
+echo $message;
+
+> not a quote
+- not a list item
+[not a reference]: http://foo.com
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/code_block.md b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/code_block.md
new file mode 100644
index 0000000000..2cfc953cc6
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/code_block.md
@@ -0,0 +1,10 @@
+ not a quote
+ - not a list item
+ [not a reference]: http://foo.com
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/code_span.html b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/code_span.html
new file mode 100644
index 0000000000..5c4c231e38
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/code_span.html
@@ -0,0 +1,6 @@
+a code span
+this is also a codespan
trailing text
+and look at this one!
+single backtick in a code span: `
+backtick-delimited string in a code span: `foo`
+sth `` sth
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/code_span.md b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/code_span.md
new file mode 100644
index 0000000000..c2f1a74420
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/code_span.md
@@ -0,0 +1,11 @@
+a `code span`
+
+`this is also a codespan` trailing text
+
+`and look at this one!`
+
+single backtick in a code span: `` ` ``
+
+backtick-delimited string in a code span: `` `foo` ``
+
+`sth `` sth`
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/compound_blockquote.html b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/compound_blockquote.html
new file mode 100644
index 0000000000..37afb57a48
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/compound_blockquote.html
@@ -0,0 +1,9 @@
+
+header
+paragraph
+
+
+paragraph
+
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/compound_blockquote.md b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/compound_blockquote.md
new file mode 100644
index 0000000000..80c4aed16c
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/compound_blockquote.md
@@ -0,0 +1,10 @@
+> header
+> ------
+>
+> paragraph
+>
+> - li
+>
+> ---
+>
+> paragraph
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/compound_emphasis.html b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/compound_emphasis.html
new file mode 100644
index 0000000000..178dd54bae
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/compound_emphasis.html
@@ -0,0 +1,2 @@
+code
code
+code
code
code
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/compound_emphasis.md b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/compound_emphasis.md
new file mode 100644
index 0000000000..6fe07f2600
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/compound_emphasis.md
@@ -0,0 +1,4 @@
+_`code`_ __`code`__
+
+*`code`**`code`**`code`*
+
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/compound_list.html b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/compound_list.html
new file mode 100644
index 0000000000..f5593c1420
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/compound_list.html
@@ -0,0 +1,12 @@
+
+-
+
paragraph
+paragraph
+
+-
+
paragraph
+
+quote
+
+
+
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/compound_list.md b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/compound_list.md
new file mode 100644
index 0000000000..ed7f0c60f3
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/compound_list.md
@@ -0,0 +1,7 @@
+- paragraph
+
+ paragraph
+
+- paragraph
+
+ > quote
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/deeply_nested_list.html b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/deeply_nested_list.html
new file mode 100644
index 0000000000..d2c7e5acc8
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/deeply_nested_list.html
@@ -0,0 +1,12 @@
+
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/deeply_nested_list.md b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/deeply_nested_list.md
new file mode 100644
index 0000000000..76b7552d85
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/deeply_nested_list.md
@@ -0,0 +1,6 @@
+- li
+ - li
+ - li
+ - li
+ - li
+- li
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/em_strong.html b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/em_strong.html
new file mode 100644
index 0000000000..323d60aec7
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/em_strong.html
@@ -0,0 +1,8 @@
+em strong
+em strong strong
+strong em strong
+strong em strong strong
+em strong
+em strong strong
+strong em strong
+strong em strong strong
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/em_strong.md b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/em_strong.md
new file mode 100644
index 0000000000..9abeb3fd4a
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/em_strong.md
@@ -0,0 +1,15 @@
+___em strong___
+
+___em strong_ strong__
+
+__strong _em strong___
+
+__strong _em strong_ strong__
+
+***em strong***
+
+***em strong* strong**
+
+**strong *em strong***
+
+**strong *em strong* strong**
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/email.html b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/email.html
new file mode 100644
index 0000000000..c40759c969
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/email.html
@@ -0,0 +1 @@
+my email is me@example.com
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/email.md b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/email.md
new file mode 100644
index 0000000000..26b7b6cc56
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/email.md
@@ -0,0 +1 @@
+my email is
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/emphasis.html b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/emphasis.html
new file mode 100644
index 0000000000..60ff4bd8b3
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/emphasis.html
@@ -0,0 +1,8 @@
+underscore, asterisk, one two, three four, a, b
+strong and em and strong and em
+line
+line
+line
+this_is_not_an_emphasis
+an empty emphasis __ ** is not an emphasis
+*mixed *double and single asterisk** spans
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/emphasis.md b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/emphasis.md
new file mode 100644
index 0000000000..85b9d2299f
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/emphasis.md
@@ -0,0 +1,13 @@
+_underscore_, *asterisk*, _one two_, *three four*, _a_, *b*
+
+**strong** and *em* and **strong** and *em*
+
+_line
+line
+line_
+
+this_is_not_an_emphasis
+
+an empty emphasis __ ** is not an emphasis
+
+*mixed **double and* single asterisk** spans
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/escaping.html b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/escaping.html
new file mode 100644
index 0000000000..ab1c41fdc1
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/escaping.html
@@ -0,0 +1,6 @@
+escaped *emphasis*.
+escaped \*emphasis\* in a code span
+escaped \*emphasis\* in a code block
+\ ` * _ { } [ ] ( ) > # + - . !
+one_two one_two
+one*two one*two
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/escaping.md b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/escaping.md
new file mode 100644
index 0000000000..9f174e98c2
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/escaping.md
@@ -0,0 +1,11 @@
+escaped \*emphasis\*.
+
+`escaped \*emphasis\* in a code span`
+
+ escaped \*emphasis\* in a code block
+
+\\ \` \* \_ \{ \} \[ \] \( \) \> \# \+ \- \. \!
+
+_one\_two_ __one\_two__
+
+*one\*two* **one\*two**
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/fenced_code_block.html b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/fenced_code_block.html
new file mode 100644
index 0000000000..8bdabba962
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/fenced_code_block.html
@@ -0,0 +1,6 @@
+<?php
+
+$message = 'fenced code block';
+echo $message;
+tilde
+echo 'language identifier';
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/fenced_code_block.md b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/fenced_code_block.md
new file mode 100644
index 0000000000..cbed8ebb56
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/fenced_code_block.md
@@ -0,0 +1,14 @@
+```
+
+
+
+
+
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/horizontal_rule.md b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/horizontal_rule.md
new file mode 100644
index 0000000000..bf461a925e
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/horizontal_rule.md
@@ -0,0 +1,9 @@
+---
+
+- - -
+
+ - - -
+
+***
+
+___
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/html_comment.html b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/html_comment.html
new file mode 100644
index 0000000000..566dc3add5
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/html_comment.html
@@ -0,0 +1,5 @@
+
+paragraph
+
+paragraph
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/html_comment.md b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/html_comment.md
new file mode 100644
index 0000000000..6ddfdb441e
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/html_comment.md
@@ -0,0 +1,8 @@
+
+
+paragraph
+
+
+
+paragraph
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/html_entity.html b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/html_entity.html
new file mode 100644
index 0000000000..4d23e3cd4b
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/html_entity.html
@@ -0,0 +1 @@
+& © {
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/html_entity.md b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/html_entity.md
new file mode 100644
index 0000000000..ff545ea5ca
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/html_entity.md
@@ -0,0 +1 @@
+& © {
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/image_reference.html b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/image_reference.html
new file mode 100644
index 0000000000..67fbd2c864
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/image_reference.html
@@ -0,0 +1,2 @@
+
+![missing reference]
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/image_reference.md b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/image_reference.md
new file mode 100644
index 0000000000..1e11d9479e
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/image_reference.md
@@ -0,0 +1,5 @@
+![Markdown Logo][image]
+
+[image]: /md.png
+
+![missing reference]
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/image_title.html b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/image_title.html
new file mode 100644
index 0000000000..957c9505cf
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/image_title.html
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/image_title.md b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/image_title.md
new file mode 100644
index 0000000000..7ce2849a51
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/image_title.md
@@ -0,0 +1,3 @@
+![alt](/md.png "title")
+
+![blank title](/md.png "")
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/implicit_reference.html b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/implicit_reference.html
new file mode 100644
index 0000000000..24b51c1b00
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/implicit_reference.html
@@ -0,0 +1,4 @@
+an implicit reference link
+an implicit reference link with an empty link definition
+an implicit reference link followed by another
+an explicit reference link with a title
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/implicit_reference.md b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/implicit_reference.md
new file mode 100644
index 0000000000..f850df964c
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/implicit_reference.md
@@ -0,0 +1,13 @@
+an [implicit] reference link
+
+[implicit]: http://example.com
+
+an [implicit][] reference link with an empty link definition
+
+an [implicit][] reference link followed by [another][]
+
+[another]: http://cnn.com
+
+an [explicit][example] reference link with a title
+
+[example]: http://example.com "Example"
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/inline_link.html b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/inline_link.html
new file mode 100644
index 0000000000..5ad564aa3d
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/inline_link.html
@@ -0,0 +1,6 @@
+link
+link with parentheses in URL
+(link) in parentheses
+link
+
+ and text
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/inline_link.md b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/inline_link.md
new file mode 100644
index 0000000000..6bac0b35e6
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/inline_link.md
@@ -0,0 +1,11 @@
+[link](http://example.com)
+
+[link](/url-(parentheses)) with parentheses in URL
+
+([link](/index.php)) in parentheses
+
+[`link`](http://example.com)
+
+[![MD Logo](http://parsedown.org/md.png)](http://example.com)
+
+[![MD Logo](http://parsedown.org/md.png) and text](http://example.com)
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/inline_link_title.html b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/inline_link_title.html
new file mode 100644
index 0000000000..ecdfd03daa
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/inline_link_title.html
@@ -0,0 +1,6 @@
+single quotes
+double quotes
+single quotes blank
+double quotes blank
+space
+parentheses
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/inline_link_title.md b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/inline_link_title.md
new file mode 100644
index 0000000000..6e1c5af9bc
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/inline_link_title.md
@@ -0,0 +1,11 @@
+[single quotes](http://example.com 'Title')
+
+[double quotes](http://example.com "Title")
+
+[single quotes blank](http://example.com '')
+
+[double quotes blank](http://example.com "")
+
+[space](http://example.com "2 Words")
+
+[parentheses](http://example.com/url-(parentheses) "Title")
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/inline_title.html b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/inline_title.html
new file mode 100644
index 0000000000..bbab93b6c5
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/inline_title.html
@@ -0,0 +1 @@
+single quotes and double quotes
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/inline_title.md b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/inline_title.md
new file mode 100644
index 0000000000..cb09344a1b
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/inline_title.md
@@ -0,0 +1 @@
+[single quotes](http://example.com 'Example') and [double quotes](http://example.com "Example")
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/lazy_blockquote.html b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/lazy_blockquote.html
new file mode 100644
index 0000000000..0a2a2aaf9a
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/lazy_blockquote.html
@@ -0,0 +1,6 @@
+
+quote
+the rest of it
+another paragraph
+the rest of it
+
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/lazy_blockquote.md b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/lazy_blockquote.md
new file mode 100644
index 0000000000..48f645f947
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/lazy_blockquote.md
@@ -0,0 +1,5 @@
+> quote
+the rest of it
+
+> another paragraph
+the rest of it
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/lazy_list.html b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/lazy_list.html
new file mode 100644
index 0000000000..1a51992495
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/lazy_list.html
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/lazy_list.md b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/lazy_list.md
new file mode 100644
index 0000000000..62ad9d719b
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/lazy_list.md
@@ -0,0 +1,2 @@
+- li
+the rest of it
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/line_break.html b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/line_break.html
new file mode 100644
index 0000000000..5f37d854c0
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/line_break.html
@@ -0,0 +1,2 @@
+line
+line
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/line_break.md b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/line_break.md
new file mode 100644
index 0000000000..04dff43e04
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/line_break.md
@@ -0,0 +1,2 @@
+line
+line
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/multiline_list_paragraph.html b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/multiline_list_paragraph.html
new file mode 100644
index 0000000000..3247bd2279
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/multiline_list_paragraph.html
@@ -0,0 +1,7 @@
+
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/multiline_list_paragraph.md b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/multiline_list_paragraph.md
new file mode 100644
index 0000000000..f5b42729fe
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/multiline_list_paragraph.md
@@ -0,0 +1,4 @@
+- li
+
+ line
+ line
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/nested_block-level_html.html b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/nested_block-level_html.html
new file mode 100644
index 0000000000..bfbef54d76
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/nested_block-level_html.html
@@ -0,0 +1,10 @@
+
+_parent_
+
+_child_
+
+
+_adopted child_
+
+
+outside
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/nested_block-level_html.md b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/nested_block-level_html.md
new file mode 100644
index 0000000000..5e01e10978
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/nested_block-level_html.md
@@ -0,0 +1,11 @@
+
+_parent_
+
+_child_
+
+
+_adopted child_
+
+
+
+_outside_
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/ordered_list.html b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/ordered_list.html
new file mode 100644
index 0000000000..b6c5216ca0
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/ordered_list.html
@@ -0,0 +1,13 @@
+
+- one
+- two
+
+repeating numbers:
+
+- one
+- two
+
+large numbers:
+
+- one
+
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/ordered_list.md b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/ordered_list.md
new file mode 100644
index 0000000000..b307032cfe
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/ordered_list.md
@@ -0,0 +1,11 @@
+1. one
+2. two
+
+repeating numbers:
+
+1. one
+1. two
+
+large numbers:
+
+123. one
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/paragraph_list.html b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/paragraph_list.html
new file mode 100644
index 0000000000..ced1c43ee3
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/paragraph_list.html
@@ -0,0 +1,12 @@
+paragraph
+
+paragraph
+
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/paragraph_list.md b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/paragraph_list.md
new file mode 100644
index 0000000000..b973908ced
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/paragraph_list.md
@@ -0,0 +1,9 @@
+paragraph
+- li
+- li
+
+paragraph
+
+ * li
+
+ * li
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/reference_title.html b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/reference_title.html
new file mode 100644
index 0000000000..8f2be944c6
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/reference_title.html
@@ -0,0 +1,2 @@
+double quotes and single quotes and parentheses
+[invalid title]: http://example.com example title
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/reference_title.md b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/reference_title.md
new file mode 100644
index 0000000000..43cb21708c
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/reference_title.md
@@ -0,0 +1,6 @@
+[double quotes] and [single quotes] and [parentheses]
+
+[double quotes]: http://example.com "example title"
+[single quotes]: http://example.com 'example title'
+[parentheses]: http://example.com (example title)
+[invalid title]: http://example.com example title
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/self-closing_html.html b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/self-closing_html.html
new file mode 100644
index 0000000000..4d072b43ff
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/self-closing_html.html
@@ -0,0 +1,12 @@
+
+paragraph
+
+paragraph
+
+paragraph
+
+paragraph
+
+paragraph
+
+paragraph
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/self-closing_html.md b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/self-closing_html.md
new file mode 100644
index 0000000000..acb20327d8
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/self-closing_html.md
@@ -0,0 +1,12 @@
+
+paragraph
+
+paragraph
+
+paragraph
+
+paragraph
+
+paragraph
+
+paragraph
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/separated_nested_list.html b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/separated_nested_list.html
new file mode 100644
index 0000000000..80a5cae264
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/separated_nested_list.html
@@ -0,0 +1,9 @@
+
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/separated_nested_list.md b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/separated_nested_list.md
new file mode 100644
index 0000000000..d7cd1af792
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/separated_nested_list.md
@@ -0,0 +1,4 @@
+- li
+
+ - li
+ - li
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/setext_header.html b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/setext_header.html
new file mode 100644
index 0000000000..60aac08151
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/setext_header.html
@@ -0,0 +1,5 @@
+h1
+h2
+single character
+not a header
+
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/setext_header.md b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/setext_header.md
new file mode 100644
index 0000000000..c43b52c367
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/setext_header.md
@@ -0,0 +1,12 @@
+h1
+==
+
+h2
+--
+
+single character
+-
+
+not a header
+
+------------
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/simple_blockquote.html b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/simple_blockquote.html
new file mode 100644
index 0000000000..8225d57cc2
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/simple_blockquote.html
@@ -0,0 +1,11 @@
+
+quote
+
+indented:
+
+quote
+
+no space after >
:
+
+quote
+
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/simple_blockquote.md b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/simple_blockquote.md
new file mode 100644
index 0000000000..22b6b11a95
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/simple_blockquote.md
@@ -0,0 +1,7 @@
+> quote
+
+indented:
+ > quote
+
+no space after `>`:
+>quote
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/simple_table.html b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/simple_table.html
new file mode 100644
index 0000000000..237d7efb33
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/simple_table.html
@@ -0,0 +1,37 @@
+
+
+
+header 1 |
+header 2 |
+
+
+
+
+cell 1.1 |
+cell 1.2 |
+
+
+cell 2.1 |
+cell 2.2 |
+
+
+
+
+
+
+
+header 1 |
+header 2 |
+
+
+
+
+cell 1.1 |
+cell 1.2 |
+
+
+cell 2.1 |
+cell 2.2 |
+
+
+
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/simple_table.md b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/simple_table.md
new file mode 100644
index 0000000000..466d140e31
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/simple_table.md
@@ -0,0 +1,11 @@
+header 1 | header 2
+-------- | --------
+cell 1.1 | cell 1.2
+cell 2.1 | cell 2.2
+
+---
+
+header 1 | header 2
+:------- | --------
+cell 1.1 | cell 1.2
+cell 2.1 | cell 2.2
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/span-level_html.html b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/span-level_html.html
new file mode 100644
index 0000000000..f852a25a23
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/span-level_html.html
@@ -0,0 +1,5 @@
+an important link
+broken
+line
+inline tag at the beginning
+http://example.com
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/span-level_html.md b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/span-level_html.md
new file mode 100644
index 0000000000..f221965553
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/span-level_html.md
@@ -0,0 +1,8 @@
+an important link
+
+broken
+line
+
+inline tag at the beginning
+
+http://example.com
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/sparse_dense_list.html b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/sparse_dense_list.html
new file mode 100644
index 0000000000..095bc73969
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/sparse_dense_list.html
@@ -0,0 +1,7 @@
+
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/sparse_dense_list.md b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/sparse_dense_list.md
new file mode 100644
index 0000000000..576842277d
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/sparse_dense_list.md
@@ -0,0 +1,4 @@
+- li
+
+- li
+- li
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/sparse_html.html b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/sparse_html.html
new file mode 100644
index 0000000000..9e896274c8
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/sparse_html.html
@@ -0,0 +1,8 @@
+
+line 1
+
+line 2
+line 3
+
+line 4
+
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/sparse_html.md b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/sparse_html.md
new file mode 100644
index 0000000000..9e896274c8
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/sparse_html.md
@@ -0,0 +1,8 @@
+
+line 1
+
+line 2
+line 3
+
+line 4
+
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/sparse_list.html b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/sparse_list.html
new file mode 100644
index 0000000000..452b2b86dd
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/sparse_list.html
@@ -0,0 +1,15 @@
+
+
+
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/sparse_list.md b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/sparse_list.md
new file mode 100644
index 0000000000..362a35f57c
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/sparse_list.md
@@ -0,0 +1,9 @@
+- li
+
+- li
+
+---
+
+- li
+
+ - indented li
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/special_characters.html b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/special_characters.html
new file mode 100644
index 0000000000..3b652c338f
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/special_characters.html
@@ -0,0 +1,6 @@
+AT&T has an ampersand in their name
+this & that
+4 < 5 and 6 > 5
+http://example.com/autolink?a=1&b=2
+inline link
+reference link
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/special_characters.md b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/special_characters.md
new file mode 100644
index 0000000000..111b03b636
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/special_characters.md
@@ -0,0 +1,13 @@
+AT&T has an ampersand in their name
+
+this & that
+
+4 < 5 and 6 > 5
+
+
+
+[inline link](/script?a=1&b=2)
+
+[reference link][1]
+
+[1]: http://example.com/?a=1&b=2
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/strikethrough.html b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/strikethrough.html
new file mode 100644
index 0000000000..2a9da98213
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/strikethrough.html
@@ -0,0 +1,3 @@
+strikethrough
+here's one followed by another one
+~~ this ~~ is not one neither is ~this~
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/strikethrough.md b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/strikethrough.md
new file mode 100644
index 0000000000..d169144d29
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/strikethrough.md
@@ -0,0 +1,5 @@
+~~strikethrough~~
+
+here's ~~one~~ followed by ~~another one~~
+
+~~ this ~~ is not one neither is ~this~
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/strong_em.html b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/strong_em.html
new file mode 100644
index 0000000000..b709c9914b
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/strong_em.html
@@ -0,0 +1,6 @@
+em strong em
+strong em em
+em strong em em
+em strong em
+strong em em
+em strong em em
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/strong_em.md b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/strong_em.md
new file mode 100644
index 0000000000..f2aa3c7827
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/strong_em.md
@@ -0,0 +1,11 @@
+*em **strong em***
+
+***strong em** em*
+
+*em **strong em** em*
+
+_em __strong em___
+
+___strong em__ em_
+
+_em __strong em__ em_
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/tab-indented_code_block.html b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/tab-indented_code_block.html
new file mode 100644
index 0000000000..7c140de730
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/tab-indented_code_block.html
@@ -0,0 +1,6 @@
+<?php
+
+$message = 'Hello World!';
+echo $message;
+
+echo "following a blank line";
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/tab-indented_code_block.md b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/tab-indented_code_block.md
new file mode 100644
index 0000000000..a405a1609a
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/tab-indented_code_block.md
@@ -0,0 +1,6 @@
+
+
+
+header 1 |
+header 2 |
+
+
+
+
+cell 1.1 |
+cell 1.2 |
+
+
+| 2.1 |
+| 2.2 |
+
+
+\| 2.1 |
+link |
+
+
+
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/table_inline_markdown.md b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/table_inline_markdown.md
new file mode 100644
index 0000000000..2f3c6200f2
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/table_inline_markdown.md
@@ -0,0 +1,5 @@
+| _header_ 1 | header 2 |
+| ------------ | ------------ |
+| _cell_ 1.1 | ~~cell~~ 1.2 |
+| `|` 2.1 | \| 2.2 |
+| `\|` 2.1 | [link](/) |
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/text_reference.html b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/text_reference.html
new file mode 100644
index 0000000000..11e4d37ffa
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/text_reference.html
@@ -0,0 +1,8 @@
+reference link
+one with a semantic name
+[one][404] with no definition
+multiline
+one defined on 2 lines
+one with a mixed case label and an upper case definition
+one with the a label on the next line
+link
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/text_reference.md b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/text_reference.md
new file mode 100644
index 0000000000..1a66a5cf6b
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/text_reference.md
@@ -0,0 +1,21 @@
+[reference link][1]
+
+[1]: http://example.com
+
+[one][website] with a semantic name
+
+[website]: http://example.com
+
+[one][404] with no definition
+
+[multiline
+one][website] defined on 2 lines
+
+[one][Label] with a mixed case label and an upper case definition
+
+[LABEL]: http://example.com
+
+[one]
+[1] with the a label on the next line
+
+[`link`][website]
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/unordered_list.html b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/unordered_list.html
new file mode 100644
index 0000000000..cd95567b7b
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/unordered_list.html
@@ -0,0 +1,10 @@
+
+mixed markers:
+
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/unordered_list.md b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/unordered_list.md
new file mode 100644
index 0000000000..cf62c99f21
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/unordered_list.md
@@ -0,0 +1,8 @@
+- li
+- li
+
+mixed markers:
+
+* li
++ li
+- li
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/untidy_table.html b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/untidy_table.html
new file mode 100644
index 0000000000..88e1c2bd44
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/untidy_table.html
@@ -0,0 +1,18 @@
+
+
+
+header 1 |
+header 2 |
+
+
+
+
+cell 1.1 |
+cell 1.2 |
+
+
+cell 2.1 |
+cell 2.2 |
+
+
+
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/untidy_table.md b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/untidy_table.md
new file mode 100644
index 0000000000..8524eb1847
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/untidy_table.md
@@ -0,0 +1,4 @@
+| header 1 | header 2 |
+| ------------- | ----------- |
+| cell 1.1 | cell 1.2 |
+| cell 2.1 | cell 2.2 |
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/url_autolinking.html b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/url_autolinking.html
new file mode 100644
index 0000000000..58ca94c6bd
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/url_autolinking.html
@@ -0,0 +1,3 @@
+an autolink http://example.com
+inside of brackets [http://example.com], inside of braces {http://example.com}, inside of parentheses (http://example.com)
+trailing slash http://example.com/ and http://example.com/path/
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/url_autolinking.md b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/url_autolinking.md
new file mode 100644
index 0000000000..840f354042
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/url_autolinking.md
@@ -0,0 +1,5 @@
+an autolink http://example.com
+
+inside of brackets [http://example.com], inside of braces {http://example.com}, inside of parentheses (http://example.com)
+
+trailing slash http://example.com/ and http://example.com/path/
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/whitespace.html b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/whitespace.html
new file mode 100644
index 0000000000..f2dd7a0020
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/whitespace.html
@@ -0,0 +1 @@
+code
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/whitespace.md b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/whitespace.md
new file mode 100644
index 0000000000..4cf926a8ad
--- /dev/null
+++ b/wcfsetup/install/files/lib/system/api/erusev/parsedown/test/data/whitespace.md
@@ -0,0 +1,5 @@
+
+
+ code
+
+
\ No newline at end of file
diff --git a/wcfsetup/install/files/lib/system/api/parsedown/version b/wcfsetup/install/files/lib/system/api/parsedown/version
deleted file mode 100644
index b41a6383c6..0000000000
--- a/wcfsetup/install/files/lib/system/api/parsedown/version
+++ /dev/null
@@ -1 +0,0 @@
-Version of parsedown is 1.5.1
--
2.20.1