From 3bcc5721d4981078e03aa6f6fbd7b2697425061e Mon Sep 17 00:00:00 2001 From: Dooho Yi Date: Sat, 10 Aug 2024 10:34:12 +0900 Subject: [PATCH] init --- .htaccess | 48 + Screen_Shot_2024-04-15_at_3.04.20_AM.png | Bin 0 -> 228026 bytes assets/dandi.jpg | Bin 0 -> 102766 bytes assets/lichen-small.svg | 6 + assets/stylesheet.css | 141 ++ cheatsheet.md | 95 + cms/.htaccess | 13 + cms/edit.php | 724 +++++++ cms/gemtext.php | 154 ++ cms/markdown.php | 23 + cms/render.php | 65 + cms/vendor/php-markdown-lib-9.1/.editorconfig | 11 + cms/vendor/php-markdown-lib-9.1/.gitignore | 3 + .../php-markdown-lib-9.1/.scrutinizer.yml | 36 + cms/vendor/php-markdown-lib-9.1/.travis.yml | 19 + cms/vendor/php-markdown-lib-9.1/License.md | 36 + .../Michelf/Markdown.inc.php | 10 + .../php-markdown-lib-9.1/Michelf/Markdown.php | 1889 +++++++++++++++++ .../Michelf/MarkdownExtra.inc.php | 11 + .../Michelf/MarkdownExtra.php | 1869 ++++++++++++++++ .../Michelf/MarkdownInterface.inc.php | 9 + .../Michelf/MarkdownInterface.php | 38 + cms/vendor/php-markdown-lib-9.1/Readme.md | 437 ++++ cms/vendor/php-markdown-lib-9.1/Readme.php | 33 + cms/vendor/php-markdown-lib-9.1/composer.json | 29 + .../php-markdown-lib-9.1/phpunit.xml.dist | 24 + .../php-markdown-lib-9.1/test/bootstrap.php | 6 + .../test/helpers/MarkdownTestHelper.php | 267 +++ .../test/integration/PhpMarkdownTest.php | 173 ++ .../Amps and angle encoding.text | 21 + .../Amps and angle encoding.xhtml | 17 + .../resources/markdown.mdtest/Auto links.text | 13 + .../markdown.mdtest/Auto links.xhtml | 18 + .../markdown.mdtest/Backslash escapes.text | 120 ++ .../markdown.mdtest/Backslash escapes.xhtml | 118 + .../Blockquotes with code blocks.text | 11 + .../Blockquotes with code blocks.xhtml | 15 + .../markdown.mdtest/Code Blocks.text | 14 + .../markdown.mdtest/Code Blocks.xhtml | 18 + .../resources/markdown.mdtest/Code Spans.text | 5 + .../markdown.mdtest/Code Spans.xhtml | 5 + ...apped paragraphs with list-like lines.text | 8 + ...pped paragraphs with list-like lines.xhtml | 8 + .../markdown.mdtest/Horizontal rules.text | 67 + .../markdown.mdtest/Horizontal rules.xhtml | 71 + .../resources/markdown.mdtest/Images.text | 26 + .../resources/markdown.mdtest/Images.xhtml | 21 + .../Inline HTML (Advanced).text | 30 + .../Inline HTML (Advanced).xhtml | 30 + .../markdown.mdtest/Inline HTML (Simple).html | 72 + .../markdown.mdtest/Inline HTML (Simple).text | 69 + .../markdown.mdtest/Inline HTML comments.html | 13 + .../markdown.mdtest/Inline HTML comments.text | 13 + .../markdown.mdtest/Links, inline style.text | 24 + .../markdown.mdtest/Links, inline style.xhtml | 23 + .../Links, reference style.text | 71 + .../Links, reference style.xhtml | 52 + .../Links, shortcut references.text | 20 + .../Links, shortcut references.xhtml | 9 + .../Literal quotes in titles.text | 7 + .../Literal quotes in titles.xhtml | 3 + .../Markdown Documentation - Basics.text | 306 +++ .../Markdown Documentation - Basics.xhtml | 314 +++ .../Markdown Documentation - Syntax.text | 888 ++++++++ .../Markdown Documentation - Syntax.xhtml | 942 ++++++++ .../markdown.mdtest/Nested blockquotes.text | 5 + .../markdown.mdtest/Nested blockquotes.xhtml | 9 + .../Ordered and unordered lists.text | 131 ++ .../Ordered and unordered lists.xhtml | 148 ++ .../Strong and em together.text | 7 + .../Strong and em together.xhtml | 7 + .../test/resources/markdown.mdtest/Tabs.text | 21 + .../test/resources/markdown.mdtest/Tabs.xhtml | 25 + .../resources/markdown.mdtest/Tidyness.text | 5 + .../resources/markdown.mdtest/Tidyness.xhtml | 8 + .../php-markdown-extra.mdtest/Abbr.text | 31 + .../php-markdown-extra.mdtest/Abbr.xhtml | 15 + ...tick Fenced Code Blocks Special Cases.text | 69 + ...ick Fenced Code Blocks Special Cases.xhtml | 61 + .../Backtick Fenced Code Blocks.text | 123 ++ .../Backtick Fenced Code Blocks.xhtml | 109 + .../Definition Lists.text | 115 + .../Definition Lists.xhtml | 155 ++ .../php-markdown-extra.mdtest/Emphasis.text | 100 + .../php-markdown-extra.mdtest/Emphasis.xhtml | 106 + .../php-markdown-extra.mdtest/Footnotes.text | 70 + .../php-markdown-extra.mdtest/Footnotes.xhtml | 103 + .../Headers with attributes.text | 41 + .../Headers with attributes.xhtml | 37 + .../Inline HTML with Markdown content.text | 110 + .../Inline HTML with Markdown content.xhtml | 131 ++ .../Link & Image Attributes.text | 10 + .../Link & Image Attributes.xhtml | 8 + .../php-markdown-extra.mdtest/Tables.text | 113 + .../php-markdown-extra.mdtest/Tables.xhtml | 333 +++ ...ilde Fenced Code Blocks Special Cases.text | 69 + ...lde Fenced Code Blocks Special Cases.xhtml | 61 + .../Tilde Fenced Code Blocks.text | 123 ++ .../Tilde Fenced Code Blocks.xhtml | 109 + .../php-markdown.mdtest/Adjacent Lists.text | 10 + .../php-markdown.mdtest/Adjacent Lists.xhtml | 19 + .../php-markdown.mdtest/Auto Links.text | 3 + .../php-markdown.mdtest/Auto Links.xhtml | 3 + .../Backslash escapes.text | 1 + .../Backslash escapes.xhtml | 1 + .../php-markdown.mdtest/Code Spans.text | 6 + .../php-markdown.mdtest/Code Spans.xhtml | 6 + .../Code block in a list item.text | 15 + .../Code block in a list item.xhtml | 18 + .../Code block on second line.text | 2 + .../Code block on second line.xhtml | 2 + .../Code block regressions.text | 15 + .../Code block regressions.xhtml | 18 + .../php-markdown.mdtest/Email auto links.text | 24 + .../Email auto links.xhtml | 23 + .../php-markdown.mdtest/Emphasis.text | 101 + .../php-markdown.mdtest/Emphasis.xhtml | 105 + .../php-markdown.mdtest/Empty List Item.text | 35 + .../php-markdown.mdtest/Empty List Item.xhtml | 47 + .../php-markdown.mdtest/Headers.text | 9 + .../php-markdown.mdtest/Headers.xhtml | 39 + .../php-markdown.mdtest/Horizontal Rules.text | 29 + .../Horizontal Rules.xhtml | 30 + .../Inline HTML (Simple).html | 32 + .../Inline HTML (Simple).text | 32 + .../Inline HTML (Span).text | 4 + .../Inline HTML (Span).xhtml | 4 + .../Inline HTML comments.html | 9 + .../Inline HTML comments.text | 9 + .../php-markdown.mdtest/Ins & del.text | 17 + .../php-markdown.mdtest/Ins & del.xhtml | 17 + .../Links, inline style.text | 9 + .../Links, inline style.xhtml | 7 + .../php-markdown.mdtest/MD5 Hashes.text | 11 + .../php-markdown.mdtest/MD5 Hashes.xhtml | 11 + .../Mixed OLs and ULs.text | 13 + .../Mixed OLs and ULs.xhtml | 21 + .../php-markdown.mdtest/Nesting.text | 11 + .../php-markdown.mdtest/Nesting.xhtml | 11 + .../PHP-Specific Bugs.text | 22 + .../PHP-Specific Bugs.xhtml | 17 + .../php-markdown.mdtest/Parens in URL.text | 14 + .../php-markdown.mdtest/Parens in URL.xhtml | 11 + .../Quotes in attributes.text | 5 + .../Quotes in attributes.xhtml | 5 + .../php-markdown.mdtest/Tight blocks.text | 1 + .../php-markdown.mdtest/Tight blocks.xhtml | 21 + .../php-markdown.mdtest/XML empty tag.text | 2 + .../php-markdown.mdtest/XML empty tag.xhtml | 2 + .../test/unit/MarkdownExtraTest.php | 51 + footer.md | 5 + header.md | 5 + index.md | 10 + test | 0 theme/layout.php | 23 + 155 files changed, 13172 insertions(+) create mode 100644 .htaccess create mode 100644 Screen_Shot_2024-04-15_at_3.04.20_AM.png create mode 100644 assets/dandi.jpg create mode 100644 assets/lichen-small.svg create mode 100644 assets/stylesheet.css create mode 100644 cheatsheet.md create mode 100644 cms/.htaccess create mode 100644 cms/edit.php create mode 100644 cms/gemtext.php create mode 100644 cms/markdown.php create mode 100644 cms/render.php create mode 100644 cms/vendor/php-markdown-lib-9.1/.editorconfig create mode 100644 cms/vendor/php-markdown-lib-9.1/.gitignore create mode 100644 cms/vendor/php-markdown-lib-9.1/.scrutinizer.yml create mode 100644 cms/vendor/php-markdown-lib-9.1/.travis.yml create mode 100644 cms/vendor/php-markdown-lib-9.1/License.md create mode 100644 cms/vendor/php-markdown-lib-9.1/Michelf/Markdown.inc.php create mode 100644 cms/vendor/php-markdown-lib-9.1/Michelf/Markdown.php create mode 100644 cms/vendor/php-markdown-lib-9.1/Michelf/MarkdownExtra.inc.php create mode 100644 cms/vendor/php-markdown-lib-9.1/Michelf/MarkdownExtra.php create mode 100644 cms/vendor/php-markdown-lib-9.1/Michelf/MarkdownInterface.inc.php create mode 100644 cms/vendor/php-markdown-lib-9.1/Michelf/MarkdownInterface.php create mode 100644 cms/vendor/php-markdown-lib-9.1/Readme.md create mode 100644 cms/vendor/php-markdown-lib-9.1/Readme.php create mode 100644 cms/vendor/php-markdown-lib-9.1/composer.json create mode 100644 cms/vendor/php-markdown-lib-9.1/phpunit.xml.dist create mode 100644 cms/vendor/php-markdown-lib-9.1/test/bootstrap.php create mode 100644 cms/vendor/php-markdown-lib-9.1/test/helpers/MarkdownTestHelper.php create mode 100644 cms/vendor/php-markdown-lib-9.1/test/integration/PhpMarkdownTest.php create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/markdown.mdtest/Amps and angle encoding.text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/markdown.mdtest/Amps and angle encoding.xhtml create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/markdown.mdtest/Auto links.text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/markdown.mdtest/Auto links.xhtml create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/markdown.mdtest/Backslash escapes.text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/markdown.mdtest/Backslash escapes.xhtml create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/markdown.mdtest/Blockquotes with code blocks.text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/markdown.mdtest/Blockquotes with code blocks.xhtml create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/markdown.mdtest/Code Blocks.text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/markdown.mdtest/Code Blocks.xhtml create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/markdown.mdtest/Code Spans.text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/markdown.mdtest/Code Spans.xhtml create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/markdown.mdtest/Hard-wrapped paragraphs with list-like lines.text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/markdown.mdtest/Hard-wrapped paragraphs with list-like lines.xhtml create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/markdown.mdtest/Horizontal rules.text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/markdown.mdtest/Horizontal rules.xhtml create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/markdown.mdtest/Images.text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/markdown.mdtest/Images.xhtml create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/markdown.mdtest/Inline HTML (Advanced).text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/markdown.mdtest/Inline HTML (Advanced).xhtml create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/markdown.mdtest/Inline HTML (Simple).html create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/markdown.mdtest/Inline HTML (Simple).text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/markdown.mdtest/Inline HTML comments.html create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/markdown.mdtest/Inline HTML comments.text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/markdown.mdtest/Links, inline style.text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/markdown.mdtest/Links, inline style.xhtml create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/markdown.mdtest/Links, reference style.text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/markdown.mdtest/Links, reference style.xhtml create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/markdown.mdtest/Links, shortcut references.text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/markdown.mdtest/Links, shortcut references.xhtml create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/markdown.mdtest/Literal quotes in titles.text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/markdown.mdtest/Literal quotes in titles.xhtml create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/markdown.mdtest/Markdown Documentation - Basics.text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/markdown.mdtest/Markdown Documentation - Basics.xhtml create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/markdown.mdtest/Markdown Documentation - Syntax.text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/markdown.mdtest/Markdown Documentation - Syntax.xhtml create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/markdown.mdtest/Nested blockquotes.text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/markdown.mdtest/Nested blockquotes.xhtml create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/markdown.mdtest/Ordered and unordered lists.text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/markdown.mdtest/Ordered and unordered lists.xhtml create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/markdown.mdtest/Strong and em together.text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/markdown.mdtest/Strong and em together.xhtml create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/markdown.mdtest/Tabs.text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/markdown.mdtest/Tabs.xhtml create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/markdown.mdtest/Tidyness.text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/markdown.mdtest/Tidyness.xhtml create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown-extra.mdtest/Abbr.text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown-extra.mdtest/Abbr.xhtml create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown-extra.mdtest/Backtick Fenced Code Blocks Special Cases.text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown-extra.mdtest/Backtick Fenced Code Blocks Special Cases.xhtml create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown-extra.mdtest/Backtick Fenced Code Blocks.text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown-extra.mdtest/Backtick Fenced Code Blocks.xhtml create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown-extra.mdtest/Definition Lists.text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown-extra.mdtest/Definition Lists.xhtml create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown-extra.mdtest/Emphasis.text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown-extra.mdtest/Emphasis.xhtml create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown-extra.mdtest/Footnotes.text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown-extra.mdtest/Footnotes.xhtml create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown-extra.mdtest/Headers with attributes.text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown-extra.mdtest/Headers with attributes.xhtml create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown-extra.mdtest/Inline HTML with Markdown content.text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown-extra.mdtest/Inline HTML with Markdown content.xhtml create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown-extra.mdtest/Link & Image Attributes.text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown-extra.mdtest/Link & Image Attributes.xhtml create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown-extra.mdtest/Tables.text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown-extra.mdtest/Tables.xhtml create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown-extra.mdtest/Tilde Fenced Code Blocks Special Cases.text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown-extra.mdtest/Tilde Fenced Code Blocks Special Cases.xhtml create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown-extra.mdtest/Tilde Fenced Code Blocks.text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown-extra.mdtest/Tilde Fenced Code Blocks.xhtml create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown.mdtest/Adjacent Lists.text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown.mdtest/Adjacent Lists.xhtml create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown.mdtest/Auto Links.text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown.mdtest/Auto Links.xhtml create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown.mdtest/Backslash escapes.text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown.mdtest/Backslash escapes.xhtml create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown.mdtest/Code Spans.text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown.mdtest/Code Spans.xhtml create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown.mdtest/Code block in a list item.text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown.mdtest/Code block in a list item.xhtml create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown.mdtest/Code block on second line.text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown.mdtest/Code block on second line.xhtml create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown.mdtest/Code block regressions.text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown.mdtest/Code block regressions.xhtml create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown.mdtest/Email auto links.text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown.mdtest/Email auto links.xhtml create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown.mdtest/Emphasis.text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown.mdtest/Emphasis.xhtml create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown.mdtest/Empty List Item.text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown.mdtest/Empty List Item.xhtml create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown.mdtest/Headers.text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown.mdtest/Headers.xhtml create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown.mdtest/Horizontal Rules.text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown.mdtest/Horizontal Rules.xhtml create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown.mdtest/Inline HTML (Simple).html create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown.mdtest/Inline HTML (Simple).text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown.mdtest/Inline HTML (Span).text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown.mdtest/Inline HTML (Span).xhtml create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown.mdtest/Inline HTML comments.html create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown.mdtest/Inline HTML comments.text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown.mdtest/Ins & del.text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown.mdtest/Ins & del.xhtml create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown.mdtest/Links, inline style.text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown.mdtest/Links, inline style.xhtml create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown.mdtest/MD5 Hashes.text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown.mdtest/MD5 Hashes.xhtml create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown.mdtest/Mixed OLs and ULs.text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown.mdtest/Mixed OLs and ULs.xhtml create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown.mdtest/Nesting.text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown.mdtest/Nesting.xhtml create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown.mdtest/PHP-Specific Bugs.text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown.mdtest/PHP-Specific Bugs.xhtml create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown.mdtest/Parens in URL.text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown.mdtest/Parens in URL.xhtml create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown.mdtest/Quotes in attributes.text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown.mdtest/Quotes in attributes.xhtml create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown.mdtest/Tight blocks.text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown.mdtest/Tight blocks.xhtml create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown.mdtest/XML empty tag.text create mode 100644 cms/vendor/php-markdown-lib-9.1/test/resources/php-markdown.mdtest/XML empty tag.xhtml create mode 100644 cms/vendor/php-markdown-lib-9.1/test/unit/MarkdownExtraTest.php create mode 100644 footer.md create mode 100644 header.md create mode 100644 index.md create mode 100644 test create mode 100644 theme/layout.php diff --git a/.htaccess b/.htaccess new file mode 100644 index 0000000..52b3199 --- /dev/null +++ b/.htaccess @@ -0,0 +1,48 @@ +# === image resize configuration +SetEnv IMG_RESIZE_ENABLE true +SetEnv IMG_RESIZE_MAX_WIDTH 640 + +# === caching configuration +Header set Cache-Control "no-cache" + +DirectoryIndex index.md index.gmi +#ErrorDocument 404 /index.gmi + +RewriteEngine on +RewriteBase / + +# === stop further internal redirects to /cms +RewriteCond %{ENV:REDIRECT_STATUS} ^ +RewriteRule ^cms/ - [NC,L] + +# === prevent direct access to /theme +RewriteCond %{ENV:REDIRECT_STATUS} ^$ +RewriteRule ^theme/ - [R=404,NC,L] + +# === discard .gmi extensions and redirect +RewriteCond %{REQUEST_FILENAME} -f +RewriteCond %{ENV:REDIRECT_STATUS} ^$ +RewriteRule ^(.*)\.gmi$ $1 [R=301,NC,L] + +# === discard .md extensions and redirect +RewriteCond %{REQUEST_FILENAME} -f +RewriteCond %{ENV:REDIRECT_STATUS} ^$ +RewriteRule ^(.*)\.md$ $1 [R=301,NC,L] + +# === try .md files without extensions +RewriteCond %{REQUEST_FILENAME}.md -f +RewriteRule ^ %{REQUEST_URI}.md + +# === try .gmi files without extensions +RewriteCond %{REQUEST_FILENAME}.gmi -f +RewriteRule ^ %{REQUEST_URI}.gmi + +# === render .gmi files +RewriteCond %{REQUEST_FILENAME} \.gmi$ [NC] +RewriteCond %{REQUEST_FILENAME} -f +RewriteRule ^ /cms/render.php%{REQUEST_URI} [E=authbypass,L] + +# === render .md files +RewriteCond %{REQUEST_FILENAME} \.md$ [NC] +RewriteCond %{REQUEST_FILENAME} -f +RewriteRule ^ /cms/render.php%{REQUEST_URI} [E=authbypass,L] diff --git a/Screen_Shot_2024-04-15_at_3.04.20_AM.png b/Screen_Shot_2024-04-15_at_3.04.20_AM.png new file mode 100644 index 0000000000000000000000000000000000000000..ac498034053c1ec23d752a46678f888e27501df7 GIT binary patch literal 228026 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≶O5zMss!1aL*o}?}9uB%d% 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%0Axo24ZCw$!4iBbhIW`eof$ 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 + + + + + \ No newline at end of file diff --git a/assets/stylesheet.css b/assets/stylesheet.css new file mode 100644 index 0000000..934ff6b --- /dev/null +++ b/assets/stylesheet.css @@ -0,0 +1,141 @@ +html { + margin: 0; + padding: 0; + -webkit-text-size-adjust: none; +} +body { + margin: 2rem auto; + padding: 0 1rem; + font-family: sans-serif; + background: white; + color: black; + max-width: 72ch; + line-height: 1.5rem; +} +h1, +h2, +h3 { + color: gray; + margin-bottom: 1rem; + margin-top: 1rem; + font-weight: 300; + line-height: 1.1; +} +h1 { + margin-top: 4rem; + font-size: 3rem; +} +h2 { + margin-top: 3rem; + font-size: 1.8rem; +} +h3 { + margin-top: 2rem; + font-size: 1.2rem; +} + +ol, +blockquote { + padding-left: 1rem; + margin-left: 1rem; + margin-right: 0; + padding-right: 0; +} +blockquote { + border-left: 1px solid gray; +} +pre { + white-space: pre-wrap; + /*overflow-x: auto;*/ + padding: 1rem; + line-height: 1.2; + border: 1px solid lightgray; + border-radius: 4px; + font-family: monospace; +} +/* ol { + list-style: decimal-leading-zero; +} */ +ol li { + margin: 0.4rem 0; +} +ol li::marker { + color: lightgray; +} +p { + margin: 0.75rem 0; +} +/* Re-enable for gemini style block links */ +/* main a { + display: block; + margin: 0.75rem 0; + position: relative; + padding-left: 2.25ch; + font-weight: bold; +} +main a::before { + content: '➞'; + position: absolute; + left: 0; +} */ +main img, +main video, +main audio { + display: block; + margin: 1rem auto; + max-width: 100%; +} +main video, +main audio { + width: 100%; +} +main video { + border: 1px solid lightgray; + aspect-ratio: 16 / 9; +} + +header .back-link { + display: inline-flex; + align-items: center; + color: inherit; + text-decoration: none; + gap: 0.5rem; + line-height: 1; +} +footer { + padding-top: 1rem; + margin-top: 4rem; + border-top: 1px dotted lightgray; + text-align: center; + font-size: 0.75rem; + line-height: 1rem; +} +footer .lichen-plug { + display: block; + margin: 1rem auto; + color: inherit; + text-decoration: none; +} +footer p { + margin: 0.2rem 0; +} + +table { + border: solid 1px gray; + border-collapse: collapse; + border-spacing: 0; + font: normal 13px Arial, sans-serif; +} +thead th { + background-color: orchid; + border: solid 1px black; + color: white; + padding: 10px; + text-align: left; +} +tbody td { + border: solid 1px black; + color: #333; + padding: 10px; + text-shadow: 1px 1px 1px #fff; +} diff --git a/cheatsheet.md b/cheatsheet.md new file mode 100644 index 0000000..45f2b8b --- /dev/null +++ b/cheatsheet.md @@ -0,0 +1,95 @@ +# Markdown helper + +_This file is intented to be viewed alongside its source in the lichen cms system. You can see it as intended by following this [link](cms/edit.php/cheatsheet.md), or by right-clicking and selecting `view source`_ + +## Headings + +# Heading Level 1 + +## Heading Level 2 + +### Heading Level 3 + +## Text formatting + +_Italicised text_, **bold text** and `code text`. Code text is made with back-ticks which can be weird to find on some keyboards. Look it up. + +## Blockquote + +> We live in capitalism. Its power seems inescapable. So did the divine right of kings. Any human power can be resisted and changed by human beings. Resistance and change often begin in art, and very often in our art - the art of words. + +Ursula K. Le Guin + +## Ordered list + +1. A thing +2. Another thing +3. Even more of a thing + +## Bullet list + +- One bullet +- Another +- Also another + +## Horizontal ruler + +--- + +## Link + +This is a fork of [the original php version of lichen](https://lichen.sensorstation.co/unmaintained//) + +## A local image + +![Image alt text here](/assets/dandi.jpg) + +## An external image + +![Image alt text here](https://cdn.dribbble.com/users/1570563/screenshots/5955986/dandelion_illustration_final_2_4x.jpg) + +## Table + +| Syntax | Cool? | +| -------- | ----- | +| Markdown | Yes | +| Gemini | Yes | + +## Code Block + +```ascii + _ _ _ _ + _ _| | ___ __ _ _ __| | |_ _ __ ___| |_ +| | | | |/ / '__| | | |/ _` | __| | '_ \ / _ \ __| +| |_| | <| | | |_| | (_| | |_ _| | | | __/ |_ + \__,_|_|\_\_| \__,_|\__,_|\__(_)_| |_|\___|\__| +``` + +## Footnote + +Here's a sentence with a footnote. [^1] + +[^1]: This is the footnote. + +## Code comment + + + +A comment will not be displayed, it is used for leaving comments for people editing the source of a page. + +## Heading ID + +### Heading with an id {#cool-id} + +[This is a link to the heading id](#cool-id) + +## Definition List + +term +: definition + +## Escaping characters + +Markdown symbols needs to be escaped when not used for markdown. Backslash is used for this: \\ \# \* \_ \*\* etc. + + diff --git a/cms/.htaccess b/cms/.htaccess new file mode 100644 index 0000000..f6b85d3 --- /dev/null +++ b/cms/.htaccess @@ -0,0 +1,13 @@ +# # --- DO NOT DELETE --- # +# # This file enables password protection for editing the site. +# # Set up an htpasswd file (outside of web root!) and update the path +# # setting in the AuthUserFile directive. +# # https://httpd.apache.org/docs/current/programs/htpasswd.html + +# AuthType Basic +# AuthName "Protected" +# AuthUserFile /home/protected/lichen.htpasswd +# Require valid-user + +# Require all denied +# Require env REDIRECT_authbypass diff --git a/cms/edit.php b/cms/edit.php new file mode 100644 index 0000000..adaf5c5 --- /dev/null +++ b/cms/edit.php @@ -0,0 +1,724 @@ +getMessage(); + exit(1); +} +set_exception_handler('exception_handler'); + +define("EDITABLE_EXTENSIONS", ["gmi", "md"]); + +// patch up PATH_INFO in case it is unset +if (!array_key_exists('PATH_INFO', $_SERVER) || $_SERVER['PATH_INFO'] == "") { + $_SERVER['PATH_INFO'] = "/"; +} +if (substr($_SERVER['PATH_INFO'], -1, 1) === "/") { + $_SERVER['PATH_INFO'] .= "index.md"; +} +?> + +
  • + + + " class="link--editable"> + + + +
    + + +
    +
  • + + + +
  • +
    > + + +
    + + + + 0) : ?> + + +
    +
    + +
    +
  • + + + +
      + $value) : ?> + + + + + + +
    + + $max_width) { + $img = imagescale($img, $max_width); + } + + // replace extension with new format + $public_path = dirname($_SERVER['PATH_INFO']) . "/" . basename($new_basename, "." . $extension) . "." . $dest_format; + + $_dest = fopen(".." . $public_path, "x"); + if (!$_dest) { + http_response_code(400); + header('Content-Type: text/plain'); + echo 'File already exists in this directory. Delete it to overwrite.'; + exit(1); + } + switch ($dest_format) { + case "png": + imagepng($img, $_dest, intval(getenv('IMG_RESIZE_PNG_COMPRESSION') ?: -1)); + break; + case "jpg": + case "jpeg": + imagejpeg($img, $_dest, intval(getenv('IMG_RESIZE_JPEG_QUALITY') ?: -1)); + break; + case "webp": + imagewebp($img, $_dest, intval(getenv('IMG_RESIZE_WEBP_QUALITY') ?: -1)); + break; + case "avif": + imageavif($img, $_dest, intval(getenv('IMG_RESIZE_AVIF_QUALITY') ?: -1), intval(getenv('IMG_RESIZE_AVIF_SPEED') ?: -1)); + break; + case "bmp": + imagewbmp($img, $_dest); + break; + default: + http_response_code(400); + header('Content-Type: text/plain'); + echo "Unknown image format: " . $dest_format; + exit(1); + } + fclose($_dest); + } else { + $public_path = dirname($_SERVER['PATH_INFO']) . "/" . $new_basename; + $_dest = fopen(".." . $public_path, "x"); + if (!$_dest) { + http_response_code(400); + header('Content-Type: text/plain'); + echo 'File already exists in this directory. Delete it to overwrite.'; + exit(1); + } + $_src = fopen("php://input", "r"); + stream_copy_to_stream($_src, $_dest); + fclose($_dest); + fclose($_src); + } + + $base = dirname($public_path); + if (substr($base, -1, 1) !== "/") { + $base .= "/"; + } + + http_response_code(200); + header('Content-Type: text/html'); + render_file(basename($public_path), $base); + exit(0); +} elseif ($_SERVER['REQUEST_METHOD'] === 'DELETE') { + if ($_SERVER['PATH_INFO'] === "" || $_SERVER['PATH_INFO'] === "." || $_SERVER['PATH_INFO'] === "/") { + http_response_code(400); + exit(1); + } + + if (is_dir(".." . $_SERVER['PATH_INFO'])) { + delTree(".." . $_SERVER['PATH_INFO']); + } else { + unlink(".." . $_SERVER['PATH_INFO']); + } + http_response_code(204); + exit(0); +} elseif ($_SERVER['REQUEST_METHOD'] === 'PATCH') { + mkdir(".." . $_SERVER['PATH_INFO']); + http_response_code(200); + header('Content-Type: text/html'); + $dir = dirname($_SERVER['PATH_INFO']); + render_directory(basename($_SERVER['PATH_INFO']), $dir, count(explode("/", $dir)), array()); + exit(0); +} +?> + + + + + + Lichen + + + + + +
    +
    + + + +
    + + + + +
    +
    + + + + +
    + + + + diff --git a/cms/gemtext.php b/cms/gemtext.php new file mode 100644 index 0000000..e4b3ff4 --- /dev/null +++ b/cms/gemtext.php @@ -0,0 +1,154 @@ += 3 && substr($line, 0, 3) == "```") { + $preformatted = !$preformatted; + if($preformatted) { + if($line_len > 3) { + $body .= "
    \n";
    +				} else {
    +					$body .= "
    \n";
    +				}
    +			} else {
    +				$body .= "
    \n"; + } + continue; + } + + if($preformatted) { + $body .= htmlspecialchars($line_untrimmed); + continue; + } + + // == LINKS + if(substr($line,0,2) === "=>") { + $line = ltrim($line, "=> \t"); + if(strlen($line) == 0) { + continue; + } + $first_space = strpos($line, " "); + $first_tab = strpos($line, "\t"); + $link_target = ""; + $link_label = ""; + if($first_space === false && $first_tab === false) { + $link_target = $line; + $link_label = $line; + } else { + if($first_space === false) $first_space = PHP_INT_MAX; + if($first_tab === false) $first_tab = PHP_INT_MAX; + + $parts = []; + if($first_space < $first_tab) { + $parts = explode(" ", $line, 2); + } else { + $parts = explode("\t", $line, 2); + } + $link_target = $parts[0]; + $link_label = $parts[1]; + } + $extension = strtolower(pathinfo($link_target, PATHINFO_EXTENSION)); + if(in_array($extension, IMAGE_EXTENSIONS)) { + $body .= "\"".htmlspecialchars($link_label)."\"\n"; + } elseif(in_array($extension, VIDEO_EXTENSIONS)) { + $body .= ""; + } elseif(in_array($extension, AUDIO_EXTENSIONS)) { + $body .= ""; + } else { + $body .= "".htmlspecialchars($link_label)."\n"; + } + continue; + } + + // == HEADLINES + $head_level = 0; + if(substr($line,0,2) === "# ") { + $head_level = 1; + } elseif(substr($line,0,3) === "## ") { + $head_level = 2; + } elseif(substr($line,0,4) === "### ") { + $head_level = 3; + } + + if($head_level > 0) { + $line = ltrim($line, "# \t"); + if($generate_headline_ids) { + $body .= "".htmlspecialchars($line)."\n"; + } else { + $body .= "".htmlspecialchars($line)."\n"; + } + if($title == "") { + $title = $line; + } + $list_index = 1; # reset + continue; + } + + // == BLOCKQUOTES + if(substr($line,0,1) === ">") { + $body .= "
    ".htmlspecialchars(ltrim($line, "> \t"))."
    \n"; + continue; + } + + + // == LISTS + if(substr($line,0,2) === "* ") { + if(!$list_open) { + $list_open = true; + $body .= "
      \n"; + } + $line = ltrim($line, "* "); + $body .= "
    1. ".htmlspecialchars($line)."
    2. \n"; + $list_index += 1; + continue; + } else if($list_open && substr($line,0,1) !== "*") { + $list_open = false; + $body .= "
    \n"; + } + + // == PARAGRAPHS + if($line_len > 0) { + $body .= "

    ".htmlspecialchars($line)."

    \n"; + } else { + // == WHITESPACE + // only insert
    after 2 newlines + if($last_br == $line_no - 1) { + $body .= "
    \n"; + } + $last_br = $line_no; + } + } + + if($preformatted) { + $preformatted = false; + $body .= "
    \n"; + } + if($list_open) { + $list_open = false; + $body .= "\n"; + } + + return array("body" => $body, "title" => $title); +} +?> diff --git a/cms/markdown.php b/cms/markdown.php new file mode 100644 index 0000000..85af5bf --- /dev/null +++ b/cms/markdown.php @@ -0,0 +1,23 @@ +]+>(.*)]+>|iU', $html, $headings ); + $title = trim(implode($headings[1])); + + return array("html" => $html, "title" => $title); +} diff --git a/cms/render.php b/cms/render.php new file mode 100644 index 0000000..b0fb5e3 --- /dev/null +++ b/cms/render.php @@ -0,0 +1,65 @@ + $body, + 'title' => $pageTitle +] = $_content; + + +// Handle header and footer +$header = null; +$footer = null; +$headerTitle = null; +// When header or footer is being edited / displayed, don't display in layout +$displayLayout = !strpos($path, 'header.md') && !strpos($path, 'footer.md'); + +if (file_exists('../header.md') && $displayLayout) { + $header_src = fopen('../header.md', 'r'); + [ + 'html' => $header, + 'title' => $headerTitle + ] = markdown_to_html($header_src); + fclose($header_src); +} +if (file_exists('../footer.md') && $displayLayout) { + $footer_src = fopen('../footer.md', 'r'); + $footer = markdown_to_html($footer_src)['html']; + fclose($footer_src); +} + +// Get title from page metadata with fallbacks +$title = $pageTitle ? $pageTitle : ($headerTitle ? $headerTitle : ''); + +include "../theme/layout.php"; diff --git a/cms/vendor/php-markdown-lib-9.1/.editorconfig b/cms/vendor/php-markdown-lib-9.1/.editorconfig new file mode 100644 index 0000000..179d40c --- /dev/null +++ b/cms/vendor/php-markdown-lib-9.1/.editorconfig @@ -0,0 +1,11 @@ +# EditorConfig is awesome: https://EditorConfig.org +root = true + +[*] +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = false + +[*.php] +indent_style = tab +insert_final_newline = true diff --git a/cms/vendor/php-markdown-lib-9.1/.gitignore b/cms/vendor/php-markdown-lib-9.1/.gitignore new file mode 100644 index 0000000..5bd6475 --- /dev/null +++ b/cms/vendor/php-markdown-lib-9.1/.gitignore @@ -0,0 +1,3 @@ +*~ +/composer.lock +/vendor/ diff --git a/cms/vendor/php-markdown-lib-9.1/.scrutinizer.yml b/cms/vendor/php-markdown-lib-9.1/.scrutinizer.yml new file mode 100644 index 0000000..7542096 --- /dev/null +++ b/cms/vendor/php-markdown-lib-9.1/.scrutinizer.yml @@ -0,0 +1,36 @@ +build: + environment: + php: + version: '7.4' + nodes: + analysis: + project_setup: + override: + - 'true' + tests: + override: + - + command: 'vendor/bin/phpunit --coverage-clover=clover.xml' + coverage: + file: 'clover.xml' + format: 'clover' + - + command: phpcs-run + use_website_config: true + environment: + node: + version: 6.0.0 + tests: true +filter: + excluded_paths: + - 'test/*' +checks: + php: true +coding_style: + php: + indentation: + general: + use_tabs: true + spaces: + around_operators: + concatenation: true diff --git a/cms/vendor/php-markdown-lib-9.1/.travis.yml b/cms/vendor/php-markdown-lib-9.1/.travis.yml new file mode 100644 index 0000000..5a2a16a --- /dev/null +++ b/cms/vendor/php-markdown-lib-9.1/.travis.yml @@ -0,0 +1,19 @@ +language: php + +matrix: + include: + - php: hhvm-3.18 + dist: trusty + - php: 7.4 + dist: bionic + - php: 8.0 + dist: bionic + +install: + - composer install --prefer-dist + +script: + - vendor/bin/phpunit --log-junit=phpunit.log + +notifications: + email: false diff --git a/cms/vendor/php-markdown-lib-9.1/License.md b/cms/vendor/php-markdown-lib-9.1/License.md new file mode 100644 index 0000000..25d1e16 --- /dev/null +++ b/cms/vendor/php-markdown-lib-9.1/License.md @@ -0,0 +1,36 @@ +PHP Markdown Lib +Copyright (c) 2004-2021 Michel Fortin + +All rights reserved. + +Based on Markdown +Copyright (c) 2003-2006 John Gruber + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +* Neither the name "Markdown" nor the names of its contributors may + be used to endorse or promote products derived from this software + without specific prior written permission. + +This software is provided by the copyright holders and contributors "as +is" and any express or implied warranties, including, but not limited +to, the implied warranties of merchantability and fitness for a +particular purpose are disclaimed. In no event shall the copyright owner +or contributors be liable for any direct, indirect, incidental, special, +exemplary, or consequential damages (including, but not limited to, +procurement of substitute goods or services; loss of use, data, or +profits; or business interruption) however caused and on any theory of +liability, whether in contract, strict liability, or tort (including +negligence or otherwise) arising in any way out of the use of this +software, even if advised of the possibility of such damage. diff --git a/cms/vendor/php-markdown-lib-9.1/Michelf/Markdown.inc.php b/cms/vendor/php-markdown-lib-9.1/Michelf/Markdown.inc.php new file mode 100644 index 0000000..e2bd380 --- /dev/null +++ b/cms/vendor/php-markdown-lib-9.1/Michelf/Markdown.inc.php @@ -0,0 +1,10 @@ + + * @copyright 2004-2019 Michel Fortin + * @copyright (Original Markdown) 2004-2006 John Gruber + */ + +namespace Michelf; + +/** + * Markdown Parser Class + */ +class Markdown implements MarkdownInterface { + /** + * Define the package version + * @var string + */ + const MARKDOWNLIB_VERSION = "2.0"; + + /** + * Simple function interface - Initialize the parser and return the result + * of its transform method. This will work fine for derived classes too. + * + * @api + * + * @param string $text + * @return string + */ + public static function defaultTransform($text) { + // Take parser class on which this function was called. + $parser_class = static::class; + + // Try to take parser from the static parser list + static $parser_list; + $parser =& $parser_list[$parser_class]; + + // Create the parser it not already set + if (!$parser) { + $parser = new $parser_class; + } + + // Transform text using parser. + return $parser->transform($text); + } + + /** + * Configuration variables + */ + /** + * Change to ">" for HTML output. + */ + public string $empty_element_suffix = " />"; + + /** + * The width of indentation of the output markup + */ + public int $tab_width = 4; + + /** + * Change to `true` to disallow markup or entities. + */ + public bool $no_markup = false; + public bool $no_entities = false; + + + /** + * Change to `true` to enable line breaks on \n without two trailling spaces + * @var boolean + */ + public bool $hard_wrap = false; + + /** + * Predefined URLs and titles for reference links and images. + */ + public array $predef_urls = array(); + public array $predef_titles = array(); + + /** + * Optional filter function for URLs + * @var callable|null + */ + public $url_filter_func = null; + + /** + * Optional header id="" generation callback function. + * @var callable|null + */ + public $header_id_func = null; + + /** + * Optional function for converting code block content to HTML + * @var callable|null + */ + public $code_block_content_func = null; + + /** + * Optional function for converting code span content to HTML. + * @var callable|null + */ + public $code_span_content_func = null; + + /** + * Class attribute to toggle "enhanced ordered list" behaviour + * setting this to true will allow ordered lists to start from the index + * number that is defined first. + * + * For example: + * 2. List item two + * 3. List item three + * + * Becomes: + *
      + *
    1. List item two
    2. + *
    3. List item three
    4. + *
    + */ + public bool $enhanced_ordered_list = false; + + /** + * Parser implementation + */ + /** + * Regex to match balanced [brackets]. + * Needed to insert a maximum bracked depth while converting to PHP. + */ + protected int $nested_brackets_depth = 6; + protected $nested_brackets_re; + + protected int $nested_url_parenthesis_depth = 4; + protected $nested_url_parenthesis_re; + + /** + * Table of hash values for escaped characters: + */ + protected string $escape_chars = '\`*_{}[]()>#+-.!'; + protected string $escape_chars_re; + + /** + * Constructor function. Initialize appropriate member variables. + * @return void + */ + public function __construct() { + $this->_initDetab(); + $this->prepareItalicsAndBold(); + + $this->nested_brackets_re = + str_repeat('(?>[^\[\]]+|\[', $this->nested_brackets_depth). + str_repeat('\])*', $this->nested_brackets_depth); + + $this->nested_url_parenthesis_re = + str_repeat('(?>[^()\s]+|\(', $this->nested_url_parenthesis_depth). + str_repeat('(?>\)))*', $this->nested_url_parenthesis_depth); + + $this->escape_chars_re = '['.preg_quote($this->escape_chars).']'; + + // Sort document, block, and span gamut in ascendent priority order. + asort($this->document_gamut); + asort($this->block_gamut); + asort($this->span_gamut); + } + + + /** + * Internal hashes used during transformation. + */ + protected array $urls = array(); + protected $titles = array(); + protected array $html_hashes = array(); + + /** + * Status flag to avoid invalid nesting. + */ + protected bool $in_anchor = false; + + /** + * Status flag to avoid invalid nesting. + */ + protected bool $in_emphasis_processing = false; + + /** + * Called before the transformation process starts to setup parser states. + * @return void + */ + protected function setup() { + // Clear global hashes. + $this->urls = $this->predef_urls; + $this->titles = $this->predef_titles; + $this->html_hashes = array(); + $this->in_anchor = false; + $this->in_emphasis_processing = false; + } + + /** + * Called after the transformation process to clear any variable which may + * be taking up memory unnecessarly. + * @return void + */ + protected function teardown() { + $this->urls = array(); + $this->titles = array(); + $this->html_hashes = array(); + } + + /** + * Main function. Performs some preprocessing on the input text and pass + * it through the document gamut. + * + * @api + * + * @param string $text + * @return string + */ + public function transform($text) { + $this->setup(); + + # Remove UTF-8 BOM and marker character in input, if present. + $text = preg_replace('{^\xEF\xBB\xBF|\x1A}', '', $text); + + # Standardize line endings: + # DOS to Unix and Mac to Unix + $text = preg_replace('{\r\n?}', "\n", $text); + + # Make sure $text ends with a couple of newlines: + $text .= "\n\n"; + + # Convert all tabs to spaces. + $text = $this->detab($text); + + # Turn block-level HTML blocks into hash entries + $text = $this->hashHTMLBlocks($text); + + # Strip any lines consisting only of spaces and tabs. + # This makes subsequent regexen easier to write, because we can + # match consecutive blank lines with /\n+/ instead of something + # contorted like /[ ]*\n+/ . + $text = preg_replace('/^[ ]+$/m', '', $text); + + # Run document gamut methods. + foreach ($this->document_gamut as $method => $priority) { + $text = $this->$method($text); + } + + $this->teardown(); + + return $text . "\n"; + } + + /** + * Define the document gamut + */ + protected array $document_gamut = array( + // Strip link definitions, store in hashes. + "stripLinkDefinitions" => 20, + "runBasicBlockGamut" => 30, + ); + + /** + * Strips link definitions from text, stores the URLs and titles in + * hash references + * @param string $text + * @return string + */ + protected function stripLinkDefinitions($text) { + + $less_than_tab = $this->tab_width - 1; + + // Link defs are in the form: ^[id]: url "optional title" + $text = preg_replace_callback('{ + ^[ ]{0,'.$less_than_tab.'}\[(.+)\][ ]?: # id = $1 + [ ]* + \n? # maybe *one* newline + [ ]* + (?: + <(.+?)> # url = $2 + | + (\S+?) # url = $3 + ) + [ ]* + \n? # maybe one newline + [ ]* + (?: + (?<=\s) # lookbehind for whitespace + ["(] + (.*?) # title = $4 + [")] + [ ]* + )? # title is optional + (?:\n+|\Z) + }xm', + array($this, '_stripLinkDefinitions_callback'), + $text + ); + return $text; + } + + /** + * The callback to strip link definitions + * @param array $matches + * @return string + */ + protected function _stripLinkDefinitions_callback($matches) { + $link_id = strtolower($matches[1]); + $url = $matches[2] == '' ? $matches[3] : $matches[2]; + $this->urls[$link_id] = $url; + $this->titles[$link_id] =& $matches[4]; + return ''; // String that will replace the block + } + + /** + * Hashify HTML blocks + * @param string $text + * @return string + */ + protected function hashHTMLBlocks($text) { + if ($this->no_markup) { + return $text; + } + + $less_than_tab = $this->tab_width - 1; + + /** + * Hashify HTML blocks: + * + * We only want to do this for block-level HTML tags, such as headers, + * lists, and tables. That's because we still want to wrap

    s around + * "paragraphs" that are wrapped in non-block-level tags, such as + * anchors, phrase emphasis, and spans. The list of tags we're looking + * for is hard-coded: + * + * * List "a" is made of tags which can be both inline or block-level. + * These will be treated block-level when the start tag is alone on + * its line, otherwise they're not matched here and will be taken as + * inline later. + * * List "b" is made of tags which are always block-level; + */ + $block_tags_a_re = 'ins|del'; + $block_tags_b_re = 'p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|address|'. + 'script|noscript|style|form|fieldset|iframe|math|svg|'. + 'article|section|nav|aside|hgroup|header|footer|'. + 'figure|details|summary'; + + // Regular expression for the content of a block tag. + $nested_tags_level = 4; + $attr = ' + (?> # optional tag attributes + \s # starts with whitespace + (?> + [^>"/]+ # text outside quotes + | + /+(?!>) # slash not followed by ">" + | + "[^"]*" # text inside double quotes (tolerate ">") + | + \'[^\']*\' # text inside single quotes (tolerate ">") + )* + )? + '; + $content = + str_repeat(' + (?> + [^<]+ # content without tag + | + <\2 # nested opening tag + '.$attr.' # attributes + (?> + /> + | + >', $nested_tags_level). // end of opening tag + '.*?'. // last level nested tag content + str_repeat(' + # closing nested tag + ) + | + <(?!/\2\s*> # other tags with a different name + ) + )*', + $nested_tags_level); + $content2 = str_replace('\2', '\3', $content); + + /** + * First, look for nested blocks, e.g.: + *

    + *
    + * tags for inner block must be indented. + *
    + *
    + * + * The outermost tags must start at the left margin for this to match, + * and the inner nested divs must be indented. + * We need to do this before the next, more liberal match, because the + * next match will start at the first `
    ` and stop at the + * first `
    `. + */ + $text = preg_replace_callback('{(?> + (?> + (?<=\n) # Starting on its own line + | # or + \A\n? # the at beginning of the doc + ) + ( # save in $1 + + # Match from `\n` to `\n`, handling nested tags + # in between. + + [ ]{0,'.$less_than_tab.'} + <('.$block_tags_b_re.')# start tag = $2 + '.$attr.'> # attributes followed by > and \n + '.$content.' # content, support nesting + # the matching end tag + [ ]* # trailing spaces/tabs + (?=\n+|\Z) # followed by a newline or end of document + + | # Special version for tags of group a. + + [ ]{0,'.$less_than_tab.'} + <('.$block_tags_a_re.')# start tag = $3 + '.$attr.'>[ ]*\n # attributes followed by > + '.$content2.' # content, support nesting + # the matching end tag + [ ]* # trailing spaces/tabs + (?=\n+|\Z) # followed by a newline or end of document + + | # Special case just for
    . It was easier to make a special + # case than to make the other regex more complicated. + + [ ]{0,'.$less_than_tab.'} + <(hr) # start tag = $2 + '.$attr.' # attributes + /?> # the matching end tag + [ ]* + (?=\n{2,}|\Z) # followed by a blank line or end of document + + | # Special case for standalone HTML comments: + + [ ]{0,'.$less_than_tab.'} + (?s: + + ) + [ ]* + (?=\n{2,}|\Z) # followed by a blank line or end of document + + | # PHP and ASP-style processor instructions ( + ) + [ ]* + (?=\n{2,}|\Z) # followed by a blank line or end of document + + ) + )}Sxmi', + array($this, '_hashHTMLBlocks_callback'), + $text + ); + + return $text; + } + + /** + * The callback for hashing HTML blocks + * @param string $matches + * @return string + */ + protected function _hashHTMLBlocks_callback($matches) { + $text = $matches[1]; + $key = $this->hashBlock($text); + return "\n\n$key\n\n"; + } + + /** + * Called whenever a tag must be hashed when a function insert an atomic + * element in the text stream. Passing $text to through this function gives + * a unique text-token which will be reverted back when calling unhash. + * + * The $boundary argument specify what character should be used to surround + * the token. By convension, "B" is used for block elements that needs not + * to be wrapped into paragraph tags at the end, ":" is used for elements + * that are word separators and "X" is used in the general case. + * + * @param string $text + * @param string $boundary + * @return string + */ + protected function hashPart($text, $boundary = 'X') { + // Swap back any tag hash found in $text so we do not have to `unhash` + // multiple times at the end. + $text = $this->unhash($text); + + // Then hash the block. + static $i = 0; + $key = "$boundary\x1A" . ++$i . $boundary; + $this->html_hashes[$key] = $text; + return $key; // String that will replace the tag. + } + + /** + * Shortcut function for hashPart with block-level boundaries. + * @param string $text + * @return string + */ + protected function hashBlock($text) { + return $this->hashPart($text, 'B'); + } + + /** + * Define the block gamut - these are all the transformations that form + * block-level tags like paragraphs, headers, and list items. + */ + protected array $block_gamut = array( + "doHeaders" => 10, + "doHorizontalRules" => 20, + "doLists" => 40, + "doCodeBlocks" => 50, + "doBlockQuotes" => 60, + ); + + /** + * Run block gamut tranformations. + * + * We need to escape raw HTML in Markdown source before doing anything + * else. This need to be done for each block, and not only at the + * begining in the Markdown function since hashed blocks can be part of + * list items and could have been indented. Indented blocks would have + * been seen as a code block in a previous pass of hashHTMLBlocks. + * + * @param string $text + * @return string + */ + protected function runBlockGamut($text) { + $text = $this->hashHTMLBlocks($text); + return $this->runBasicBlockGamut($text); + } + + /** + * Run block gamut tranformations, without hashing HTML blocks. This is + * useful when HTML blocks are known to be already hashed, like in the first + * whole-document pass. + * + * @param string $text + * @return string + */ + protected function runBasicBlockGamut($text) { + + foreach ($this->block_gamut as $method => $priority) { + $text = $this->$method($text); + } + + // Finally form paragraph and restore hashed blocks. + $text = $this->formParagraphs($text); + + return $text; + } + + /** + * Convert horizontal rules + * @param string $text + * @return string + */ + protected function doHorizontalRules($text) { + return preg_replace( + '{ + ^[ ]{0,3} # Leading space + ([-*_]) # $1: First marker + (?> # Repeated marker group + [ ]{0,2} # Zero, one, or two spaces. + \1 # Marker character + ){2,} # Group repeated at least twice + [ ]* # Tailing spaces + $ # End of line. + }mx', + "\n".$this->hashBlock("empty_element_suffix")."\n", + $text + ); + } + + /** + * These are all the transformations that occur *within* block-level + * tags like paragraphs, headers, and list items. + */ + protected array $span_gamut = array( + // Process character escapes, code spans, and inline HTML + // in one shot. + "parseSpan" => -30, + // Process anchor and image tags. Images must come first, + // because ![foo][f] looks like an anchor. + "doImages" => 10, + "doAnchors" => 20, + // Make links out of things like `` + // Must come after doAnchors, because you can use < and > + // delimiters in inline links like [this](). + "doAutoLinks" => 30, + "encodeAmpsAndAngles" => 40, + "doItalicsAndBold" => 50, + "doHardBreaks" => 60, + ); + + /** + * Run span gamut transformations + * @param string $text + * @return string + */ + protected function runSpanGamut($text) { + foreach ($this->span_gamut as $method => $priority) { + $text = $this->$method($text); + } + + return $text; + } + + /** + * Do hard breaks + * @param string $text + * @return string + */ + protected function doHardBreaks($text) { + if ($this->hard_wrap) { + return preg_replace_callback('/ *\n/', + array($this, '_doHardBreaks_callback'), $text); + } else { + return preg_replace_callback('/ {2,}\n/', + array($this, '_doHardBreaks_callback'), $text); + } + } + + /** + * Trigger part hashing for the hard break (callback method) + * @param array $matches + * @return string + */ + protected function _doHardBreaks_callback($matches) { + return $this->hashPart("empty_element_suffix\n"); + } + + /** + * Turn Markdown link shortcuts into XHTML tags. + * @param string $text + * @return string + */ + protected function doAnchors($text) { + if ($this->in_anchor) { + return $text; + } + $this->in_anchor = true; + + // First, handle reference-style links: [link text] [id] + $text = preg_replace_callback('{ + ( # wrap whole match in $1 + \[ + ('.$this->nested_brackets_re.') # link text = $2 + \] + + [ ]? # one optional space + (?:\n[ ]*)? # one optional newline followed by spaces + + \[ + (.*?) # id = $3 + \] + ) + }xs', + array($this, '_doAnchors_reference_callback'), $text); + + // Next, inline-style links: [link text](url "optional title") + $text = preg_replace_callback('{ + ( # wrap whole match in $1 + \[ + ('.$this->nested_brackets_re.') # link text = $2 + \] + \( # literal paren + [ \n]* + (?: + <(.+?)> # href = $3 + | + ('.$this->nested_url_parenthesis_re.') # href = $4 + ) + [ \n]* + ( # $5 + ([\'"]) # quote char = $6 + (.*?) # Title = $7 + \6 # matching quote + [ \n]* # ignore any spaces/tabs between closing quote and ) + )? # title is optional + \) + ) + }xs', + array($this, '_doAnchors_inline_callback'), $text); + + // Last, handle reference-style shortcuts: [link text] + // These must come last in case you've also got [link text][1] + // or [link text](/foo) + $text = preg_replace_callback('{ + ( # wrap whole match in $1 + \[ + ([^\[\]]+) # link text = $2; can\'t contain [ or ] + \] + ) + }xs', + array($this, '_doAnchors_reference_callback'), $text); + + $this->in_anchor = false; + return $text; + } + + /** + * Callback method to parse referenced anchors + * @param string $matches + * @return string + */ + protected function _doAnchors_reference_callback($matches) { + $whole_match = $matches[1]; + $link_text = $matches[2]; + $link_id =& $matches[3]; + + if ($link_id == "") { + // for shortcut links like [this][] or [this]. + $link_id = $link_text; + } + + // lower-case and turn embedded newlines into spaces + $link_id = strtolower($link_id); + $link_id = preg_replace('{[ ]?\n}', ' ', $link_id); + + if (isset($this->urls[$link_id])) { + $url = $this->urls[$link_id]; + $url = $this->encodeURLAttribute($url); + + $result = "titles[$link_id] ) ) { + $title = $this->titles[$link_id]; + $title = $this->encodeAttribute($title); + $result .= " title=\"$title\""; + } + + $link_text = $this->runSpanGamut($link_text); + $result .= ">$link_text"; + $result = $this->hashPart($result); + } else { + $result = $whole_match; + } + return $result; + } + + /** + * Callback method to parse inline anchors + * @param string $matches + * @return string + */ + protected function _doAnchors_inline_callback($matches) { + $link_text = $this->runSpanGamut($matches[2]); + $url = $matches[3] === '' ? $matches[4] : $matches[3]; + $title =& $matches[7]; + + // If the URL was of the form it got caught by the HTML + // tag parser and hashed. Need to reverse the process before using + // the URL. + $unhashed = $this->unhash($url); + if ($unhashed !== $url) + $url = preg_replace('/^<(.*)>$/', '\1', $unhashed); + + $url = $this->encodeURLAttribute($url); + + $result = "encodeAttribute($title); + $result .= " title=\"$title\""; + } + + $link_text = $this->runSpanGamut($link_text); + $result .= ">$link_text"; + + return $this->hashPart($result); + } + + /** + * Turn Markdown image shortcuts into tags. + * @param string $text + * @return string + */ + protected function doImages($text) { + // First, handle reference-style labeled images: ![alt text][id] + $text = preg_replace_callback('{ + ( # wrap whole match in $1 + !\[ + ('.$this->nested_brackets_re.') # alt text = $2 + \] + + [ ]? # one optional space + (?:\n[ ]*)? # one optional newline followed by spaces + + \[ + (.*?) # id = $3 + \] + + ) + }xs', + array($this, '_doImages_reference_callback'), $text); + + // Next, handle inline images: ![alt text](url "optional title") + // Don't forget: encode * and _ + $text = preg_replace_callback('{ + ( # wrap whole match in $1 + !\[ + ('.$this->nested_brackets_re.') # alt text = $2 + \] + \s? # One optional whitespace character + \( # literal paren + [ \n]* + (?: + <(\S*)> # src url = $3 + | + ('.$this->nested_url_parenthesis_re.') # src url = $4 + ) + [ \n]* + ( # $5 + ([\'"]) # quote char = $6 + (.*?) # title = $7 + \6 # matching quote + [ \n]* + )? # title is optional + \) + ) + }xs', + array($this, '_doImages_inline_callback'), $text); + + return $text; + } + + /** + * Callback to parse references image tags + * @param array $matches + * @return string + */ + protected function _doImages_reference_callback($matches) { + $whole_match = $matches[1]; + $alt_text = $matches[2]; + $link_id = strtolower($matches[3]); + + if ($link_id == "") { + $link_id = strtolower($alt_text); // for shortcut links like ![this][]. + } + + $alt_text = $this->encodeAttribute($alt_text); + if (isset($this->urls[$link_id])) { + $url = $this->encodeURLAttribute($this->urls[$link_id]); + $result = "\"$alt_text\"";titles[$link_id])) { + $title = $this->titles[$link_id]; + $title = $this->encodeAttribute($title); + $result .= " title=\"$title\""; + } + $result .= $this->empty_element_suffix; + $result = $this->hashPart($result); + } else { + // If there's no such link ID, leave intact: + $result = $whole_match; + } + + return $result; + } + + /** + * Callback to parse inline image tags + * @param array $matches + * @return string + */ + protected function _doImages_inline_callback($matches) { + $whole_match = $matches[1]; + $alt_text = $matches[2]; + $url = $matches[3] == '' ? $matches[4] : $matches[3]; + $title =& $matches[7]; + + $alt_text = $this->encodeAttribute($alt_text); + $url = $this->encodeURLAttribute($url); + $result = "\"$alt_text\"";encodeAttribute($title); + $result .= " title=\"$title\""; // $title already quoted + } + $result .= $this->empty_element_suffix; + + return $this->hashPart($result); + } + + /** + * Parse Markdown heading elements to HTML + * @param string $text + * @return string + */ + protected function doHeaders($text) { + /** + * Setext-style headers: + * Header 1 + * ======== + * + * Header 2 + * -------- + */ + $text = preg_replace_callback('{ ^(.+?)[ ]*\n(=+|-+)[ ]*\n+ }mx', + array($this, '_doHeaders_callback_setext'), $text); + + /** + * atx-style headers: + * # Header 1 + * ## Header 2 + * ## Header 2 with closing hashes ## + * ... + * ###### Header 6 + */ + $text = preg_replace_callback('{ + ^(\#{1,6}) # $1 = string of #\'s + [ ]* + (.+?) # $2 = Header text + [ ]* + \#* # optional closing #\'s (not counted) + \n+ + }xm', + array($this, '_doHeaders_callback_atx'), $text); + + return $text; + } + + /** + * Setext header parsing callback + * @param array $matches + * @return string + */ + protected function _doHeaders_callback_setext($matches) { + // Terrible hack to check we haven't found an empty list item. + if ($matches[2] == '-' && preg_match('{^-(?: |$)}', $matches[1])) { + return $matches[0]; + } + + $level = $matches[2][0] == '=' ? 1 : 2; + + // ID attribute generation + $idAtt = $this->_generateIdFromHeaderValue($matches[1]); + + $block = "".$this->runSpanGamut($matches[1]).""; + return "\n" . $this->hashBlock($block) . "\n\n"; + } + + /** + * ATX header parsing callback + * @param array $matches + * @return string + */ + protected function _doHeaders_callback_atx($matches) { + // ID attribute generation + $idAtt = $this->_generateIdFromHeaderValue($matches[2]); + + $level = strlen($matches[1]); + $block = "".$this->runSpanGamut($matches[2]).""; + return "\n" . $this->hashBlock($block) . "\n\n"; + } + + /** + * If a header_id_func property is set, we can use it to automatically + * generate an id attribute. + * + * This method returns a string in the form id="foo", or an empty string + * otherwise. + * @param string $headerValue + * @return string + */ + protected function _generateIdFromHeaderValue($headerValue) { + if (!is_callable($this->header_id_func)) { + return ""; + } + + $idValue = call_user_func($this->header_id_func, $headerValue); + if (!$idValue) { + return ""; + } + + return ' id="' . $this->encodeAttribute($idValue) . '"'; + } + + /** + * Form HTML ordered (numbered) and unordered (bulleted) lists. + * @param string $text + * @return string + */ + protected function doLists($text) { + $less_than_tab = $this->tab_width - 1; + + // Re-usable patterns to match list item bullets and number markers: + $marker_ul_re = '[*+-]'; + $marker_ol_re = '\d+[\.]'; + + $markers_relist = array( + $marker_ul_re => $marker_ol_re, + $marker_ol_re => $marker_ul_re, + ); + + foreach ($markers_relist as $marker_re => $other_marker_re) { + // Re-usable pattern to match any entirel ul or ol list: + $whole_list_re = ' + ( # $1 = whole list + ( # $2 + ([ ]{0,'.$less_than_tab.'}) # $3 = number of spaces + ('.$marker_re.') # $4 = first list item marker + [ ]+ + ) + (?s:.+?) + ( # $5 + \z + | + \n{2,} + (?=\S) + (?! # Negative lookahead for another list item marker + [ ]* + '.$marker_re.'[ ]+ + ) + | + (?= # Lookahead for another kind of list + \n + \3 # Must have the same indentation + '.$other_marker_re.'[ ]+ + ) + ) + ) + '; // mx + + // We use a different prefix before nested lists than top-level lists. + //See extended comment in _ProcessListItems(). + + if ($this->list_level) { + $text = preg_replace_callback('{ + ^ + '.$whole_list_re.' + }mx', + array($this, '_doLists_callback'), $text); + } else { + $text = preg_replace_callback('{ + (?:(?<=\n)\n|\A\n?) # Must eat the newline + '.$whole_list_re.' + }mx', + array($this, '_doLists_callback'), $text); + } + } + + return $text; + } + + /** + * List parsing callback + * @param array $matches + * @return string + */ + protected function _doLists_callback($matches) { + // Re-usable patterns to match list item bullets and number markers: + $marker_ul_re = '[*+-]'; + $marker_ol_re = '\d+[\.]'; + $marker_any_re = "(?:$marker_ul_re|$marker_ol_re)"; + $marker_ol_start_re = '[0-9]+'; + + $list = $matches[1]; + $list_type = preg_match("/$marker_ul_re/", $matches[4]) ? "ul" : "ol"; + + $marker_any_re = ( $list_type == "ul" ? $marker_ul_re : $marker_ol_re ); + + $list .= "\n"; + $result = $this->processListItems($list, $marker_any_re); + + $ol_start = 1; + if ($this->enhanced_ordered_list) { + // Get the start number for ordered list. + if ($list_type == 'ol') { + $ol_start_array = array(); + $ol_start_check = preg_match("/$marker_ol_start_re/", $matches[4], $ol_start_array); + if ($ol_start_check){ + $ol_start = $ol_start_array[0]; + } + } + } + + if ($ol_start > 1 && $list_type == 'ol'){ + $result = $this->hashBlock("<$list_type start=\"$ol_start\">\n" . $result . ""); + } else { + $result = $this->hashBlock("<$list_type>\n" . $result . ""); + } + return "\n". $result ."\n\n"; + } + + /** + * Nesting tracker for list levels + */ + protected int $list_level = 0; + + /** + * Process the contents of a single ordered or unordered list, splitting it + * into individual list items. + * @param string $list_str + * @param string $marker_any_re + * @return string + */ + protected function processListItems($list_str, $marker_any_re) { + /** + * The $this->list_level global keeps track of when we're inside a list. + * Each time we enter a list, we increment it; when we leave a list, + * we decrement. If it's zero, we're not in a list anymore. + * + * We do this because when we're not inside a list, we want to treat + * something like this: + * + * I recommend upgrading to version + * 8. Oops, now this line is treated + * as a sub-list. + * + * As a single paragraph, despite the fact that the second line starts + * with a digit-period-space sequence. + * + * Whereas when we're inside a list (or sub-list), that line will be + * treated as the start of a sub-list. What a kludge, huh? This is + * an aspect of Markdown's syntax that's hard to parse perfectly + * without resorting to mind-reading. Perhaps the solution is to + * change the syntax rules such that sub-lists must start with a + * starting cardinal number; e.g. "1." or "a.". + */ + $this->list_level++; + + // Trim trailing blank lines: + $list_str = preg_replace("/\n{2,}\\z/", "\n", $list_str); + + $list_str = preg_replace_callback('{ + (\n)? # leading line = $1 + (^[ ]*) # leading whitespace = $2 + ('.$marker_any_re.' # list marker and space = $3 + (?:[ ]+|(?=\n)) # space only required if item is not empty + ) + ((?s:.*?)) # list item text = $4 + (?:(\n+(?=\n))|\n) # tailing blank line = $5 + (?= \n* (\z | \2 ('.$marker_any_re.') (?:[ ]+|(?=\n)))) + }xm', + array($this, '_processListItems_callback'), $list_str); + + $this->list_level--; + return $list_str; + } + + /** + * List item parsing callback + * @param array $matches + * @return string + */ + protected function _processListItems_callback($matches) { + $item = $matches[4]; + $leading_line =& $matches[1]; + $leading_space =& $matches[2]; + $marker_space = $matches[3]; + $tailing_blank_line =& $matches[5]; + + if ($leading_line || $tailing_blank_line || + preg_match('/\n{2,}/', $item)) + { + // Replace marker with the appropriate whitespace indentation + $item = $leading_space . str_repeat(' ', strlen($marker_space)) . $item; + $item = $this->runBlockGamut($this->outdent($item)."\n"); + } else { + // Recursion for sub-lists: + $item = $this->doLists($this->outdent($item)); + $item = $this->formParagraphs($item, false); + } + + return "
  • " . $item . "
  • \n"; + } + + /** + * Process Markdown `
    ` blocks.
    +	 * @param  string $text
    +	 * @return string
    +	 */
    +	protected function doCodeBlocks($text) {
    +		$text = preg_replace_callback('{
    +				(?:\n\n|\A\n?)
    +				(	            # $1 = the code block -- one or more lines, starting with a space/tab
    +				  (?>
    +					[ ]{'.$this->tab_width.'}  # Lines must start with a tab or a tab-width of spaces
    +					.*\n+
    +				  )+
    +				)
    +				((?=^[ ]{0,'.$this->tab_width.'}\S)|\Z)	# Lookahead for non-space at line-start, or end of doc
    +			}xm',
    +			array($this, '_doCodeBlocks_callback'), $text);
    +
    +		return $text;
    +	}
    +
    +	/**
    +	 * Code block parsing callback
    +	 * @param  array $matches
    +	 * @return string
    +	 */
    +	protected function _doCodeBlocks_callback($matches) {
    +		$codeblock = $matches[1];
    +
    +		$codeblock = $this->outdent($codeblock);
    +		if (is_callable($this->code_block_content_func)) {
    +			$codeblock = call_user_func($this->code_block_content_func, $codeblock, "");
    +		} else {
    +			$codeblock = htmlspecialchars($codeblock, ENT_NOQUOTES);
    +		}
    +
    +		# trim leading newlines and trailing newlines
    +		$codeblock = preg_replace('/\A\n+|\n+\z/', '', $codeblock);
    +
    +		$codeblock = "
    $codeblock\n
    "; + return "\n\n" . $this->hashBlock($codeblock) . "\n\n"; + } + + /** + * Create a code span markup for $code. Called from handleSpanToken. + * @param string $code + * @return string + */ + protected function makeCodeSpan($code) { + if (is_callable($this->code_span_content_func)) { + $code = call_user_func($this->code_span_content_func, $code); + } else { + $code = htmlspecialchars(trim($code), ENT_NOQUOTES); + } + return $this->hashPart("$code"); + } + + /** + * Define the emphasis operators with their regex matches + * @var array + */ + protected array $em_relist = array( + '' => '(?:(? '(? '(? '(?:(? '(? '(? '(?:(? '(? '(?em_relist as $em => $em_re) { + foreach ($this->strong_relist as $strong => $strong_re) { + // Construct list of allowed token expressions. + $token_relist = array(); + if (isset($this->em_strong_relist["$em$strong"])) { + $token_relist[] = $this->em_strong_relist["$em$strong"]; + } + $token_relist[] = $em_re; + $token_relist[] = $strong_re; + + // Construct master expression from list. + $token_re = '{(' . implode('|', $token_relist) . ')}'; + $this->em_strong_prepared_relist["$em$strong"] = $token_re; + } + } + } + + /** + * Convert Markdown italics (emphasis) and bold (strong) to HTML + * @param string $text + * @return string + */ + protected function doItalicsAndBold($text) { + if ($this->in_emphasis_processing) { + return $text; // avoid reentrency + } + $this->in_emphasis_processing = true; + + $token_stack = array(''); + $text_stack = array(''); + $em = ''; + $strong = ''; + $tree_char_em = false; + + while (1) { + // Get prepared regular expression for seraching emphasis tokens + // in current context. + $token_re = $this->em_strong_prepared_relist["$em$strong"]; + + // Each loop iteration search for the next emphasis token. + // Each token is then passed to handleSpanToken. + $parts = preg_split($token_re, $text, 2, PREG_SPLIT_DELIM_CAPTURE); + $text_stack[0] .= $parts[0]; + $token =& $parts[1]; + $text =& $parts[2]; + + if (empty($token)) { + // Reached end of text span: empty stack without emitting. + // any more emphasis. + while ($token_stack[0]) { + $text_stack[1] .= array_shift($token_stack); + $text_stack[0] .= array_shift($text_stack); + } + break; + } + + $token_len = strlen($token); + if ($tree_char_em) { + // Reached closing marker while inside a three-char emphasis. + if ($token_len == 3) { + // Three-char closing marker, close em and strong. + array_shift($token_stack); + $span = array_shift($text_stack); + $span = $this->runSpanGamut($span); + $span = "$span"; + $text_stack[0] .= $this->hashPart($span); + $em = ''; + $strong = ''; + } else { + // Other closing marker: close one em or strong and + // change current token state to match the other + $token_stack[0] = str_repeat($token[0], 3-$token_len); + $tag = $token_len == 2 ? "strong" : "em"; + $span = $text_stack[0]; + $span = $this->runSpanGamut($span); + $span = "<$tag>$span"; + $text_stack[0] = $this->hashPart($span); + $$tag = ''; // $$tag stands for $em or $strong + } + $tree_char_em = false; + } else if ($token_len == 3) { + if ($em) { + // Reached closing marker for both em and strong. + // Closing strong marker: + for ($i = 0; $i < 2; ++$i) { + $shifted_token = array_shift($token_stack); + $tag = strlen($shifted_token) == 2 ? "strong" : "em"; + $span = array_shift($text_stack); + $span = $this->runSpanGamut($span); + $span = "<$tag>$span"; + $text_stack[0] .= $this->hashPart($span); + $$tag = ''; // $$tag stands for $em or $strong + } + } else { + // Reached opening three-char emphasis marker. Push on token + // stack; will be handled by the special condition above. + $em = $token[0]; + $strong = "$em$em"; + array_unshift($token_stack, $token); + array_unshift($text_stack, ''); + $tree_char_em = true; + } + } else if ($token_len == 2) { + if ($strong) { + // Unwind any dangling emphasis marker: + if (strlen($token_stack[0]) == 1) { + $text_stack[1] .= array_shift($token_stack); + $text_stack[0] .= array_shift($text_stack); + $em = ''; + } + // Closing strong marker: + array_shift($token_stack); + $span = array_shift($text_stack); + $span = $this->runSpanGamut($span); + $span = "$span"; + $text_stack[0] .= $this->hashPart($span); + $strong = ''; + } else { + array_unshift($token_stack, $token); + array_unshift($text_stack, ''); + $strong = $token; + } + } else { + // Here $token_len == 1 + if ($em) { + if (strlen($token_stack[0]) == 1) { + // Closing emphasis marker: + array_shift($token_stack); + $span = array_shift($text_stack); + $span = $this->runSpanGamut($span); + $span = "$span"; + $text_stack[0] .= $this->hashPart($span); + $em = ''; + } else { + $text_stack[0] .= $token; + } + } else { + array_unshift($token_stack, $token); + array_unshift($text_stack, ''); + $em = $token; + } + } + } + $this->in_emphasis_processing = false; + return $text_stack[0]; + } + + /** + * Parse Markdown blockquotes to HTML + * @param string $text + * @return string + */ + protected function doBlockQuotes($text) { + $text = preg_replace_callback('/ + ( # Wrap whole match in $1 + (?> + ^[ ]*>[ ]? # ">" at the start of a line + .+\n # rest of the first line + (.+\n)* # subsequent consecutive lines + \n* # blanks + )+ + ) + /xm', + array($this, '_doBlockQuotes_callback'), $text); + + return $text; + } + + /** + * Blockquote parsing callback + * @param array $matches + * @return string + */ + protected function _doBlockQuotes_callback($matches) { + $bq = $matches[1]; + // trim one level of quoting - trim whitespace-only lines + $bq = preg_replace('/^[ ]*>[ ]?|^[ ]+$/m', '', $bq); + $bq = $this->runBlockGamut($bq); // recurse + + $bq = preg_replace('/^/m', " ", $bq); + // These leading spaces cause problem with
     content,
    +		// so we need to fix that:
    +		$bq = preg_replace_callback('{(\s*
    .+?
    )}sx', + array($this, '_doBlockQuotes_callback2'), $bq); + + return "\n" . $this->hashBlock("
    \n$bq\n
    ") . "\n\n"; + } + + /** + * Blockquote parsing callback + * @param array $matches + * @return string + */ + protected function _doBlockQuotes_callback2($matches) { + $pre = $matches[1]; + $pre = preg_replace('/^ /m', '', $pre); + return $pre; + } + + /** + * Parse paragraphs + * + * @param string $text String to process in paragraphs + * @param boolean $wrap_in_p Whether paragraphs should be wrapped in

    tags + * @return string + */ + protected function formParagraphs($text, $wrap_in_p = true) { + // Strip leading and trailing lines: + $text = preg_replace('/\A\n+|\n+\z/', '', $text); + + $grafs = preg_split('/\n{2,}/', $text, -1, PREG_SPLIT_NO_EMPTY); + + // Wrap

    tags and unhashify HTML blocks + foreach ($grafs as $key => $value) { + if (!preg_match('/^B\x1A[0-9]+B$/', $value)) { + // Is a paragraph. + $value = $this->runSpanGamut($value); + if ($wrap_in_p) { + $value = preg_replace('/^([ ]*)/', "

    ", $value); + $value .= "

    "; + } + $grafs[$key] = $this->unhash($value); + } else { + // Is a block. + // Modify elements of @grafs in-place... + $graf = $value; + $block = $this->html_hashes[$graf]; + $graf = $block; +// if (preg_match('{ +// \A +// ( # $1 =
    tag +//
    ]* +// \b +// markdown\s*=\s* ([\'"]) # $2 = attr quote char +// 1 +// \2 +// [^>]* +// > +// ) +// ( # $3 = contents +// .* +// ) +// (
    ) # $4 = closing tag +// \z +// }xs', $block, $matches)) +// { +// list(, $div_open, , $div_content, $div_close) = $matches; +// +// // We can't call Markdown(), because that resets the hash; +// // that initialization code should be pulled into its own sub, though. +// $div_content = $this->hashHTMLBlocks($div_content); +// +// // Run document gamut methods on the content. +// foreach ($this->document_gamut as $method => $priority) { +// $div_content = $this->$method($div_content); +// } +// +// $div_open = preg_replace( +// '{\smarkdown\s*=\s*([\'"]).+?\1}', '', $div_open); +// +// $graf = $div_open . "\n" . $div_content . "\n" . $div_close; +// } + $grafs[$key] = $graf; + } + } + + return implode("\n\n", $grafs); + } + + /** + * Encode text for a double-quoted HTML attribute. This function + * is *not* suitable for attributes enclosed in single quotes. + * @param string $text + * @return string + */ + protected function encodeAttribute($text) { + $text = $this->encodeAmpsAndAngles($text); + $text = str_replace('"', '"', $text); + return $text; + } + + /** + * Encode text for a double-quoted HTML attribute containing a URL, + * applying the URL filter if set. Also generates the textual + * representation for the URL (removing mailto: or tel:) storing it in $text. + * This function is *not* suitable for attributes enclosed in single quotes. + * + * @param string $url + * @param string $text Passed by reference + * @return string URL + */ + protected function encodeURLAttribute($url, &$text = null) { + if (is_callable($this->url_filter_func)) { + $url = call_user_func($this->url_filter_func, $url); + } + + if (preg_match('{^mailto:}i', $url)) { + $url = $this->encodeEntityObfuscatedAttribute($url, $text, 7); + } else if (preg_match('{^tel:}i', $url)) { + $url = $this->encodeAttribute($url); + $text = substr($url, 4); + } else { + $url = $this->encodeAttribute($url); + $text = $url; + } + + return $url; + } + + /** + * Smart processing for ampersands and angle brackets that need to + * be encoded. Valid character entities are left alone unless the + * no-entities mode is set. + * @param string $text + * @return string + */ + protected function encodeAmpsAndAngles($text) { + if ($this->no_entities) { + $text = str_replace('&', '&', $text); + } else { + // Ampersand-encoding based entirely on Nat Irons's Amputator + // MT plugin: + $text = preg_replace('/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/', + '&', $text); + } + // Encode remaining <'s + $text = str_replace('<', '<', $text); + + return $text; + } + + /** + * Parse Markdown automatic links to anchor HTML tags + * @param string $text + * @return string + */ + protected function doAutoLinks($text) { + $text = preg_replace_callback('{<((https?|ftp|dict|tel):[^\'">\s]+)>}i', + array($this, '_doAutoLinks_url_callback'), $text); + + // Email addresses: + $text = preg_replace_callback('{ + < + (?:mailto:)? + ( + (?: + [-!#$%&\'*+/=?^_`.{|}~\w\x80-\xFF]+ + | + ".*?" + ) + \@ + (?: + [-a-z0-9\x80-\xFF]+(\.[-a-z0-9\x80-\xFF]+)*\.[a-z]+ + | + \[[\d.a-fA-F:]+\] # IPv4 & IPv6 + ) + ) + > + }xi', + array($this, '_doAutoLinks_email_callback'), $text); + + return $text; + } + + /** + * Parse URL callback + * @param array $matches + * @return string + */ + protected function _doAutoLinks_url_callback($matches) { + $url = $this->encodeURLAttribute($matches[1], $text); + $link = "$text"; + return $this->hashPart($link); + } + + /** + * Parse email address callback + * @param array $matches + * @return string + */ + protected function _doAutoLinks_email_callback($matches) { + $addr = $matches[1]; + $url = $this->encodeURLAttribute("mailto:$addr", $text); + $link = "$text"; + return $this->hashPart($link); + } + + /** + * Input: some text to obfuscate, e.g. "mailto:foo@example.com" + * + * Output: the same text but with most characters encoded as either a + * decimal or hex entity, in the hopes of foiling most address + * harvesting spam bots. E.g.: + * + * mailto:foo + * @example.co + * m + * + * Note: the additional output $tail is assigned the same value as the + * ouput, minus the number of characters specified by $head_length. + * + * Based by a filter by Matthew Wickline, posted to BBEdit-Talk. + * With some optimizations by Milian Wolff. Forced encoding of HTML + * attribute special characters by Allan Odgaard. + * + * @param string $text + * @param string $tail Passed by reference + * @param integer $head_length + * @return string + */ + protected function encodeEntityObfuscatedAttribute($text, &$tail = null, $head_length = 0) { + if ($text == "") { + return $tail = ""; + } + + $chars = preg_split('/(? $char) { + $ord = ord($char); + // Ignore non-ascii chars. + if ($ord < 128) { + $r = ($seed * (1 + $key)) % 100; // Pseudo-random function. + // roughly 10% raw, 45% hex, 45% dec + // '@' *must* be encoded. I insist. + // '"' and '>' have to be encoded inside the attribute + if ($r > 90 && strpos('@"&>', $char) === false) { + /* do nothing */ + } else if ($r < 45) { + $chars[$key] = '&#x'.dechex($ord).';'; + } else { + $chars[$key] = '&#'.$ord.';'; + } + } + } + + $text = implode('', $chars); + $tail = $head_length ? implode('', array_slice($chars, $head_length)) : $text; + + return $text; + } + + /** + * Take the string $str and parse it into tokens, hashing embeded HTML, + * escaped characters and handling code spans. + * @param string $str + * @return string + */ + protected function parseSpan($str) { + $output = ''; + + $span_re = '{ + ( + \\\\'.$this->escape_chars_re.' + | + (?no_markup ? '' : ' + | + # comment + | + <\?.*?\?> | <%.*?%> # processing instruction + | + <[!$]?[-a-zA-Z0-9:_]+ # regular tags + (?> + \s + (?>[^"\'>]+|"[^"]*"|\'[^\']*\')* + )? + > + | + <[-a-zA-Z0-9:_]+\s*/> # xml-style empty tag + | + # closing tag + ').' + ) + }xs'; + + while (1) { + // Each loop iteration seach for either the next tag, the next + // openning code span marker, or the next escaped character. + // Each token is then passed to handleSpanToken. + $parts = preg_split($span_re, $str, 2, PREG_SPLIT_DELIM_CAPTURE); + + // Create token from text preceding tag. + if ($parts[0] != "") { + $output .= $parts[0]; + } + + // Check if we reach the end. + if (isset($parts[1])) { + $output .= $this->handleSpanToken($parts[1], $parts[2]); + $str = $parts[2]; + } else { + break; + } + } + + return $output; + } + + /** + * Handle $token provided by parseSpan by determining its nature and + * returning the corresponding value that should replace it. + * @param string $token + * @param string $str Passed by reference + * @return string + */ + protected function handleSpanToken($token, &$str) { + switch ($token[0]) { + case "\\": + return $this->hashPart("&#". ord($token[1]). ";"); + case "`": + // Search for end marker in remaining text. + if (preg_match('/^(.*?[^`])'.preg_quote($token).'(?!`)(.*)$/sm', + $str, $matches)) + { + $str = $matches[2]; + $codespan = $this->makeCodeSpan($matches[1]); + return $this->hashPart($codespan); + } + return $token; // Return as text since no ending marker found. + default: + return $this->hashPart($token); + } + } + + /** + * Remove one level of line-leading tabs or spaces + * @param string $text + * @return string + */ + protected function outdent($text) { + return preg_replace('/^(\t|[ ]{1,' . $this->tab_width . '})/m', '', $text); + } + + + /** + * String length function for detab. `_initDetab` will create a function to + * handle UTF-8 if the default function does not exist. + * @var string + */ + protected $utf8_strlen = 'mb_strlen'; + + /** + * Replace tabs with the appropriate amount of spaces. + * + * For each line we separate the line in blocks delemited by tab characters. + * Then we reconstruct every line by adding the appropriate number of space + * between each blocks. + * + * @param string $text + * @return string + */ + protected function detab($text) { + $text = preg_replace_callback('/^.*\t.*$/m', + array($this, '_detab_callback'), $text); + + return $text; + } + + /** + * Replace tabs callback + * @param string $matches + * @return string + */ + protected function _detab_callback($matches) { + $line = $matches[0]; + $strlen = $this->utf8_strlen; // strlen function for UTF-8. + + // Split in blocks. + $blocks = explode("\t", $line); + // Add each blocks to the line. + $line = $blocks[0]; + unset($blocks[0]); // Do not add first block twice. + foreach ($blocks as $block) { + // Calculate amount of space, insert spaces, insert block. + $amount = $this->tab_width - + $strlen($line, 'UTF-8') % $this->tab_width; + $line .= str_repeat(" ", $amount) . $block; + } + return $line; + } + + /** + * Check for the availability of the function in the `utf8_strlen` property + * (initially `mb_strlen`). If the function is not available, create a + * function that will loosely count the number of UTF-8 characters with a + * regular expression. + * @return void + */ + protected function _initDetab() { + + if (function_exists($this->utf8_strlen)) { + return; + } + + $this->utf8_strlen = fn($text) => preg_match_all('/[\x00-\xBF]|[\xC0-\xFF][\x80-\xBF]*/', $text, $m); + } + + /** + * Swap back in all the tags hashed by _HashHTMLBlocks. + * @param string $text + * @return string + */ + protected function unhash($text) { + return preg_replace_callback('/(.)\x1A[0-9]+\1/', + array($this, '_unhash_callback'), $text); + } + + /** + * Unhashing callback + * @param array $matches + * @return string + */ + protected function _unhash_callback($matches) { + return $this->html_hashes[$matches[0]]; + } +} diff --git a/cms/vendor/php-markdown-lib-9.1/Michelf/MarkdownExtra.inc.php b/cms/vendor/php-markdown-lib-9.1/Michelf/MarkdownExtra.inc.php new file mode 100644 index 0000000..d09bd7a --- /dev/null +++ b/cms/vendor/php-markdown-lib-9.1/Michelf/MarkdownExtra.inc.php @@ -0,0 +1,11 @@ + + * @copyright 2004-2019 Michel Fortin + * @copyright (Original Markdown) 2004-2006 John Gruber + */ + +namespace Michelf; + +/** + * Markdown Extra Parser Class + */ +class MarkdownExtra extends \Michelf\Markdown { + /** + * Configuration variables + */ + /** + * Prefix for footnote ids. + */ + public string $fn_id_prefix = ""; + + /** + * Optional title attribute for footnote links. + */ + public string $fn_link_title = ""; + + /** + * Optional class attribute for footnote links and backlinks. + */ + public string $fn_link_class = "footnote-ref"; + public string $fn_backlink_class = "footnote-backref"; + + /** + * Content to be displayed within footnote backlinks. The default is '↩'; + * the U+FE0E on the end is a Unicode variant selector used to prevent iOS + * from displaying the arrow character as an emoji. + * Optionally use '^^' and '%%' to refer to the footnote number and + * reference number respectively. {@see parseFootnotePlaceholders()} + */ + public string $fn_backlink_html = '↩︎'; + + /** + * Optional title and aria-label attributes for footnote backlinks for + * added accessibility (to ensure backlink uniqueness). + * Use '^^' and '%%' to refer to the footnote number and reference number + * respectively. {@see parseFootnotePlaceholders()} + */ + public string $fn_backlink_title = ""; + public string $fn_backlink_label = ""; + + /** + * Class name for table cell alignment (%% replaced left/center/right) + * For instance: 'go-%%' becomes 'go-left' or 'go-right' or 'go-center' + * If empty, the align attribute is used instead of a class name. + */ + public string $table_align_class_tmpl = ''; + + /** + * Optional class prefix for fenced code block. + */ + public string $code_class_prefix = ""; + + /** + * Class attribute for code blocks goes on the `code` tag; + * setting this to true will put attributes on the `pre` tag instead. + */ + public bool $code_attr_on_pre = false; + + /** + * Predefined abbreviations. + */ + public array $predef_abbr = array(); + + /** + * Only convert atx-style headers if there's a space between the header and # + */ + public bool $hashtag_protection = false; + + /** + * Determines whether footnotes should be appended to the end of the document. + * If true, footnote html can be retrieved from $this->footnotes_assembled. + */ + public bool $omit_footnotes = false; + + + /** + * After parsing, the HTML for the list of footnotes appears here. + * This is available only if $omit_footnotes == true. + * + * Note: when placing the content of `footnotes_assembled` on the page, + * consider adding the attribute `role="doc-endnotes"` to the `div` or + * `section` that will enclose the list of footnotes so they are + * reachable to accessibility tools the same way they would be with the + * default HTML output. + */ + public ?string $footnotes_assembled = null; + + /** + * Parser implementation + */ + + /** + * Constructor function. Initialize the parser object. + * @return void + */ + public function __construct() { + // Add extra escapable characters before parent constructor + // initialize the table. + $this->escape_chars .= ':|'; + + // Insert extra document, block, and span transformations. + // Parent constructor will do the sorting. + $this->document_gamut += array( + "doFencedCodeBlocks" => 5, + "stripFootnotes" => 15, + "stripAbbreviations" => 25, + "appendFootnotes" => 50, + ); + $this->block_gamut += array( + "doFencedCodeBlocks" => 5, + "doTables" => 15, + "doDefLists" => 45, + ); + $this->span_gamut += array( + "doFootnotes" => 5, + "doAbbreviations" => 70, + ); + + $this->enhanced_ordered_list = true; + parent::__construct(); + } + + + /** + * Extra variables used during extra transformations. + */ + protected array $footnotes = array(); + protected array $footnotes_ordered = array(); + protected array $footnotes_ref_count = array(); + protected array $footnotes_numbers = array(); + protected array $abbr_desciptions = array(); + protected string $abbr_word_re = ''; + + /** + * Give the current footnote number. + */ + protected int $footnote_counter = 1; + + /** + * Ref attribute for links + */ + protected array $ref_attr = array(); + + /** + * Setting up Extra-specific variables. + */ + protected function setup() { + parent::setup(); + + $this->footnotes = array(); + $this->footnotes_ordered = array(); + $this->footnotes_ref_count = array(); + $this->footnotes_numbers = array(); + $this->abbr_desciptions = array(); + $this->abbr_word_re = ''; + $this->footnote_counter = 1; + $this->footnotes_assembled = null; + + foreach ($this->predef_abbr as $abbr_word => $abbr_desc) { + if ($this->abbr_word_re) + $this->abbr_word_re .= '|'; + $this->abbr_word_re .= preg_quote($abbr_word); + $this->abbr_desciptions[$abbr_word] = trim($abbr_desc); + } + } + + /** + * Clearing Extra-specific variables. + */ + protected function teardown() { + $this->footnotes = array(); + $this->footnotes_ordered = array(); + $this->footnotes_ref_count = array(); + $this->footnotes_numbers = array(); + $this->abbr_desciptions = array(); + $this->abbr_word_re = ''; + + if ( ! $this->omit_footnotes ) + $this->footnotes_assembled = null; + + parent::teardown(); + } + + + /** + * Extra attribute parser + */ + /** + * Expression to use to catch attributes (includes the braces) + */ + protected string $id_class_attr_catch_re = '\{((?>[ ]*[#.a-z][-_:a-zA-Z0-9=]+){1,})[ ]*\}'; + + /** + * Expression to use when parsing in a context when no capture is desired + */ + protected string $id_class_attr_nocatch_re = '\{(?>[ ]*[#.a-z][-_:a-zA-Z0-9=]+){1,}[ ]*\}'; + + /** + * Parse attributes caught by the $this->id_class_attr_catch_re expression + * and return the HTML-formatted list of attributes. + * + * Currently supported attributes are .class and #id. + * + * In addition, this method also supports supplying a default Id value, + * which will be used to populate the id attribute in case it was not + * overridden. + * @param string $tag_name + * @param string $attr + * @param mixed $defaultIdValue + * @param array $classes + * @return string + */ + protected function doExtraAttributes($tag_name, $attr, $defaultIdValue = null, $classes = array()) { + if (empty($attr) && !$defaultIdValue && empty($classes)) { + return ""; + } + + // Split on components + preg_match_all('/[#.a-z][-_:a-zA-Z0-9=]+/', $attr, $matches); + $elements = $matches[0]; + + // Handle classes and IDs (only first ID taken into account) + $attributes = array(); + $id = false; + foreach ($elements as $element) { + if ($element[0] === '.') { + $classes[] = substr($element, 1); + } else if ($element[0] === '#') { + if ($id === false) $id = substr($element, 1); + } else if (strpos($element, '=') > 0) { + $parts = explode('=', $element, 2); + $attributes[] = $parts[0] . '="' . $parts[1] . '"'; + } + } + + if ($id === false || $id === '') { + $id = $defaultIdValue; + } + + // Compose attributes as string + $attr_str = ""; + if (!empty($id)) { + $attr_str .= ' id="'.$this->encodeAttribute($id) .'"'; + } + if (!empty($classes)) { + $attr_str .= ' class="'. implode(" ", $classes) . '"'; + } + if (!$this->no_markup && !empty($attributes)) { + $attr_str .= ' '.implode(" ", $attributes); + } + return $attr_str; + } + + /** + * Strips link definitions from text, stores the URLs and titles in + * hash references. + * @param string $text + * @return string + */ + protected function stripLinkDefinitions($text) { + $less_than_tab = $this->tab_width - 1; + + // Link defs are in the form: ^[id]: url "optional title" + $text = preg_replace_callback('{ + ^[ ]{0,'.$less_than_tab.'}\[(.+)\][ ]?: # id = $1 + [ ]* + \n? # maybe *one* newline + [ ]* + (?: + <(.+?)> # url = $2 + | + (\S+?) # url = $3 + ) + [ ]* + \n? # maybe one newline + [ ]* + (?: + (?<=\s) # lookbehind for whitespace + ["(] + (.*?) # title = $4 + [")] + [ ]* + )? # title is optional + (?:[ ]* '.$this->id_class_attr_catch_re.' )? # $5 = extra id & class attr + (?:\n+|\Z) + }xm', + array($this, '_stripLinkDefinitions_callback'), + $text); + return $text; + } + + /** + * Strip link definition callback + * @param array $matches + * @return string + */ + protected function _stripLinkDefinitions_callback($matches) { + $link_id = strtolower($matches[1]); + $url = $matches[2] == '' ? $matches[3] : $matches[2]; + $this->urls[$link_id] = $url; + $this->titles[$link_id] =& $matches[4]; + $this->ref_attr[$link_id] = $this->doExtraAttributes("", $dummy =& $matches[5]); + return ''; // String that will replace the block + } + + + /** + * HTML block parser + */ + /** + * Tags that are always treated as block tags + */ + protected string $block_tags_re = 'p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|address|form|fieldset|iframe|hr|legend|article|section|nav|aside|hgroup|header|footer|figcaption|figure|details|summary'; + + /** + * Tags treated as block tags only if the opening tag is alone on its line + */ + protected string $context_block_tags_re = 'script|noscript|style|ins|del|iframe|object|source|track|param|math|svg|canvas|audio|video'; + + /** + * Tags where markdown="1" default to span mode: + */ + protected string $contain_span_tags_re = 'p|h[1-6]|li|dd|dt|td|th|legend|address'; + + /** + * Tags which must not have their contents modified, no matter where + * they appear + */ + protected string $clean_tags_re = 'script|style|math|svg'; + + /** + * Tags that do not need to be closed. + */ + protected string $auto_close_tags_re = 'hr|img|param|source|track'; + + /** + * Hashify HTML Blocks and "clean tags". + * + * We only want to do this for block-level HTML tags, such as headers, + * lists, and tables. That's because we still want to wrap

    s around + * "paragraphs" that are wrapped in non-block-level tags, such as anchors, + * phrase emphasis, and spans. The list of tags we're looking for is + * hard-coded. + * + * This works by calling _HashHTMLBlocks_InMarkdown, which then calls + * _HashHTMLBlocks_InHTML when it encounter block tags. When the markdown="1" + * attribute is found within a tag, _HashHTMLBlocks_InHTML calls back + * _HashHTMLBlocks_InMarkdown to handle the Markdown syntax within the tag. + * These two functions are calling each other. It's recursive! + * @param string $text + * @return string + */ + protected function hashHTMLBlocks($text) { + if ($this->no_markup) { + return $text; + } + + // Call the HTML-in-Markdown hasher. + list($text, ) = $this->_hashHTMLBlocks_inMarkdown($text); + + return $text; + } + + /** + * Parse markdown text, calling _HashHTMLBlocks_InHTML for block tags. + * + * * $indent is the number of space to be ignored when checking for code + * blocks. This is important because if we don't take the indent into + * account, something like this (which looks right) won't work as expected: + * + *

    + *
    + * Hello World. <-- Is this a Markdown code block or text? + *
    <-- Is this a Markdown code block or a real tag? + *
    + * + * If you don't like this, just don't indent the tag on which + * you apply the markdown="1" attribute. + * + * * If $enclosing_tag_re is not empty, stops at the first unmatched closing + * tag with that name. Nested tags supported. + * + * * If $span is true, text inside must treated as span. So any double + * newline will be replaced by a single newline so that it does not create + * paragraphs. + * + * Returns an array of that form: ( processed text , remaining text ) + * + * @param string $text + * @param integer $indent + * @param string $enclosing_tag_re + * @param boolean $span + * @return array + */ + protected function _hashHTMLBlocks_inMarkdown($text, $indent = 0, + $enclosing_tag_re = '', $span = false) + { + + if ($text === '') return array('', ''); + + // Regex to check for the presense of newlines around a block tag. + $newline_before_re = '/(?:^\n?|\n\n)*$/'; + $newline_after_re = + '{ + ^ # Start of text following the tag. + (?>[ ]*)? # Optional comment. + [ ]*\n # Must be followed by newline. + }xs'; + + // Regex to match any tag. + $block_tag_re = + '{ + ( # $2: Capture whole tag. + # Tag name. + ' . $this->block_tags_re . ' | + ' . $this->context_block_tags_re . ' | + ' . $this->clean_tags_re . ' | + (?!\s)'.$enclosing_tag_re . ' + ) + (?: + (?=[\s"\'/a-zA-Z0-9]) # Allowed characters after tag name. + (?> + ".*?" | # Double quotes (can contain `>`) + \'.*?\' | # Single quotes (can contain `>`) + .+? # Anything but quotes and `>`. + )*? + )? + > # End of tag. + | + # HTML Comment + | + <\?.*?\?> | <%.*?%> # Processing instruction + | + # CData Block + ' . ( !$span ? ' # If not in span. + | + # Indented code block + (?: ^[ ]*\n | ^ | \n[ ]*\n ) + [ ]{' . ($indent + 4) . '}[^\n]* \n + (?> + (?: [ ]{' . ($indent + 4) . '}[^\n]* | [ ]* ) \n + )* + | + # Fenced code block marker + (?<= ^ | \n ) + [ ]{0,' . ($indent + 3) . '}(?:~{3,}|`{3,}) + [ ]* + (?: \.?[-_:a-zA-Z0-9]+ )? # standalone class name + [ ]* + (?: ' . $this->id_class_attr_nocatch_re . ' )? # extra attributes + [ ]* + (?= \n ) + ' : '' ) . ' # End (if not is span). + | + # Code span marker + # Note, this regex needs to go after backtick fenced + # code blocks but it should also be kept outside of the + # "if not in span" condition adding backticks to the parser + `+ + ) + }xs'; + + + $depth = 0; // Current depth inside the tag tree. + $parsed = ""; // Parsed text that will be returned. + + // Loop through every tag until we find the closing tag of the parent + // or loop until reaching the end of text if no parent tag specified. + do { + // Split the text using the first $tag_match pattern found. + // Text before pattern will be first in the array, text after + // pattern will be at the end, and between will be any catches made + // by the pattern. + $parts = preg_split($block_tag_re, $text, 2, + PREG_SPLIT_DELIM_CAPTURE); + + // If in Markdown span mode, add a empty-string span-level hash + // after each newline to prevent triggering any block element. + if ($span) { + $void = $this->hashPart("", ':'); + $newline = "\n$void"; + $parts[0] = $void . str_replace("\n", $newline, $parts[0]) . $void; + } + + $parsed .= $parts[0]; // Text before current tag. + + // If end of $text has been reached. Stop loop. + if (count($parts) < 3) { + $text = ""; + break; + } + + $tag = $parts[1]; // Tag to handle. + $text = $parts[2]; // Remaining text after current tag. + + // Check for: Fenced code block marker. + // Note: need to recheck the whole tag to disambiguate backtick + // fences from code spans + if (preg_match('{^\n?([ ]{0,' . ($indent + 3) . '})(~{3,}|`{3,})[ ]*(?:\.?[-_:a-zA-Z0-9]+)?[ ]*(?:' . $this->id_class_attr_nocatch_re . ')?[ ]*\n?$}', $tag, $capture)) { + // Fenced code block marker: find matching end marker. + $fence_indent = strlen($capture[1]); // use captured indent in re + $fence_re = $capture[2]; // use captured fence in re + if (preg_match('{^(?>.*\n)*?[ ]{' . ($fence_indent) . '}' . $fence_re . '[ ]*(?:\n|$)}', $text, + $matches)) + { + // End marker found: pass text unchanged until marker. + $parsed .= $tag . $matches[0]; + $text = substr($text, strlen($matches[0])); + } + else { + // No end marker: just skip it. + $parsed .= $tag; + } + } + // Check for: Indented code block. + else if ($tag[0] === "\n" || $tag[0] === " ") { + // Indented code block: pass it unchanged, will be handled + // later. + $parsed .= $tag; + } + // Check for: Code span marker + // Note: need to check this after backtick fenced code blocks + else if ($tag[0] === "`") { + // Find corresponding end marker. + $tag_re = preg_quote($tag); + if (preg_match('{^(?>.+?|\n(?!\n))*?(?block_tags_re . ')\b}', $tag) || + ( preg_match('{^<(?:' . $this->context_block_tags_re . ')\b}', $tag) && + preg_match($newline_before_re, $parsed) && + preg_match($newline_after_re, $text) ) + ) + { + // Need to parse tag and following text using the HTML parser. + list($block_text, $text) = + $this->_hashHTMLBlocks_inHTML($tag . $text, "hashBlock", true); + + // Make sure it stays outside of any paragraph by adding newlines. + $parsed .= "\n\n$block_text\n\n"; + } + // Check for: Clean tag (like script, math) + // HTML Comments, processing instructions. + else if (preg_match('{^<(?:' . $this->clean_tags_re . ')\b}', $tag) || + $tag[1] === '!' || $tag[1] === '?') + { + // Need to parse tag and following text using the HTML parser. + // (don't check for markdown attribute) + list($block_text, $text) = + $this->_hashHTMLBlocks_inHTML($tag . $text, "hashClean", false); + + $parsed .= $block_text; + } + // Check for: Tag with same name as enclosing tag. + else if ($enclosing_tag_re !== '' && + // Same name as enclosing tag. + preg_match('{^= 0); + + return array($parsed, $text); + } + + /** + * Parse HTML, calling _HashHTMLBlocks_InMarkdown for block tags. + * + * * Calls $hash_method to convert any blocks. + * * Stops when the first opening tag closes. + * * $md_attr indicate if the use of the `markdown="1"` attribute is allowed. + * (it is not inside clean tags) + * + * Returns an array of that form: ( processed text , remaining text ) + * @param string $text + * @param string $hash_method + * @param bool $md_attr Handle `markdown="1"` attribute + * @return array + */ + protected function _hashHTMLBlocks_inHTML($text, $hash_method, $md_attr) { + if ($text === '') return array('', ''); + + // Regex to match `markdown` attribute inside of a tag. + $markdown_attr_re = ' + { + \s* # Eat whitespace before the `markdown` attribute + markdown + \s*=\s* + (?> + (["\']) # $1: quote delimiter + (.*?) # $2: attribute value + \1 # matching delimiter + | + ([^\s>]*) # $3: unquoted attribute value + ) + () # $4: make $3 always defined (avoid warnings) + }xs'; + + // Regex to match any tag. + $tag_re = '{ + ( # $2: Capture whole tag. + + ".*?" | # Double quotes (can contain `>`) + \'.*?\' | # Single quotes (can contain `>`) + .+? # Anything but quotes and `>`. + )*? + )? + > # End of tag. + | + # HTML Comment + | + <\?.*?\?> | <%.*?%> # Processing instruction + | + # CData Block + ) + }xs'; + + $original_text = $text; // Save original text in case of faliure. + + $depth = 0; // Current depth inside the tag tree. + $block_text = ""; // Temporary text holder for current text. + $parsed = ""; // Parsed text that will be returned. + $base_tag_name_re = ''; + + // Get the name of the starting tag. + // (This pattern makes $base_tag_name_re safe without quoting.) + if (preg_match('/^<([\w:$]*)\b/', $text, $matches)) + $base_tag_name_re = $matches[1]; + + // Loop through every tag until we find the corresponding closing tag. + do { + // Split the text using the first $tag_match pattern found. + // Text before pattern will be first in the array, text after + // pattern will be at the end, and between will be any catches made + // by the pattern. + $parts = preg_split($tag_re, $text, 2, PREG_SPLIT_DELIM_CAPTURE); + + if (count($parts) < 3) { + // End of $text reached with unbalenced tag(s). + // In that case, we return original text unchanged and pass the + // first character as filtered to prevent an infinite loop in the + // parent function. + return array($original_text[0], substr($original_text, 1)); + } + + $block_text .= $parts[0]; // Text before current tag. + $tag = $parts[1]; // Tag to handle. + $text = $parts[2]; // Remaining text after current tag. + + // Check for: Auto-close tag (like
    ) + // Comments and Processing Instructions. + if (preg_match('{^auto_close_tags_re . ')\b}', $tag) || + $tag[1] === '!' || $tag[1] === '?') + { + // Just add the tag to the block as if it was text. + $block_text .= $tag; + } + else { + // Increase/decrease nested tag count. Only do so if + // the tag's name match base tag's. + if (preg_match('{^contain_span_tags_re . ')\b}', $tag)); + + // Calculate indent before tag. + if (preg_match('/(?:^|\n)( *?)(?! ).*?$/', $block_text, $matches)) { + $strlen = $this->utf8_strlen; + $indent = $strlen($matches[1], 'UTF-8'); + } else { + $indent = 0; + } + + // End preceding block with this tag. + $block_text .= $tag; + $parsed .= $this->$hash_method($block_text); + + // Get enclosing tag name for the ParseMarkdown function. + // (This pattern makes $tag_name_re safe without quoting.) + preg_match('/^<([\w:$]*)\b/', $tag, $matches); + $tag_name_re = $matches[1]; + + // Parse the content using the HTML-in-Markdown parser. + list ($block_text, $text) + = $this->_hashHTMLBlocks_inMarkdown($text, $indent, + $tag_name_re, $span_mode); + + // Outdent markdown text. + if ($indent > 0) { + $block_text = preg_replace("/^[ ]{1,$indent}/m", "", + $block_text); + } + + // Append tag content to parsed text. + if (!$span_mode) { + $parsed .= "\n\n$block_text\n\n"; + } else { + $parsed .= (string) $block_text; + } + + // Start over with a new block. + $block_text = ""; + } + else $block_text .= $tag; + } + + } while ($depth > 0); + + // Hash last block text that wasn't processed inside the loop. + $parsed .= $this->$hash_method($block_text); + + return array($parsed, $text); + } + + /** + * Called whenever a tag must be hashed when a function inserts a "clean" tag + * in $text, it passes through this function and is automaticaly escaped, + * blocking invalid nested overlap. + * @param string $text + * @return string + */ + protected function hashClean($text) { + return $this->hashPart($text, 'C'); + } + + /** + * Turn Markdown link shortcuts into XHTML tags. + * @param string $text + * @return string + */ + protected function doAnchors($text) { + if ($this->in_anchor) { + return $text; + } + $this->in_anchor = true; + + // First, handle reference-style links: [link text] [id] + $text = preg_replace_callback('{ + ( # wrap whole match in $1 + \[ + (' . $this->nested_brackets_re . ') # link text = $2 + \] + + [ ]? # one optional space + (?:\n[ ]*)? # one optional newline followed by spaces + + \[ + (.*?) # id = $3 + \] + ) + }xs', + array($this, '_doAnchors_reference_callback'), $text); + + // Next, inline-style links: [link text](url "optional title") + $text = preg_replace_callback('{ + ( # wrap whole match in $1 + \[ + (' . $this->nested_brackets_re . ') # link text = $2 + \] + \( # literal paren + [ \n]* + (?: + <(.+?)> # href = $3 + | + (' . $this->nested_url_parenthesis_re . ') # href = $4 + ) + [ \n]* + ( # $5 + ([\'"]) # quote char = $6 + (.*?) # Title = $7 + \6 # matching quote + [ \n]* # ignore any spaces/tabs between closing quote and ) + )? # title is optional + \) + (?:[ ]? ' . $this->id_class_attr_catch_re . ' )? # $8 = id/class attributes + ) + }xs', + array($this, '_doAnchors_inline_callback'), $text); + + // Last, handle reference-style shortcuts: [link text] + // These must come last in case you've also got [link text][1] + // or [link text](/foo) + $text = preg_replace_callback('{ + ( # wrap whole match in $1 + \[ + ([^\[\]]+) # link text = $2; can\'t contain [ or ] + \] + ) + }xs', + array($this, '_doAnchors_reference_callback'), $text); + + $this->in_anchor = false; + return $text; + } + + /** + * Callback for reference anchors + * @param array $matches + * @return string + */ + protected function _doAnchors_reference_callback($matches) { + $whole_match = $matches[1]; + $link_text = $matches[2]; + $link_id =& $matches[3]; + + if ($link_id == "") { + // for shortcut links like [this][] or [this]. + $link_id = $link_text; + } + + // lower-case and turn embedded newlines into spaces + $link_id = strtolower($link_id); + $link_id = preg_replace('{[ ]?\n}', ' ', $link_id); + + if (isset($this->urls[$link_id])) { + $url = $this->urls[$link_id]; + $url = $this->encodeURLAttribute($url); + + $result = "titles[$link_id] ) ) { + $title = $this->titles[$link_id]; + $title = $this->encodeAttribute($title); + $result .= " title=\"$title\""; + } + if (isset($this->ref_attr[$link_id])) + $result .= $this->ref_attr[$link_id]; + + $link_text = $this->runSpanGamut($link_text); + $result .= ">$link_text"; + $result = $this->hashPart($result); + } + else { + $result = $whole_match; + } + return $result; + } + + /** + * Callback for inline anchors + * @param array $matches + * @return string + */ + protected function _doAnchors_inline_callback($matches) { + $link_text = $this->runSpanGamut($matches[2]); + $url = $matches[3] === '' ? $matches[4] : $matches[3]; + $title_quote =& $matches[6]; + $title =& $matches[7]; + $attr = $this->doExtraAttributes("a", $dummy =& $matches[8]); + + // if the URL was of the form it got caught by the HTML + // tag parser and hashed. Need to reverse the process before using the URL. + $unhashed = $this->unhash($url); + if ($unhashed !== $url) + $url = preg_replace('/^<(.*)>$/', '\1', $unhashed); + + $url = $this->encodeURLAttribute($url); + + $result = "encodeAttribute($title); + $result .= " title=\"$title\""; + } + $result .= $attr; + + $link_text = $this->runSpanGamut($link_text); + $result .= ">$link_text"; + + return $this->hashPart($result); + } + + /** + * Turn Markdown image shortcuts into tags. + * @param string $text + * @return string + */ + protected function doImages($text) { + // First, handle reference-style labeled images: ![alt text][id] + $text = preg_replace_callback('{ + ( # wrap whole match in $1 + !\[ + (' . $this->nested_brackets_re . ') # alt text = $2 + \] + + [ ]? # one optional space + (?:\n[ ]*)? # one optional newline followed by spaces + + \[ + (.*?) # id = $3 + \] + + ) + }xs', + array($this, '_doImages_reference_callback'), $text); + + // Next, handle inline images: ![alt text](url "optional title") + // Don't forget: encode * and _ + $text = preg_replace_callback('{ + ( # wrap whole match in $1 + !\[ + (' . $this->nested_brackets_re . ') # alt text = $2 + \] + \s? # One optional whitespace character + \( # literal paren + [ \n]* + (?: + <(\S*)> # src url = $3 + | + (' . $this->nested_url_parenthesis_re . ') # src url = $4 + ) + [ \n]* + ( # $5 + ([\'"]) # quote char = $6 + (.*?) # title = $7 + \6 # matching quote + [ \n]* + )? # title is optional + \) + (?:[ ]? ' . $this->id_class_attr_catch_re . ' )? # $8 = id/class attributes + ) + }xs', + array($this, '_doImages_inline_callback'), $text); + + return $text; + } + + /** + * Callback for referenced images + * @param array $matches + * @return string + */ + protected function _doImages_reference_callback($matches) { + $whole_match = $matches[1]; + $alt_text = $matches[2]; + $link_id = strtolower($matches[3]); + + if ($link_id === "") { + $link_id = strtolower($alt_text); // for shortcut links like ![this][]. + } + + $alt_text = $this->encodeAttribute($alt_text); + if (isset($this->urls[$link_id])) { + $url = $this->encodeURLAttribute($this->urls[$link_id]); + $result = "\"$alt_text\"";titles[$link_id])) { + $title = $this->titles[$link_id]; + $title = $this->encodeAttribute($title); + $result .= " title=\"$title\""; + } + if (isset($this->ref_attr[$link_id])) { + $result .= $this->ref_attr[$link_id]; + } + $result .= $this->empty_element_suffix; + $result = $this->hashPart($result); + } + else { + // If there's no such link ID, leave intact: + $result = $whole_match; + } + + return $result; + } + + /** + * Callback for inline images + * @param array $matches + * @return string + */ + protected function _doImages_inline_callback($matches) { + $alt_text = $matches[2]; + $url = $matches[3] === '' ? $matches[4] : $matches[3]; + $title_quote =& $matches[6]; + $title =& $matches[7]; + $attr = $this->doExtraAttributes("img", $dummy =& $matches[8]); + + $alt_text = $this->encodeAttribute($alt_text); + $url = $this->encodeURLAttribute($url); + $result = "\"$alt_text\"";encodeAttribute($title); + $result .= " title=\"$title\""; // $title already quoted + } + $result .= $attr; + $result .= $this->empty_element_suffix; + + return $this->hashPart($result); + } + + /** + * Process markdown headers. Redefined to add ID and class attribute support. + * @param string $text + * @return string + */ + protected function doHeaders($text) { + // Setext-style headers: + // Header 1 {#header1} + // ======== + // + // Header 2 {#header2 .class1 .class2} + // -------- + // + $text = preg_replace_callback( + '{ + (^.+?) # $1: Header text + (?:[ ]+ ' . $this->id_class_attr_catch_re . ' )? # $3 = id/class attributes + [ ]*\n(=+|-+)[ ]*\n+ # $3: Header footer + }mx', + array($this, '_doHeaders_callback_setext'), $text); + + // atx-style headers: + // # Header 1 {#header1} + // ## Header 2 {#header2} + // ## Header 2 with closing hashes ## {#header3.class1.class2} + // ... + // ###### Header 6 {.class2} + // + $text = preg_replace_callback('{ + ^(\#{1,6}) # $1 = string of #\'s + [ ]'.($this->hashtag_protection ? '+' : '*').' + (.+?) # $2 = Header text + [ ]* + \#* # optional closing #\'s (not counted) + (?:[ ]+ ' . $this->id_class_attr_catch_re . ' )? # $3 = id/class attributes + [ ]* + \n+ + }xm', + array($this, '_doHeaders_callback_atx'), $text); + + return $text; + } + + /** + * Callback for setext headers + * @param array $matches + * @return string + */ + protected function _doHeaders_callback_setext($matches) { + if ($matches[3] === '-' && preg_match('{^- }', $matches[1])) { + return $matches[0]; + } + + $level = $matches[3][0] === '=' ? 1 : 2; + + $defaultId = is_callable($this->header_id_func) ? call_user_func($this->header_id_func, $matches[1]) : null; + + $attr = $this->doExtraAttributes("h$level", $dummy =& $matches[2], $defaultId); + $block = "" . $this->runSpanGamut($matches[1]) . ""; + return "\n" . $this->hashBlock($block) . "\n\n"; + } + + /** + * Callback for atx headers + * @param array $matches + * @return string + */ + protected function _doHeaders_callback_atx($matches) { + $level = strlen($matches[1]); + + $defaultId = is_callable($this->header_id_func) ? call_user_func($this->header_id_func, $matches[2]) : null; + $attr = $this->doExtraAttributes("h$level", $dummy =& $matches[3], $defaultId); + $block = "" . $this->runSpanGamut($matches[2]) . ""; + return "\n" . $this->hashBlock($block) . "\n\n"; + } + + /** + * Form HTML tables. + * @param string $text + * @return string + */ + protected function doTables($text) { + $less_than_tab = $this->tab_width - 1; + // Find tables with leading pipe. + // + // | Header 1 | Header 2 + // | -------- | -------- + // | Cell 1 | Cell 2 + // | Cell 3 | Cell 4 + $text = preg_replace_callback(' + { + ^ # Start of a line + [ ]{0,' . $less_than_tab . '} # Allowed whitespace. + [|] # Optional leading pipe (present) + (.+) \n # $1: Header row (at least one pipe) + + [ ]{0,' . $less_than_tab . '} # Allowed whitespace. + [|] ([ ]*[-:]+[-| :]*) \n # $2: Header underline + + ( # $3: Cells + (?> + [ ]* # Allowed whitespace. + [|] .* \n # Row content. + )* + ) + (?=\n|\Z) # Stop at final double newline. + }xm', + array($this, '_doTable_leadingPipe_callback'), $text); + + // Find tables without leading pipe. + // + // Header 1 | Header 2 + // -------- | -------- + // Cell 1 | Cell 2 + // Cell 3 | Cell 4 + $text = preg_replace_callback(' + { + ^ # Start of a line + [ ]{0,' . $less_than_tab . '} # Allowed whitespace. + (\S.*[|].*) \n # $1: Header row (at least one pipe) + + [ ]{0,' . $less_than_tab . '} # Allowed whitespace. + ([-:]+[ ]*[|][-| :]*) \n # $2: Header underline + + ( # $3: Cells + (?> + .* [|] .* \n # Row content + )* + ) + (?=\n|\Z) # Stop at final double newline. + }xm', + array($this, '_DoTable_callback'), $text); + + return $text; + } + + /** + * Callback for removing the leading pipe for each row + * @param array $matches + * @return string + */ + protected function _doTable_leadingPipe_callback($matches) { + $head = $matches[1]; + $underline = $matches[2]; + $content = $matches[3]; + + $content = preg_replace('/^ *[|]/m', '', $content); + + return $this->_doTable_callback(array($matches[0], $head, $underline, $content)); + } + + /** + * Make the align attribute in a table + * @param string $alignname + * @return string + */ + protected function _doTable_makeAlignAttr($alignname) { + if (empty($this->table_align_class_tmpl)) { + return " align=\"$alignname\""; + } + + $classname = str_replace('%%', $alignname, $this->table_align_class_tmpl); + return " class=\"$classname\""; + } + + /** + * Calback for processing tables + * @param array $matches + * @return string + */ + protected function _doTable_callback($matches) { + $head = $matches[1]; + $underline = $matches[2]; + $content = $matches[3]; + + // Remove any tailing pipes for each line. + $head = preg_replace('/[|] *$/m', '', $head); + $underline = preg_replace('/[|] *$/m', '', $underline); + $content = preg_replace('/[|] *$/m', '', $content); + + // Reading alignement from header underline. + $separators = preg_split('/ *[|] */', $underline); + foreach ($separators as $n => $s) { + if (preg_match('/^ *-+: *$/', $s)) + $attr[$n] = $this->_doTable_makeAlignAttr('right'); + else if (preg_match('/^ *:-+: *$/', $s)) + $attr[$n] = $this->_doTable_makeAlignAttr('center'); + else if (preg_match('/^ *:-+ *$/', $s)) + $attr[$n] = $this->_doTable_makeAlignAttr('left'); + else + $attr[$n] = ''; + } + + // Parsing span elements, including code spans, character escapes, + // and inline HTML tags, so that pipes inside those gets ignored. + $head = $this->parseSpan($head); + $headers = preg_split('/ *[|] */', $head); + $col_count = count($headers); + $attr = array_pad($attr, $col_count, ''); + + // Write column headers. + $text = "\n"; + $text .= "\n"; + $text .= "\n"; + foreach ($headers as $n => $header) { + $text .= " " . $this->runSpanGamut(trim($header)) . "\n"; + } + $text .= "\n"; + $text .= "\n"; + + // Split content by row. + $rows = explode("\n", trim($content, "\n")); + + $text .= "\n"; + foreach ($rows as $row) { + // Parsing span elements, including code spans, character escapes, + // and inline HTML tags, so that pipes inside those gets ignored. + $row = $this->parseSpan($row); + + // Split row by cell. + $row_cells = preg_split('/ *[|] */', $row, $col_count); + $row_cells = array_pad($row_cells, $col_count, ''); + + $text .= "\n"; + foreach ($row_cells as $n => $cell) { + $text .= " " . $this->runSpanGamut(trim($cell)) . "\n"; + } + $text .= "\n"; + } + $text .= "\n"; + $text .= "
    "; + + return $this->hashBlock($text) . "\n"; + } + + /** + * Form HTML definition lists. + * @param string $text + * @return string + */ + protected function doDefLists($text) { + $less_than_tab = $this->tab_width - 1; + + // Re-usable pattern to match any entire dl list: + $whole_list_re = '(?> + ( # $1 = whole list + ( # $2 + [ ]{0,' . $less_than_tab . '} + ((?>.*\S.*\n)+) # $3 = defined term + \n? + [ ]{0,' . $less_than_tab . '}:[ ]+ # colon starting definition + ) + (?s:.+?) + ( # $4 + \z + | + \n{2,} + (?=\S) + (?! # Negative lookahead for another term + [ ]{0,' . $less_than_tab . '} + (?: \S.*\n )+? # defined term + \n? + [ ]{0,' . $less_than_tab . '}:[ ]+ # colon starting definition + ) + (?! # Negative lookahead for another definition + [ ]{0,' . $less_than_tab . '}:[ ]+ # colon starting definition + ) + ) + ) + )'; // mx + + $text = preg_replace_callback('{ + (?>\A\n?|(?<=\n\n)) + ' . $whole_list_re . ' + }mx', + array($this, '_doDefLists_callback'), $text); + + return $text; + } + + /** + * Callback for processing definition lists + * @param array $matches + * @return string + */ + protected function _doDefLists_callback($matches) { + // Re-usable patterns to match list item bullets and number markers: + $list = $matches[1]; + + // Turn double returns into triple returns, so that we can make a + // paragraph for the last item in a list, if necessary: + $result = trim($this->processDefListItems($list)); + $result = "
    \n" . $result . "\n
    "; + return $this->hashBlock($result) . "\n\n"; + } + + /** + * Process the contents of a single definition list, splitting it + * into individual term and definition list items. + * @param string $list_str + * @return string + */ + protected function processDefListItems($list_str) { + + $less_than_tab = $this->tab_width - 1; + + // Trim trailing blank lines: + $list_str = preg_replace("/\n{2,}\\z/", "\n", $list_str); + + // Process definition terms. + $list_str = preg_replace_callback('{ + (?>\A\n?|\n\n+) # leading line + ( # definition terms = $1 + [ ]{0,' . $less_than_tab . '} # leading whitespace + (?!\:[ ]|[ ]) # negative lookahead for a definition + # mark (colon) or more whitespace. + (?> \S.* \n)+? # actual term (not whitespace). + ) + (?=\n?[ ]{0,3}:[ ]) # lookahead for following line feed + # with a definition mark. + }xm', + array($this, '_processDefListItems_callback_dt'), $list_str); + + // Process actual definitions. + $list_str = preg_replace_callback('{ + \n(\n+)? # leading line = $1 + ( # marker space = $2 + [ ]{0,' . $less_than_tab . '} # whitespace before colon + \:[ ]+ # definition mark (colon) + ) + ((?s:.+?)) # definition text = $3 + (?= \n+ # stop at next definition mark, + (?: # next term or end of text + [ ]{0,' . $less_than_tab . '} \:[ ] | +
    | \z + ) + ) + }xm', + array($this, '_processDefListItems_callback_dd'), $list_str); + + return $list_str; + } + + /** + * Callback for
    elements in definition lists + * @param array $matches + * @return string + */ + protected function _processDefListItems_callback_dt($matches) { + $terms = explode("\n", trim($matches[1])); + $text = ''; + foreach ($terms as $term) { + $term = $this->runSpanGamut(trim($term)); + $text .= "\n
    " . $term . "
    "; + } + return $text . "\n"; + } + + /** + * Callback for
    elements in definition lists + * @param array $matches + * @return string + */ + protected function _processDefListItems_callback_dd($matches) { + $leading_line = $matches[1]; + $marker_space = $matches[2]; + $def = $matches[3]; + + if ($leading_line || preg_match('/\n{2,}/', $def)) { + // Replace marker with the appropriate whitespace indentation + $def = str_repeat(' ', strlen($marker_space)) . $def; + $def = $this->runBlockGamut($this->outdent($def . "\n\n")); + $def = "\n". $def ."\n"; + } + else { + $def = rtrim($def); + $def = $this->runSpanGamut($this->outdent($def)); + } + + return "\n
    " . $def . "
    \n"; + } + + /** + * Adding the fenced code block syntax to regular Markdown: + * + * ~~~ + * Code block + * ~~~ + * + * @param string $text + * @return string + */ + protected function doFencedCodeBlocks($text) { + + $text = preg_replace_callback('{ + (?:\n|\A) + # 1: Opening marker + ( + (?:~{3,}|`{3,}) # 3 or more tildes/backticks. + ) + [ ]* + (?: + \.?([-_:a-zA-Z0-9]+) # 2: standalone class name + )? + [ ]* + (?: + ' . $this->id_class_attr_catch_re . ' # 3: Extra attributes + )? + [ ]* \n # Whitespace and newline following marker. + + # 4: Content + ( + (?> + (?!\1 [ ]* \n) # Not a closing marker. + .*\n+ + )+ + ) + + # Closing marker. + \1 [ ]* (?= \n ) + }xm', + array($this, '_doFencedCodeBlocks_callback'), $text); + + return $text; + } + + /** + * Callback to process fenced code blocks + * @param array $matches + * @return string + */ + protected function _doFencedCodeBlocks_callback($matches) { + $classname =& $matches[2]; + $attrs =& $matches[3]; + $codeblock = $matches[4]; + + if ($this->code_block_content_func) { + $codeblock = call_user_func($this->code_block_content_func, $codeblock, $classname); + } else { + $codeblock = htmlspecialchars($codeblock, ENT_NOQUOTES); + } + + $codeblock = preg_replace_callback('/^\n+/', + array($this, '_doFencedCodeBlocks_newlines'), $codeblock); + + $classes = array(); + if ($classname !== "") { + if ($classname[0] === '.') { + $classname = substr($classname, 1); + } + $classes[] = $this->code_class_prefix . $classname; + } + $attr_str = $this->doExtraAttributes($this->code_attr_on_pre ? "pre" : "code", $attrs, null, $classes); + $pre_attr_str = $this->code_attr_on_pre ? $attr_str : ''; + $code_attr_str = $this->code_attr_on_pre ? '' : $attr_str; + $codeblock = "$codeblock
    "; + + return "\n\n".$this->hashBlock($codeblock)."\n\n"; + } + + /** + * Replace new lines in fenced code blocks + * @param array $matches + * @return string + */ + protected function _doFencedCodeBlocks_newlines($matches) { + return str_repeat("empty_element_suffix", + strlen($matches[0])); + } + + /** + * Redefining emphasis markers so that emphasis by underscore does not + * work in the middle of a word. + * @var array + */ + protected array $em_relist = array( + '' => '(?:(? '(? '(? '(?:(? '(? '(? '(?:(? '(? '(? tags + * @return string HTML output + */ + protected function formParagraphs($text, $wrap_in_p = true) { + // Strip leading and trailing lines: + $text = preg_replace('/\A\n+|\n+\z/', '', $text); + + $grafs = preg_split('/\n{2,}/', $text, -1, PREG_SPLIT_NO_EMPTY); + + // Wrap

    tags and unhashify HTML blocks + foreach ($grafs as $key => $value) { + $value = trim($this->runSpanGamut($value)); + + // Check if this should be enclosed in a paragraph. + // Clean tag hashes & block tag hashes are left alone. + $is_p = $wrap_in_p && !preg_match('/^B\x1A[0-9]+B|^C\x1A[0-9]+C$/', $value); + + if ($is_p) { + $value = "

    $value

    "; + } + $grafs[$key] = $value; + } + + // Join grafs in one text, then unhash HTML tags. + $text = implode("\n\n", $grafs); + + // Finish by removing any tag hashes still present in $text. + $text = $this->unhash($text); + + return $text; + } + + + /** + * Footnotes - Strips link definitions from text, stores the URLs and + * titles in hash references. + * @param string $text + * @return string + */ + protected function stripFootnotes($text) { + $less_than_tab = $this->tab_width - 1; + + // Link defs are in the form: [^id]: url "optional title" + $text = preg_replace_callback('{ + ^[ ]{0,' . $less_than_tab . '}\[\^(.+?)\][ ]?: # note_id = $1 + [ ]* + \n? # maybe *one* newline + ( # text = $2 (no blank lines allowed) + (?: + .+ # actual text + | + \n # newlines but + (?!\[.+?\][ ]?:\s)# negative lookahead for footnote or link definition marker. + (?!\n+[ ]{0,3}\S)# ensure line is not blank and followed + # by non-indented content + )* + ) + }xm', + array($this, '_stripFootnotes_callback'), + $text); + return $text; + } + + /** + * Callback for stripping footnotes + * @param array $matches + * @return string + */ + protected function _stripFootnotes_callback($matches) { + $note_id = $this->fn_id_prefix . $matches[1]; + $this->footnotes[$note_id] = $this->outdent($matches[2]); + return ''; // String that will replace the block + } + + /** + * Replace footnote references in $text [^id] with a special text-token + * which will be replaced by the actual footnote marker in appendFootnotes. + * @param string $text + * @return string + */ + protected function doFootnotes($text) { + if (!$this->in_anchor) { + $text = preg_replace('{\[\^(.+?)\]}', "F\x1Afn:\\1\x1A:", $text); + } + return $text; + } + + /** + * Append footnote list to text + * @param string $text + * @return string + */ + protected function appendFootnotes($text) { + $text = preg_replace_callback('{F\x1Afn:(.*?)\x1A:}', + array($this, '_appendFootnotes_callback'), $text); + + if ( ! empty( $this->footnotes_ordered ) ) { + $this->_doFootnotes(); + if ( ! $this->omit_footnotes ) { + $text .= "\n\n"; + $text .= "
    \n"; + $text .= "empty_element_suffix . "\n"; + $text .= $this->footnotes_assembled; + $text .= "
    "; + } + } + return $text; + } + + + /** + * Generates the HTML for footnotes. Called by appendFootnotes, even if + * footnotes are not being appended. + * @return void + */ + protected function _doFootnotes() { + $attr = array(); + if ($this->fn_backlink_class !== "") { + $class = $this->fn_backlink_class; + $class = $this->encodeAttribute($class); + $attr['class'] = " class=\"$class\""; + } + $attr['role'] = " role=\"doc-backlink\""; + $num = 0; + + $text = "
      \n\n"; + while (!empty($this->footnotes_ordered)) { + $footnote = reset($this->footnotes_ordered); + $note_id = key($this->footnotes_ordered); + unset($this->footnotes_ordered[$note_id]); + $ref_count = $this->footnotes_ref_count[$note_id]; + unset($this->footnotes_ref_count[$note_id]); + unset($this->footnotes[$note_id]); + + $footnote .= "\n"; // Need to append newline before parsing. + $footnote = $this->runBlockGamut("$footnote\n"); + $footnote = preg_replace_callback('{F\x1Afn:(.*?)\x1A:}', + array($this, '_appendFootnotes_callback'), $footnote); + + $num++; + $note_id = $this->encodeAttribute($note_id); + + // Prepare backlink, multiple backlinks if multiple references + // Do not create empty backlinks if the html is blank + $backlink = ""; + if (!empty($this->fn_backlink_html)) { + for ($ref_num = 1; $ref_num <= $ref_count; ++$ref_num) { + if (!empty($this->fn_backlink_title)) { + $attr['title'] = ' title="' . $this->encodeAttribute($this->fn_backlink_title) . '"'; + } + if (!empty($this->fn_backlink_label)) { + $attr['label'] = ' aria-label="' . $this->encodeAttribute($this->fn_backlink_label) . '"'; + } + $parsed_attr = $this->parseFootnotePlaceholders( + implode('', $attr), + $num, + $ref_num + ); + $backlink_text = $this->parseFootnotePlaceholders( + $this->fn_backlink_html, + $num, + $ref_num + ); + $ref_count_mark = $ref_num > 1 ? $ref_num : ''; + $backlink .= " $backlink_text"; + } + $backlink = trim($backlink); + } + + // Add backlink to last paragraph; create new paragraph if needed. + if (!empty($backlink)) { + if (preg_match('{

      $}', $footnote)) { + $footnote = substr($footnote, 0, -4) . " $backlink

      "; + } else { + $footnote .= "\n\n

      $backlink

      "; + } + } + + $text .= "
    1. \n"; + $text .= $footnote . "\n"; + $text .= "
    2. \n\n"; + } + $text .= "
    \n"; + + $this->footnotes_assembled = $text; + } + + /** + * Callback for appending footnotes + * @param array $matches + * @return string + */ + protected function _appendFootnotes_callback($matches) { + $node_id = $this->fn_id_prefix . $matches[1]; + + // Create footnote marker only if it has a corresponding footnote *and* + // the footnote hasn't been used by another marker. + if (isset($this->footnotes[$node_id])) { + $num =& $this->footnotes_numbers[$node_id]; + if (!isset($num)) { + // Transfer footnote content to the ordered list and give it its + // number + $this->footnotes_ordered[$node_id] = $this->footnotes[$node_id]; + $this->footnotes_ref_count[$node_id] = 1; + $num = $this->footnote_counter++; + $ref_count_mark = ''; + } else { + $ref_count_mark = $this->footnotes_ref_count[$node_id] += 1; + } + + $attr = ""; + if ($this->fn_link_class !== "") { + $class = $this->fn_link_class; + $class = $this->encodeAttribute($class); + $attr .= " class=\"$class\""; + } + if ($this->fn_link_title !== "") { + $title = $this->fn_link_title; + $title = $this->encodeAttribute($title); + $attr .= " title=\"$title\""; + } + $attr .= " role=\"doc-noteref\""; + + $attr = str_replace("%%", $num, $attr); + $node_id = $this->encodeAttribute($node_id); + + return + "". + "$num". + ""; + } + + return "[^" . $matches[1] . "]"; + } + + /** + * Build footnote label by evaluating any placeholders. + * - ^^ footnote number + * - %% footnote reference number (Nth reference to footnote number) + * @param string $label + * @param int $footnote_number + * @param int $reference_number + * @return string + */ + protected function parseFootnotePlaceholders($label, $footnote_number, $reference_number) { + return str_replace( + array('^^', '%%'), + array($footnote_number, $reference_number), + $label + ); + } + + + /** + * Abbreviations - strips abbreviations from text, stores titles in hash + * references. + * @param string $text + * @return string + */ + protected function stripAbbreviations($text) { + $less_than_tab = $this->tab_width - 1; + + // Link defs are in the form: [id]*: url "optional title" + $text = preg_replace_callback('{ + ^[ ]{0,' . $less_than_tab . '}\*\[(.+?)\][ ]?: # abbr_id = $1 + (.*) # text = $2 (no blank lines allowed) + }xm', + array($this, '_stripAbbreviations_callback'), + $text); + return $text; + } + + /** + * Callback for stripping abbreviations + * @param array $matches + * @return string + */ + protected function _stripAbbreviations_callback($matches) { + $abbr_word = $matches[1]; + $abbr_desc = $matches[2]; + if ($this->abbr_word_re) { + $this->abbr_word_re .= '|'; + } + $this->abbr_word_re .= preg_quote($abbr_word); + $this->abbr_desciptions[$abbr_word] = trim($abbr_desc); + return ''; // String that will replace the block + } + + /** + * Find defined abbreviations in text and wrap them in elements. + * @param string $text + * @return string + */ + protected function doAbbreviations($text) { + if ($this->abbr_word_re) { + // cannot use the /x modifier because abbr_word_re may + // contain significant spaces: + $text = preg_replace_callback('{' . + '(?abbr_word_re . ')' . + '(?![\w\x1A])' . + '}', + array($this, '_doAbbreviations_callback'), $text); + } + return $text; + } + + /** + * Callback for processing abbreviations + * @param array $matches + * @return string + */ + protected function _doAbbreviations_callback($matches) { + $abbr = $matches[0]; + if (isset($this->abbr_desciptions[$abbr])) { + $desc = $this->abbr_desciptions[$abbr]; + if (empty($desc)) { + return $this->hashPart("$abbr"); + } + $desc = $this->encodeAttribute($desc); + return $this->hashPart("$abbr"); + } + return $matches[0]; + } +} diff --git a/cms/vendor/php-markdown-lib-9.1/Michelf/MarkdownInterface.inc.php b/cms/vendor/php-markdown-lib-9.1/Michelf/MarkdownInterface.inc.php new file mode 100644 index 0000000..c4e9ac7 --- /dev/null +++ b/cms/vendor/php-markdown-lib-9.1/Michelf/MarkdownInterface.inc.php @@ -0,0 +1,9 @@ + + * @copyright 2004-2021 Michel Fortin + * @copyright (Original Markdown) 2004-2006 John Gruber + */ + +namespace Michelf; + +/** + * Markdown Parser Interface + */ +interface MarkdownInterface { + /** + * Initialize the parser and return the result of its transform method. + * This will work fine for derived classes too. + * + * @api + * + * @param string $text + * @return string + */ + public static function defaultTransform($text); + + /** + * Main function. Performs some preprocessing on the input text + * and pass it through the document gamut. + * + * @api + * + * @param string $text + * @return string + */ + public function transform($text); +} diff --git a/cms/vendor/php-markdown-lib-9.1/Readme.md b/cms/vendor/php-markdown-lib-9.1/Readme.md new file mode 100644 index 0000000..e1eb306 --- /dev/null +++ b/cms/vendor/php-markdown-lib-9.1/Readme.md @@ -0,0 +1,437 @@ +PHP Markdown +============ + +PHP Markdown Lib 1.9.0 - 1 Dec 2019 + +by Michel Fortin + + +based on Markdown by John Gruber + + + +Introduction +------------ + +This is a library package that includes the PHP Markdown parser and its +sibling PHP Markdown Extra with additional features. + +Markdown is a text-to-HTML conversion tool for web writers. Markdown +allows you to write using an easy-to-read, easy-to-write plain text +format, then convert it to structurally valid XHTML (or HTML). + +"Markdown" is actually two things: a plain text markup syntax, and a +software tool, originally written in Perl, that converts the plain text +markup to HTML. PHP Markdown is a port to PHP of the original Markdown +program by John Gruber. + +* [Full documentation of the Markdown syntax]() + — Daring Fireball (John Gruber) +* [Markdown Extra syntax additions]() + — Michel Fortin + + +Requirement +----------- + +This library package requires PHP 5.3 or later. + +Note: The older plugin/library hybrid package for PHP Markdown and +PHP Markdown Extra is no longer maintained but will work with PHP 4.0.5 and +later. + +Before PHP 5.3.7, pcre.backtrack_limit defaults to 100 000, which is too small +in many situations. You might need to set it to higher values. Later PHP +releases defaults to 1 000 000, which is usually fine. + + +Usage +----- + +To use this library with Composer, first install it with: + + $ composer require michelf/php-markdown + +Then include Composer's generated vendor/autoload.php to [enable autoloading]: + + require 'vendor/autoload.php'; + +Without Composer, for autoloading to work, your project needs an autoloader +compatible with PSR-4 or PSR-0. See the included Readme.php file for a minimal +autoloader setup. (If you cannot use autoloading, see below.) + +With class autoloading in place: + + use Michelf\Markdown; + $my_html = Markdown::defaultTransform($my_text); + +Markdown Extra syntax is also available the same way: + + use Michelf\MarkdownExtra; + $my_html = MarkdownExtra::defaultTransform($my_text); + +If you wish to use PHP Markdown with another text filter function +built to parse HTML, you should filter the text *after* the `transform` +function call. This is an example with [PHP SmartyPants]: + + use Michelf\Markdown, Michelf\SmartyPants; + $my_html = Markdown::defaultTransform($my_text); + $my_html = SmartyPants::defaultTransform($my_html); + +All these examples are using the static `defaultTransform` static function +found inside the parser class. If you want to customize the parser +configuration, you can also instantiate it directly and change some +configuration variables: + + use Michelf\MarkdownExtra; + $parser = new MarkdownExtra; + $parser->fn_id_prefix = "post22-"; + $my_html = $parser->transform($my_text); + +To learn more, see the full list of [configuration variables]. + + [enable autoloading]: https://getcomposer.org/doc/01-basic-usage.md#autoloading + [PHP SmartyPants]: https://michelf.ca/projects/php-smartypants/ + [configuration variables]: https://michelf.ca/projects/php-markdown/configuration/ + + +### Usage without an autoloader + +If you cannot use class autoloading, you can still use `include` or `require` +to access the parser. To load the `Michelf\Markdown` parser, do it this way: + + require_once 'Michelf/Markdown.inc.php'; + +Or, if you need the `Michelf\MarkdownExtra` parser: + + require_once 'Michelf/MarkdownExtra.inc.php'; + +While the plain `.php` files depend on autoloading to work correctly, using the +`.inc.php` files instead will eagerly load the dependencies that would be +loaded on demand if you were using autoloading. + + +Public API and Versioning Policy +--------------------------------- + +Version numbers are of the form *major*.*minor*.*patch*. + +The public API of PHP Markdown consist of the two parser classes `Markdown` +and `MarkdownExtra`, their constructors, the `transform` and `defaultTransform` +functions and their configuration variables. The public API is stable for +a given major version number. It might get additions when the minor version +number increments. + +**Protected members are not considered public API.** This is unconventional +and deserves an explanation. Incrementing the major version number every time +the underlying implementation of something changes is going to give +nonessential version numbers for the vast majority of people who just use the +parser. Protected members are meant to create parser subclasses that behave in +different ways. Very few people create parser subclasses. I don't want to +discourage it by making everything private, but at the same time I can't +guarantee any stable hook between versions if you use protected members. + +**Syntax changes** will increment the minor number for new features, and the +patch number for small corrections. A *new feature* is something that needs a +change in the syntax documentation. Note that since PHP Markdown Lib includes +two parsers, a syntax change for either of them will increment the minor +number. Also note that there is nothing perfectly backward-compatible with the +Markdown syntax: all inputs are always valid, so new features always replace +something that was previously legal, although generally nonsensical to do. + + +Bugs +---- + +To file bug reports please send email to: + + +Please include with your report: (1) the example input; (2) the output you +expected; (3) the output PHP Markdown actually produced. + +If you have a problem where Markdown gives you an empty result, first check +that the backtrack limit is not too low by running `php --info | grep pcre`. +See Installation and Requirement above for details. + + +Development and Testing +----------------------- + +Pull requests for fixing bugs are welcome. Proposed new features are +going to be meticulously reviewed -- taking into account backward compatibility, +potential side effects, and future extensibility -- before deciding on +acceptance or rejection. + +If you make a pull request that includes changes to the parser please add +tests for what is being changed to the `test/` directory. This can be as +simple as adding a `.text` (input) file with a corresponding `.xhtml` +(output) file to proper category under `./test/resources/`. + +Traditionally tests were in a separate repository, [MDTest](https://github.com/michelf/mdtest) +but they are now located here, alongside the source code. + + +Donations +--------- + +If you wish to make a donation that will help me devote more time to +PHP Markdown, please visit [michelf.ca/donate]. + + [michelf.ca/donate]: https://michelf.ca/donate/#!Thanks%20for%20PHP%20Markdown + + +Version History +--------------- + +PHP Markdown Lib 1.9.0 (1 Dec 2019) + +* Added `fn_backlink_label` configuration variable to put some text in the + `aria-label` attribute. + (Thanks to Sunny Walker for the implementation.) + +* Occurances of "`^^`" in `fn_backlink_html`, `fn_backlink_class`, + `fn_backlink_title`, and `fn_backlink_label` will be replaced by the + corresponding footnote number in the HTML output. Occurances of "`%%`" will be + replaced by a number for the reference (footnotes can have multiple references). + (Thanks to Sunny Walker for the implementation.) + +* Added configuration variable `omit_footnotes`. When `true` footnotes are not + appended at the end of the generated HTML and the `footnotes_assembled` + variable will contain the HTML for the footnote list, allowing footnotes to be + moved somewhere else on the page. + (Thanks to James K. for the implementation.) + + Note: when placing the content of `footnotes_assembled` on the page, consider + adding the attribute `role="doc-endnotes"` to the `
    ` or `
    ` that will + enclose the list of footnotes so they are reachable to accessibility tools the + same way they would be with the default HTML output. + +* Fixed deprecation warnings from PHP about usage of curly braces to access + characters in text strings. + (Thanks to Remi Collet and Frans-Willem Post.) + + +PHP Markdown Lib 1.8.0 (14 Jan 2018) + +* Autoloading with Composer now uses PSR-4. + +* HTML output for Markdown Extra footnotes now include `role` attributes + with values from [WAI-ARIA](https://www.w3.org/TR/dpub-aria/) to + make them more accessible. + (Thanks to Tobias Bengfort) + +* In Markdown Extra, added the `hashtag_protection` configuration variable. + When set to `true` it prevents ATX-style headers with no space after the initial + hash from being interpreted as headers. This way your precious hashtags + are preserved. + (Thanks to Jaussoin Timothée for the implementation.) + + +PHP Markdown Lib 1.7.0 (29 Oct 2016) + +* Added a `hard_wrap` configuration variable to make all newline characters + in the text become `
    ` tags in the HTML output. By default, according + to the standard Markdown syntax these newlines are ignored unless they a + preceded by two spaces. Thanks to Jonathan Cohlmeyer for the implementation. + +* Improved the parsing of list items to fix problematic cases that came to + light with the addition of `hard_wrap`. This should have no effect on the + output except span-level list items that ended with two spaces (and thus + ended with a line break). + +* Added a `code_span_content_func` configuration variable which takes a + function that will convert the content of the code span to HTML. This can + be useful to implement syntax highlighting. Although contrary to its + code block equivalent, there is no syntax for specifying a language. + Credits to styxit for the implementation. + +* Fixed a Markdown Extra issue where two-space-at-end-of-line hard breaks + wouldn't work inside of HTML block elements such as `

    ` + where the element expects only span-level content. + +* In the parser code, switched to PHPDoc comment format. Thanks to + Robbie Averill for the help. + + +PHP Markdown Lib 1.6.0 (23 Dec 2015) + +Note: this version was incorrectly released as 1.5.1 on Dec 22, a number +that contradicted the versioning policy. + +* For fenced code blocks in Markdown Extra, can now set a class name for the + code block's language before the special attribute block. Previously, this + class name was only allowed in the absence of the special attribute block. + +* Added a `code_block_content_func` configuration variable which takes a + function that will convert the content of the code block to HTML. This is + most useful for syntax highlighting. For fenced code blocks in Markdown + Extra, the function has access to the language class name (the one outside + of the special attribute block). Credits to Mario Konrad for providing the + implementation. + +* The curled arrow character for the backlink in footnotes is now followed + by a Unicode variant selector to prevent it from being displayed in emoji + form on iOS. + + Note that in older browsers the variant selector is often interpreted as a + separate character, making it visible after the arrow. So there is now a + also a `fn_backlink_html` configuration variable that can be used to set + the link text to something else. Credits to Dana for providing the + implementation. + +* Fixed an issue in MarkdownExtra where long header lines followed by a + special attribute block would hit the backtrack limit an cause an empty + string to be returned. + + +PHP Markdown Lib 1.5.0 (1 Mar 2015) + +* Added the ability start ordered lists with a number different from 1 and + and have that reflected in the HTML output. This can be enabled with + the `enhanced_ordered_lists` configuration variable for the Markdown + parser; it is enabled by default for Markdown Extra. + Credits to Matt Gorle for providing the implementation. + +* Added the ability to insert custom HTML attributes with simple values + everywhere an extra attribute block is allowed (links, images, headers). + The value must be unquoted, cannot contains spaces and is limited to + alphanumeric ASCII characters. + Credits to Peter Droogmans for providing the implementation. + +* Added a `header_id_func` configuration variable which takes a function + that can generate an `id` attribute value from the header text. + Credits to Evert Pot for providing the implementation. + +* Added a `url_filter_func` configuration variable which takes a function + that can rewrite any link or image URL to something different. + + +PHP Markdown Lib 1.4.1 (4 May 2014) + +* The HTML block parser will now treat `

    ` as a block-level element + (as it should) and no longer wrap it in `

    ` or parse it's content with + the as Markdown syntax (although with Extra you can use `markdown="1"` + if you wish to use the Markdown syntax inside it). + +* The content of `