From eba462dc38ed357026a12e1d249f85d75b09cfda Mon Sep 17 00:00:00 2001 From: Ashish Kulkarni Date: Thu, 15 May 2014 14:41:22 +0530 Subject: [PATCH 1/5] various fixes in server-side Markdown.OnQualifyUrl The logic that was used was different from the JS version; the JS version was more correct as just specifying UrlRootLocation would give proper results but would fail in the server-side version. In addition, a bug was fixed where the return value of QualifyUrl was being ignored. --- MarkdownDeep/MardownDeep.cs | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/MarkdownDeep/MardownDeep.cs b/MarkdownDeep/MardownDeep.cs index 0acfb33..45301d3 100644 --- a/MarkdownDeep/MardownDeep.cs +++ b/MarkdownDeep/MardownDeep.cs @@ -336,17 +336,13 @@ public virtual string OnQualifyUrl(string url) { var q = QualifyUrl(url); if (q != null) - return url; + return q; } - // Quit if we don't have a base location - if (String.IsNullOrEmpty(UrlBaseLocation)) + // Is the url a fragment? + if (url.StartsWith("#")) return url; - // Is the url a fragment? - if (url.StartsWith("#")) - return url; - // Is the url already fully qualified? if (Utils.IsUrlFullyQualified(url)) return url; @@ -358,6 +354,10 @@ public virtual string OnQualifyUrl(string url) return UrlRootLocation + url; } + // Quit if we don't have a base location + if (String.IsNullOrEmpty(UrlBaseLocation)) + return url; + // Need to find domain root int pos = UrlBaseLocation.IndexOf("://"); if (pos == -1) @@ -376,6 +376,10 @@ public virtual string OnQualifyUrl(string url) } else { + // Quit if we don't have a base location + if (String.IsNullOrEmpty(UrlBaseLocation)) + return url; + if (!UrlBaseLocation.EndsWith("/")) return UrlBaseLocation + "/" + url; else From a95a90cb3420e0900c5e33ec197558ce6de801c3 Mon Sep 17 00:00:00 2001 From: Frans Bouma Date: Mon, 15 Feb 2016 18:01:45 +0100 Subject: [PATCH 2/5] Changes Clean up: removed backup Moved everything to .NET 4.5 Added GitHub style ``` codeblocks, using the 'GitHubMode' option. Any identifier specified is used as language specification in the code block in the html Added test for GitHub mode Removed js project's post build event as it failed anyway. --- .gitignore | 193 +- Backup/MarkdownDeep.sln | 96 - Backup/MarkdownDeep/Abbreviation.cs | 29 - Backup/MarkdownDeep/Block.cs | 464 - Backup/MarkdownDeep/BlockProcessor.cs | 1508 --- Backup/MarkdownDeep/FootnoteReference.cs | 29 - Backup/MarkdownDeep/HtmlTag.cs | 343 - Backup/MarkdownDeep/LinkDefinition.cs | 341 - Backup/MarkdownDeep/LinkInfo.cs | 31 - Backup/MarkdownDeep/MardownDeep.cs | 875 -- Backup/MarkdownDeep/MarkdownDeep.csproj | 74 - .../MarkdownDeep/Properties/AssemblyInfo.cs | 38 - Backup/MarkdownDeep/SpanFormatter.cs | 1168 -- Backup/MarkdownDeep/StringScanner.cs | 538 - Backup/MarkdownDeep/TableSpec.cs | 216 - Backup/MarkdownDeep/Token.cs | 90 - Backup/MarkdownDeep/Utils.cs | 492 - .../MarkdownDeepBenchmark.csproj | 77 - Backup/MarkdownDeepBenchmark/Program.cs | 100 - .../Properties/AssemblyInfo.cs | 36 - .../benchmark/long_plain_text.text | 10920 --------------- .../benchmark/markdown-example-long-1.text | 531 - .../benchmark/markdown-example-long-2.text | 576 - .../benchmark/markdown-example-medium-1.text | 15 - .../benchmark/markdown-example-medium-2.text | 23 - .../benchmark/markdown-example-short-1.text | 36 - .../benchmark/markdown-example-short-2.text | 3 - .../benchmark/markdown-readme.32.text | 10943 ---------------- .../benchmark/markdown-readme.8.text | 2735 ---- .../benchmark/markdown-readme.text | 341 - Backup/MarkdownDeepGui/Form1.Designer.cs | 175 - Backup/MarkdownDeepGui/Form1.cs | 49 - Backup/MarkdownDeepGui/Form1.resx | 120 - Backup/MarkdownDeepGui/MarkdownDeepGui.csproj | 95 - Backup/MarkdownDeepGui/Program.cs | 21 - .../Properties/AssemblyInfo.cs | 36 - .../Properties/Resources.Designer.cs | 71 - .../MarkdownDeepGui/Properties/Resources.resx | 117 - .../Properties/Settings.Designer.cs | 30 - .../Properties/Settings.settings | 7 - Backup/MarkdownDeepJS/MarkdownDeep.js | 4814 ------- Backup/MarkdownDeepJS/MarkdownDeep.min.js | 289 - Backup/MarkdownDeepJS/MarkdownDeepEditor.js | 1424 -- .../MarkdownDeepJS/MarkdownDeepEditor.min.js | 96 - Backup/MarkdownDeepJS/MarkdownDeepEditorUI.js | 352 - .../MarkdownDeepEditorUI.min.js | 49 - Backup/MarkdownDeepJS/MarkdownDeepJS.csproj | 121 - Backup/MarkdownDeepJS/MarkdownDeepLib.js | 15 - Backup/MarkdownDeepJS/MarkdownDeepLib.min.js | 432 - .../MarkdownDeepJS/Properties/AssemblyInfo.cs | 35 - Backup/MarkdownDeepJS/Web.config | 125 - Backup/MarkdownDeepJS/dingus.css | 33 - Backup/MarkdownDeepJS/dingus.html | 43 - Backup/MarkdownDeepJS/dingus_min.html | 38 - Backup/MarkdownDeepJS/jquery-1.4.2.js | 6240 --------- Backup/MarkdownDeepJS/jquery-1.4.2.min.js | 24 - Backup/MarkdownDeepJS/mdd_ajax_loader.gif | Bin 2608 -> 0 bytes Backup/MarkdownDeepJS/mdd_gripper.png | Bin 150 -> 0 bytes Backup/MarkdownDeepJS/mdd_help.htm | 166 - .../MarkdownDeepJS/mdd_modal_background.png | Bin 173 -> 0 bytes Backup/MarkdownDeepJS/mdd_styles.css | 202 - Backup/MarkdownDeepJS/mdd_toolbar.png | Bin 7051 -> 0 bytes Backup/MarkdownDeepJS/mdd_toolbar.xcf | Bin 34469 -> 0 bytes Backup/MarkdownDeepJS/post_build.bat | 36 - Backup/MarkdownDeepJS/readme.txt | 12 - Backup/MarkdownDeepTests/AutoHeaderIDTests.cs | 73 - Backup/MarkdownDeepTests/AutoLinkTests.cs | 44 - Backup/MarkdownDeepTests/BlockLevelTests.cs | 32 - .../MarkdownDeepTests/BlockProcessorTests.cs | 163 - Backup/MarkdownDeepTests/CodeSpanTests.cs | 59 - Backup/MarkdownDeepTests/EmphasisTests.cs | 224 - .../MarkdownDeepTests/EscapeCharacterTests.cs | 63 - Backup/MarkdownDeepTests/ExtraMode.cs | 33 - Backup/MarkdownDeepTests/HtmlTagTests.cs | 126 - .../JSTestResources/JSHost.html | 46 - .../JSTestResources/MarkdownDeep.js | 4814 ------- .../JSTestResources/MarkdownDeep.min.js | 289 - Backup/MarkdownDeepTests/JavascriptTests.cs | 25 - Backup/MarkdownDeepTests/LinkAndImgTests.cs | 155 - .../MarkdownDeepTests/LinkDefinitionTests.cs | 108 - .../MarkdownDeepTests.csproj | 444 - .../MarkdownDeepTests.dll.config | 13 - Backup/MarkdownDeepTests/MoreTestFiles.cs | 91 - .../Properties/AssemblyInfo.cs | 36 - Backup/MarkdownDeepTests/SpanLevelTests.cs | 33 - .../SpecialCharacterTests.cs | 81 - .../MarkdownDeepTests/StringScannerTests.cs | 43 - Backup/MarkdownDeepTests/TableSpecTests.cs | 85 - Backup/MarkdownDeepTests/Utils.cs | 215 - Backup/MarkdownDeepTests/XssAttackTests.cs | 136 - .../testfiles/blocktests/AtxHeadings.html | 38 - .../testfiles/blocktests/AtxHeadings.txt | 39 - .../testfiles/blocktests/CodeBlocks.html | 12 - .../testfiles/blocktests/CodeBlocks.txt | 14 - .../blocktests/ComplexListItems.html | 27 - .../testfiles/blocktests/ComplexListItems.txt | 25 - .../blocktests/HardWrappedListItems.html | 19 - .../blocktests/HardWrappedListItems.txt | 15 - .../blocktests/HardWrappedParagraph.html | 4 - .../blocktests/HardWrappedParagraph.txt | 3 - .../HardWrappedParagraphInListItem.html | 10 - .../HardWrappedParagraphInListItem.txt | 8 - .../HardWrappedParagraphWithListLikeLine.html | 3 - .../HardWrappedParagraphWithListLikeLine.txt | 3 - .../testfiles/blocktests/HtmlBlock.html | 18 - .../testfiles/blocktests/HtmlBlock.txt | 17 - .../testfiles/blocktests/HtmlComments.html | 10 - .../testfiles/blocktests/HtmlComments.txt | 9 - .../testfiles/blocktests/InsTypes.html | 8 - .../testfiles/blocktests/InsTypes.txt | 7 - .../blocktests/MultipleParagraphs.html | 2 - .../blocktests/MultipleParagraphs.txt | 3 - .../testfiles/blocktests/NestedListItems.html | 6 - .../testfiles/blocktests/NestedListItems.txt | 4 - .../testfiles/blocktests/ParagraphBreaks.html | 10 - .../testfiles/blocktests/ParagraphBreaks.txt | 8 - .../testfiles/blocktests/QuoteBlocks.html | 34 - .../testfiles/blocktests/QuoteBlocks.txt | 36 - .../blocktests/QuoteBlocksNested.html | 16 - .../blocktests/QuoteBlocksNested.txt | 10 - .../testfiles/blocktests/SetExtHeadings.html | 5 - .../testfiles/blocktests/SetExtHeadings.txt | 1 - .../blocktests/SimpleOrderedList.html | 6 - .../blocktests/SimpleOrderedList.txt | 3 - .../testfiles/blocktests/SimpleParagraph.html | 1 - .../testfiles/blocktests/SimpleParagraph.txt | 1 - .../blocktests/SimpleUnorderedList.html | 5 - .../blocktests/SimpleUnorderedList.txt | 3 - .../extramode/Abbreviations(ExtraMode).html | 7 - .../extramode/Abbreviations(ExtraMode).txt | 17 - .../BackslashEscapes(ExtraMode).html | 22 - .../extramode/BackslashEscapes(ExtraMode).txt | 22 - .../extramode/DefinitionLists(ExtraMode).html | 57 - .../extramode/DefinitionLists(ExtraMode).txt | 54 - .../extramode/Emphasis(ExtraMode).html | 10 - .../extramode/Emphasis(ExtraMode).txt | 14 - .../FencedCodeBlocks(ExtraMode).html | 26 - .../extramode/FencedCodeBlocks(ExtraMode).txt | 28 - .../extramode/Footnotes(ExtraMode).html | 30 - .../extramode/Footnotes(ExtraMode).txt | 27 - .../HeaderIDs(ExtraMode)(AutoHeadingIDs).html | 24 - .../HeaderIDs(ExtraMode)(AutoHeadingIDs).txt | 24 - .../extramode/HeaderIDs(ExtraMode).html | 13 - .../extramode/HeaderIDs(ExtraMode).txt | 14 - .../extramode/MarkdownInHtml(ExtraMode).html | 19 - .../extramode/MarkdownInHtml(ExtraMode).txt | 19 - ...DeepNested(ExtraMode)(MarkdownInHtml).html | 16 - ...-DeepNested(ExtraMode)(MarkdownInHtml).txt | 16 - .../MarkdownInHtml-DeepNested(ExtraMode).html | 16 - .../MarkdownInHtml-DeepNested(ExtraMode).txt | 16 - .../MarkdownInHtml-Nested(ExtraMode).html | 16 - .../MarkdownInHtml-Nested(ExtraMode).txt | 17 - .../extramode/TableAlignment(ExtraMode).html | 22 - .../extramode/TableAlignment(ExtraMode).txt | 7 - .../extramode/TableFormatting(ExtraMode).html | 24 - .../extramode/TableFormatting(ExtraMode).txt | 9 - .../extramode/Tables(ExtraMode).html | 26 - .../testfiles/extramode/Tables(ExtraMode).txt | 9 - .../testfiles/mdtest01/code-inside-list.html | 18 - .../testfiles/mdtest01/code-inside-list.text | 15 - .../testfiles/mdtest01/line-endings-cr.html | 40 - .../testfiles/mdtest01/line-endings-cr.text | 1 - .../testfiles/mdtest01/line-endings-crlf.html | 40 - .../testfiles/mdtest01/line-endings-crlf.text | 36 - .../testfiles/mdtest01/line-endings-lf.html | 40 - .../testfiles/mdtest01/line-endings-lf.text | 36 - .../testfiles/mdtest01/markdown-readme.html | 317 - .../testfiles/mdtest01/markdown-readme.text | 341 - .../mdtest11/Amps_and_angle_encoding.html | 17 - .../mdtest11/Amps_and_angle_encoding.text | 21 - .../testfiles/mdtest11/Auto_links.html | 18 - .../testfiles/mdtest11/Auto_links.text | 13 - .../testfiles/mdtest11/Backslash_escapes.html | 118 - .../testfiles/mdtest11/Backslash_escapes.text | 120 - .../Blockquotes_with_code_blocks.html | 15 - .../Blockquotes_with_code_blocks.text | 11 - .../testfiles/mdtest11/Code_Blocks.html | 18 - .../testfiles/mdtest11/Code_Blocks.text | 14 - .../testfiles/mdtest11/Code_Spans.html | 5 - .../testfiles/mdtest11/Code_Spans.text | 5 - ...apped_paragraphs_with_list_like_lines.html | 8 - ...apped_paragraphs_with_list_like_lines.text | 8 - .../testfiles/mdtest11/Horizontal_rules.html | 71 - .../testfiles/mdtest11/Horizontal_rules.text | 67 - .../testfiles/mdtest11/Images.html | 21 - .../testfiles/mdtest11/Images.text | 26 - .../mdtest11/Inline_HTML_Advanced.html | 30 - .../mdtest11/Inline_HTML_Advanced.text | 30 - .../mdtest11/Inline_HTML_Simple.html | 72 - .../mdtest11/Inline_HTML_Simple.text | 69 - .../mdtest11/Inline_HTML_comments.html | 13 - .../mdtest11/Inline_HTML_comments.text | 13 - .../mdtest11/Links_inline_style.html | 23 - .../mdtest11/Links_inline_style.text | 24 - .../mdtest11/Links_reference_style.html | 52 - .../mdtest11/Links_reference_style.text | 71 - .../mdtest11/Links_shortcut_references.html | 9 - .../mdtest11/Links_shortcut_references.text | 20 - .../mdtest11/Literal_quotes_in_titles.html | 3 - .../mdtest11/Literal_quotes_in_titles.text | 7 - .../Markdown_Documentation_Basics.html | 314 - .../Markdown_Documentation_Basics.text | 306 - .../Markdown_Documentation_Syntax.html | 942 -- .../Markdown_Documentation_Syntax.text | 888 -- .../mdtest11/Nested_blockquotes.html | 9 - .../mdtest11/Nested_blockquotes.text | 5 - .../mdtest11/Ordered_and_unordered_lists.html | 148 - .../mdtest11/Ordered_and_unordered_lists.text | 131 - .../mdtest11/Strong_and_em_together.html | 7 - .../mdtest11/Strong_and_em_together.text | 7 - .../testfiles/mdtest11/Tabs.html | 25 - .../testfiles/mdtest11/Tabs.text | 21 - .../testfiles/mdtest11/Tidyness.html | 8 - .../testfiles/mdtest11/Tidyness.text | 5 - .../pandoc/failure-to-escape-less-than.html | 1 - .../pandoc/failure-to-escape-less-than.text | 1 - .../pandoc/indented-code-in-list-item.html | 23 - .../pandoc/indented-code-in-list-item.text | 15 - .../testfiles/pandoc/nested-divs.html | 5 - .../testfiles/pandoc/nested-divs.text | 5 - .../testfiles/pandoc/nested-emphasis.html | 1 - .../testfiles/pandoc/nested-emphasis.text | 1 - .../unordered-list-and-horizontal-rules.html | 7 - .../unordered-list-and-horizontal-rules.text | 5 - ...ordered-list-followed-by-ordered-list.html | 9 - ...ordered-list-followed-by-ordered-list.text | 7 - .../pandoc/unpredictable-sublists.html | 20 - .../pandoc/unpredictable-sublists.text | 15 - .../phpmarkdown/Backslash escapes.html | 1 - .../phpmarkdown/Backslash escapes.text | 1 - .../testfiles/phpmarkdown/Code Spans.html | 6 - .../testfiles/phpmarkdown/Code Spans.text | 6 - .../Code block in a list item.html | 10 - .../Code block in a list item.text | 8 - .../phpmarkdown/Email auto links.html | 3 - .../phpmarkdown/Email auto links.text | 3 - .../testfiles/phpmarkdown/Emphasis.html | 72 - .../testfiles/phpmarkdown/Emphasis.text | 69 - .../testfiles/phpmarkdown/Headers.html | 39 - .../testfiles/phpmarkdown/Headers.text | 9 - .../phpmarkdown/Horizontal Rules.html | 30 - .../phpmarkdown/Horizontal Rules.text | 29 - .../phpmarkdown/Inline HTML (Simple).html | 15 - .../phpmarkdown/Inline HTML (Simple).text | 15 - .../phpmarkdown/Inline HTML (Span).html | 4 - .../phpmarkdown/Inline HTML (Span).text | 4 - .../phpmarkdown/Inline HTML comments.html | 9 - .../phpmarkdown/Inline HTML comments.text | 9 - .../testfiles/phpmarkdown/Ins & del.html | 17 - .../testfiles/phpmarkdown/Ins & del.text | 17 - .../phpmarkdown/Links, inline style.html | 1 - .../phpmarkdown/Links, inline style.text | 1 - .../testfiles/phpmarkdown/MD5 Hashes.html | 11 - .../testfiles/phpmarkdown/MD5 Hashes.text | 11 - .../testfiles/phpmarkdown/Nesting.html | 11 - .../testfiles/phpmarkdown/Nesting.text | 11 - .../phpmarkdown/PHP-Specific Bugs.html | 17 - .../phpmarkdown/PHP-Specific Bugs.text | 22 - .../testfiles/phpmarkdown/Parens in URL.html | 11 - .../testfiles/phpmarkdown/Parens in URL.text | 14 - .../testfiles/phpmarkdown/Tight blocks.html | 21 - .../testfiles/phpmarkdown/Tight blocks.text | 1 - .../testfiles/safemode/Basic(SafeMode).html | 16 - .../testfiles/safemode/Basic(SafeMode).txt | 23 - .../testfiles/spantests/BackslashEscapes.html | 61 - .../testfiles/spantests/BackslashEscapes.txt | 73 - .../testfiles/spantests/Emphasis.html | 19 - .../testfiles/spantests/Emphasis.txt | 16 - .../testfiles/spantests/EscapesInUrls.html | 2 - .../testfiles/spantests/EscapesInUrls.txt | 1 - .../ExplicitReferenceLinkWithTitle.html | 4 - .../ExplicitReferenceLinkWithTitle.txt | 6 - .../ExplicitReferenceLinkWithoutTitle.html | 1 - .../ExplicitReferenceLinkWithoutTitle.txt | 3 - .../spantests/FormattingInLinkText.html | 4 - .../spantests/FormattingInLinkText.txt | 3 - .../testfiles/spantests/HtmlEncodeLinks.html | 2 - .../testfiles/spantests/HtmlEncodeLinks.txt | 6 - .../ImplicitReferenceLinkWithTitle.html | 1 - .../ImplicitReferenceLinkWithTitle.txt | 3 - .../ImplicitReferenceLinkWithoutTitle.html | 1 - .../ImplicitReferenceLinkWithoutTitle.txt | 3 - .../spantests/InlineLinkWithTitle.html | 1 - .../spantests/InlineLinkWithTitle.txt | 1 - .../LinkTitlesWithEmbeddedQuotes.html | 1 - .../LinkTitlesWithEmbeddedQuotes.txt | 1 - .../ReferenceLinkWithIDOnNextLine.html | 2 - .../ReferenceLinkWithIDOnNextLine.txt | 4 - .../testfiles/xsstests/non_attacks.txt | Bin 1286 -> 0 bytes .../testfiles/xsstests/xss_attacks.txt | Bin 36740 -> 0 bytes Backup/MarkdownDevBed/MarkdownDevBed.csproj | 68 - Backup/MarkdownDevBed/Program.cs | 78 - .../MarkdownDevBed/Properties/AssemblyInfo.cs | 36 - Backup/MarkdownDevBed/input.txt | 2 - MarkdownDeep.sln | 18 +- MarkdownDeep/Block.cs | 32 +- MarkdownDeep/BlockProcessor.cs | 20 +- MarkdownDeep/MardownDeep.cs | 12 +- MarkdownDeep/MarkdownDeep.csproj | 5 +- .../MarkdownDeepBenchmark.csproj | 6 +- MarkdownDeepBenchmark/app.config | 3 + MarkdownDeepGui/MarkdownDeepGui.csproj | 6 +- .../Properties/Resources.Designer.cs | 2 +- .../Properties/Settings.Designer.cs | 4 +- MarkdownDeepGui/app.config | 3 + MarkdownDeepJS/MarkdownDeepJS.csproj | 19 +- .../GithubMode.cs | 11 +- MarkdownDeepTests/MarkdownDeepTests.csproj | 8 +- MarkdownDeepTests/Utils.cs | 5 +- .../FencedCodeBlocksAlt(GitHubMode).html | 29 + .../FencedCodeBlocksAlt(GitHubMode).txt | 34 + MarkdownDevBed/MarkdownDevBed.csproj | 8 +- MarkdownDevBed/app.config | 3 + 313 files changed, 355 insertions(+), 62273 deletions(-) delete mode 100644 Backup/MarkdownDeep.sln delete mode 100644 Backup/MarkdownDeep/Abbreviation.cs delete mode 100644 Backup/MarkdownDeep/Block.cs delete mode 100644 Backup/MarkdownDeep/BlockProcessor.cs delete mode 100644 Backup/MarkdownDeep/FootnoteReference.cs delete mode 100644 Backup/MarkdownDeep/HtmlTag.cs delete mode 100644 Backup/MarkdownDeep/LinkDefinition.cs delete mode 100644 Backup/MarkdownDeep/LinkInfo.cs delete mode 100644 Backup/MarkdownDeep/MardownDeep.cs delete mode 100644 Backup/MarkdownDeep/MarkdownDeep.csproj delete mode 100644 Backup/MarkdownDeep/Properties/AssemblyInfo.cs delete mode 100644 Backup/MarkdownDeep/SpanFormatter.cs delete mode 100644 Backup/MarkdownDeep/StringScanner.cs delete mode 100644 Backup/MarkdownDeep/TableSpec.cs delete mode 100644 Backup/MarkdownDeep/Token.cs delete mode 100644 Backup/MarkdownDeep/Utils.cs delete mode 100644 Backup/MarkdownDeepBenchmark/MarkdownDeepBenchmark.csproj delete mode 100644 Backup/MarkdownDeepBenchmark/Program.cs delete mode 100644 Backup/MarkdownDeepBenchmark/Properties/AssemblyInfo.cs delete mode 100644 Backup/MarkdownDeepBenchmark/benchmark/long_plain_text.text delete mode 100644 Backup/MarkdownDeepBenchmark/benchmark/markdown-example-long-1.text delete mode 100644 Backup/MarkdownDeepBenchmark/benchmark/markdown-example-long-2.text delete mode 100644 Backup/MarkdownDeepBenchmark/benchmark/markdown-example-medium-1.text delete mode 100644 Backup/MarkdownDeepBenchmark/benchmark/markdown-example-medium-2.text delete mode 100644 Backup/MarkdownDeepBenchmark/benchmark/markdown-example-short-1.text delete mode 100644 Backup/MarkdownDeepBenchmark/benchmark/markdown-example-short-2.text delete mode 100644 Backup/MarkdownDeepBenchmark/benchmark/markdown-readme.32.text delete mode 100644 Backup/MarkdownDeepBenchmark/benchmark/markdown-readme.8.text delete mode 100644 Backup/MarkdownDeepBenchmark/benchmark/markdown-readme.text delete mode 100644 Backup/MarkdownDeepGui/Form1.Designer.cs delete mode 100644 Backup/MarkdownDeepGui/Form1.cs delete mode 100644 Backup/MarkdownDeepGui/Form1.resx delete mode 100644 Backup/MarkdownDeepGui/MarkdownDeepGui.csproj delete mode 100644 Backup/MarkdownDeepGui/Program.cs delete mode 100644 Backup/MarkdownDeepGui/Properties/AssemblyInfo.cs delete mode 100644 Backup/MarkdownDeepGui/Properties/Resources.Designer.cs delete mode 100644 Backup/MarkdownDeepGui/Properties/Resources.resx delete mode 100644 Backup/MarkdownDeepGui/Properties/Settings.Designer.cs delete mode 100644 Backup/MarkdownDeepGui/Properties/Settings.settings delete mode 100644 Backup/MarkdownDeepJS/MarkdownDeep.js delete mode 100644 Backup/MarkdownDeepJS/MarkdownDeep.min.js delete mode 100644 Backup/MarkdownDeepJS/MarkdownDeepEditor.js delete mode 100644 Backup/MarkdownDeepJS/MarkdownDeepEditor.min.js delete mode 100644 Backup/MarkdownDeepJS/MarkdownDeepEditorUI.js delete mode 100644 Backup/MarkdownDeepJS/MarkdownDeepEditorUI.min.js delete mode 100644 Backup/MarkdownDeepJS/MarkdownDeepJS.csproj delete mode 100644 Backup/MarkdownDeepJS/MarkdownDeepLib.js delete mode 100644 Backup/MarkdownDeepJS/MarkdownDeepLib.min.js delete mode 100644 Backup/MarkdownDeepJS/Properties/AssemblyInfo.cs delete mode 100644 Backup/MarkdownDeepJS/Web.config delete mode 100644 Backup/MarkdownDeepJS/dingus.css delete mode 100644 Backup/MarkdownDeepJS/dingus.html delete mode 100644 Backup/MarkdownDeepJS/dingus_min.html delete mode 100644 Backup/MarkdownDeepJS/jquery-1.4.2.js delete mode 100644 Backup/MarkdownDeepJS/jquery-1.4.2.min.js delete mode 100644 Backup/MarkdownDeepJS/mdd_ajax_loader.gif delete mode 100644 Backup/MarkdownDeepJS/mdd_gripper.png delete mode 100644 Backup/MarkdownDeepJS/mdd_help.htm delete mode 100644 Backup/MarkdownDeepJS/mdd_modal_background.png delete mode 100644 Backup/MarkdownDeepJS/mdd_styles.css delete mode 100644 Backup/MarkdownDeepJS/mdd_toolbar.png delete mode 100644 Backup/MarkdownDeepJS/mdd_toolbar.xcf delete mode 100644 Backup/MarkdownDeepJS/post_build.bat delete mode 100644 Backup/MarkdownDeepJS/readme.txt delete mode 100644 Backup/MarkdownDeepTests/AutoHeaderIDTests.cs delete mode 100644 Backup/MarkdownDeepTests/AutoLinkTests.cs delete mode 100644 Backup/MarkdownDeepTests/BlockLevelTests.cs delete mode 100644 Backup/MarkdownDeepTests/BlockProcessorTests.cs delete mode 100644 Backup/MarkdownDeepTests/CodeSpanTests.cs delete mode 100644 Backup/MarkdownDeepTests/EmphasisTests.cs delete mode 100644 Backup/MarkdownDeepTests/EscapeCharacterTests.cs delete mode 100644 Backup/MarkdownDeepTests/ExtraMode.cs delete mode 100644 Backup/MarkdownDeepTests/HtmlTagTests.cs delete mode 100644 Backup/MarkdownDeepTests/JSTestResources/JSHost.html delete mode 100644 Backup/MarkdownDeepTests/JSTestResources/MarkdownDeep.js delete mode 100644 Backup/MarkdownDeepTests/JSTestResources/MarkdownDeep.min.js delete mode 100644 Backup/MarkdownDeepTests/JavascriptTests.cs delete mode 100644 Backup/MarkdownDeepTests/LinkAndImgTests.cs delete mode 100644 Backup/MarkdownDeepTests/LinkDefinitionTests.cs delete mode 100644 Backup/MarkdownDeepTests/MarkdownDeepTests.csproj delete mode 100644 Backup/MarkdownDeepTests/MarkdownDeepTests.dll.config delete mode 100644 Backup/MarkdownDeepTests/MoreTestFiles.cs delete mode 100644 Backup/MarkdownDeepTests/Properties/AssemblyInfo.cs delete mode 100644 Backup/MarkdownDeepTests/SpanLevelTests.cs delete mode 100644 Backup/MarkdownDeepTests/SpecialCharacterTests.cs delete mode 100644 Backup/MarkdownDeepTests/StringScannerTests.cs delete mode 100644 Backup/MarkdownDeepTests/TableSpecTests.cs delete mode 100644 Backup/MarkdownDeepTests/Utils.cs delete mode 100644 Backup/MarkdownDeepTests/XssAttackTests.cs delete mode 100644 Backup/MarkdownDeepTests/testfiles/blocktests/AtxHeadings.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/blocktests/AtxHeadings.txt delete mode 100644 Backup/MarkdownDeepTests/testfiles/blocktests/CodeBlocks.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/blocktests/CodeBlocks.txt delete mode 100644 Backup/MarkdownDeepTests/testfiles/blocktests/ComplexListItems.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/blocktests/ComplexListItems.txt delete mode 100644 Backup/MarkdownDeepTests/testfiles/blocktests/HardWrappedListItems.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/blocktests/HardWrappedListItems.txt delete mode 100644 Backup/MarkdownDeepTests/testfiles/blocktests/HardWrappedParagraph.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/blocktests/HardWrappedParagraph.txt delete mode 100644 Backup/MarkdownDeepTests/testfiles/blocktests/HardWrappedParagraphInListItem.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/blocktests/HardWrappedParagraphInListItem.txt delete mode 100644 Backup/MarkdownDeepTests/testfiles/blocktests/HardWrappedParagraphWithListLikeLine.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/blocktests/HardWrappedParagraphWithListLikeLine.txt delete mode 100644 Backup/MarkdownDeepTests/testfiles/blocktests/HtmlBlock.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/blocktests/HtmlBlock.txt delete mode 100644 Backup/MarkdownDeepTests/testfiles/blocktests/HtmlComments.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/blocktests/HtmlComments.txt delete mode 100644 Backup/MarkdownDeepTests/testfiles/blocktests/InsTypes.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/blocktests/InsTypes.txt delete mode 100644 Backup/MarkdownDeepTests/testfiles/blocktests/MultipleParagraphs.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/blocktests/MultipleParagraphs.txt delete mode 100644 Backup/MarkdownDeepTests/testfiles/blocktests/NestedListItems.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/blocktests/NestedListItems.txt delete mode 100644 Backup/MarkdownDeepTests/testfiles/blocktests/ParagraphBreaks.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/blocktests/ParagraphBreaks.txt delete mode 100644 Backup/MarkdownDeepTests/testfiles/blocktests/QuoteBlocks.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/blocktests/QuoteBlocks.txt delete mode 100644 Backup/MarkdownDeepTests/testfiles/blocktests/QuoteBlocksNested.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/blocktests/QuoteBlocksNested.txt delete mode 100644 Backup/MarkdownDeepTests/testfiles/blocktests/SetExtHeadings.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/blocktests/SetExtHeadings.txt delete mode 100644 Backup/MarkdownDeepTests/testfiles/blocktests/SimpleOrderedList.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/blocktests/SimpleOrderedList.txt delete mode 100644 Backup/MarkdownDeepTests/testfiles/blocktests/SimpleParagraph.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/blocktests/SimpleParagraph.txt delete mode 100644 Backup/MarkdownDeepTests/testfiles/blocktests/SimpleUnorderedList.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/blocktests/SimpleUnorderedList.txt delete mode 100644 Backup/MarkdownDeepTests/testfiles/extramode/Abbreviations(ExtraMode).html delete mode 100644 Backup/MarkdownDeepTests/testfiles/extramode/Abbreviations(ExtraMode).txt delete mode 100644 Backup/MarkdownDeepTests/testfiles/extramode/BackslashEscapes(ExtraMode).html delete mode 100644 Backup/MarkdownDeepTests/testfiles/extramode/BackslashEscapes(ExtraMode).txt delete mode 100644 Backup/MarkdownDeepTests/testfiles/extramode/DefinitionLists(ExtraMode).html delete mode 100644 Backup/MarkdownDeepTests/testfiles/extramode/DefinitionLists(ExtraMode).txt delete mode 100644 Backup/MarkdownDeepTests/testfiles/extramode/Emphasis(ExtraMode).html delete mode 100644 Backup/MarkdownDeepTests/testfiles/extramode/Emphasis(ExtraMode).txt delete mode 100644 Backup/MarkdownDeepTests/testfiles/extramode/FencedCodeBlocks(ExtraMode).html delete mode 100644 Backup/MarkdownDeepTests/testfiles/extramode/FencedCodeBlocks(ExtraMode).txt delete mode 100644 Backup/MarkdownDeepTests/testfiles/extramode/Footnotes(ExtraMode).html delete mode 100644 Backup/MarkdownDeepTests/testfiles/extramode/Footnotes(ExtraMode).txt delete mode 100644 Backup/MarkdownDeepTests/testfiles/extramode/HeaderIDs(ExtraMode)(AutoHeadingIDs).html delete mode 100644 Backup/MarkdownDeepTests/testfiles/extramode/HeaderIDs(ExtraMode)(AutoHeadingIDs).txt delete mode 100644 Backup/MarkdownDeepTests/testfiles/extramode/HeaderIDs(ExtraMode).html delete mode 100644 Backup/MarkdownDeepTests/testfiles/extramode/HeaderIDs(ExtraMode).txt delete mode 100644 Backup/MarkdownDeepTests/testfiles/extramode/MarkdownInHtml(ExtraMode).html delete mode 100644 Backup/MarkdownDeepTests/testfiles/extramode/MarkdownInHtml(ExtraMode).txt delete mode 100644 Backup/MarkdownDeepTests/testfiles/extramode/MarkdownInHtml-DeepNested(ExtraMode)(MarkdownInHtml).html delete mode 100644 Backup/MarkdownDeepTests/testfiles/extramode/MarkdownInHtml-DeepNested(ExtraMode)(MarkdownInHtml).txt delete mode 100644 Backup/MarkdownDeepTests/testfiles/extramode/MarkdownInHtml-DeepNested(ExtraMode).html delete mode 100644 Backup/MarkdownDeepTests/testfiles/extramode/MarkdownInHtml-DeepNested(ExtraMode).txt delete mode 100644 Backup/MarkdownDeepTests/testfiles/extramode/MarkdownInHtml-Nested(ExtraMode).html delete mode 100644 Backup/MarkdownDeepTests/testfiles/extramode/MarkdownInHtml-Nested(ExtraMode).txt delete mode 100644 Backup/MarkdownDeepTests/testfiles/extramode/TableAlignment(ExtraMode).html delete mode 100644 Backup/MarkdownDeepTests/testfiles/extramode/TableAlignment(ExtraMode).txt delete mode 100644 Backup/MarkdownDeepTests/testfiles/extramode/TableFormatting(ExtraMode).html delete mode 100644 Backup/MarkdownDeepTests/testfiles/extramode/TableFormatting(ExtraMode).txt delete mode 100644 Backup/MarkdownDeepTests/testfiles/extramode/Tables(ExtraMode).html delete mode 100644 Backup/MarkdownDeepTests/testfiles/extramode/Tables(ExtraMode).txt delete mode 100644 Backup/MarkdownDeepTests/testfiles/mdtest01/code-inside-list.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/mdtest01/code-inside-list.text delete mode 100644 Backup/MarkdownDeepTests/testfiles/mdtest01/line-endings-cr.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/mdtest01/line-endings-cr.text delete mode 100644 Backup/MarkdownDeepTests/testfiles/mdtest01/line-endings-crlf.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/mdtest01/line-endings-crlf.text delete mode 100644 Backup/MarkdownDeepTests/testfiles/mdtest01/line-endings-lf.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/mdtest01/line-endings-lf.text delete mode 100644 Backup/MarkdownDeepTests/testfiles/mdtest01/markdown-readme.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/mdtest01/markdown-readme.text delete mode 100644 Backup/MarkdownDeepTests/testfiles/mdtest11/Amps_and_angle_encoding.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/mdtest11/Amps_and_angle_encoding.text delete mode 100644 Backup/MarkdownDeepTests/testfiles/mdtest11/Auto_links.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/mdtest11/Auto_links.text delete mode 100644 Backup/MarkdownDeepTests/testfiles/mdtest11/Backslash_escapes.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/mdtest11/Backslash_escapes.text delete mode 100644 Backup/MarkdownDeepTests/testfiles/mdtest11/Blockquotes_with_code_blocks.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/mdtest11/Blockquotes_with_code_blocks.text delete mode 100644 Backup/MarkdownDeepTests/testfiles/mdtest11/Code_Blocks.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/mdtest11/Code_Blocks.text delete mode 100644 Backup/MarkdownDeepTests/testfiles/mdtest11/Code_Spans.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/mdtest11/Code_Spans.text delete mode 100644 Backup/MarkdownDeepTests/testfiles/mdtest11/Hard_wrapped_paragraphs_with_list_like_lines.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/mdtest11/Hard_wrapped_paragraphs_with_list_like_lines.text delete mode 100644 Backup/MarkdownDeepTests/testfiles/mdtest11/Horizontal_rules.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/mdtest11/Horizontal_rules.text delete mode 100644 Backup/MarkdownDeepTests/testfiles/mdtest11/Images.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/mdtest11/Images.text delete mode 100644 Backup/MarkdownDeepTests/testfiles/mdtest11/Inline_HTML_Advanced.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/mdtest11/Inline_HTML_Advanced.text delete mode 100644 Backup/MarkdownDeepTests/testfiles/mdtest11/Inline_HTML_Simple.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/mdtest11/Inline_HTML_Simple.text delete mode 100644 Backup/MarkdownDeepTests/testfiles/mdtest11/Inline_HTML_comments.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/mdtest11/Inline_HTML_comments.text delete mode 100644 Backup/MarkdownDeepTests/testfiles/mdtest11/Links_inline_style.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/mdtest11/Links_inline_style.text delete mode 100644 Backup/MarkdownDeepTests/testfiles/mdtest11/Links_reference_style.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/mdtest11/Links_reference_style.text delete mode 100644 Backup/MarkdownDeepTests/testfiles/mdtest11/Links_shortcut_references.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/mdtest11/Links_shortcut_references.text delete mode 100644 Backup/MarkdownDeepTests/testfiles/mdtest11/Literal_quotes_in_titles.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/mdtest11/Literal_quotes_in_titles.text delete mode 100644 Backup/MarkdownDeepTests/testfiles/mdtest11/Markdown_Documentation_Basics.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/mdtest11/Markdown_Documentation_Basics.text delete mode 100644 Backup/MarkdownDeepTests/testfiles/mdtest11/Markdown_Documentation_Syntax.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/mdtest11/Markdown_Documentation_Syntax.text delete mode 100644 Backup/MarkdownDeepTests/testfiles/mdtest11/Nested_blockquotes.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/mdtest11/Nested_blockquotes.text delete mode 100644 Backup/MarkdownDeepTests/testfiles/mdtest11/Ordered_and_unordered_lists.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/mdtest11/Ordered_and_unordered_lists.text delete mode 100644 Backup/MarkdownDeepTests/testfiles/mdtest11/Strong_and_em_together.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/mdtest11/Strong_and_em_together.text delete mode 100644 Backup/MarkdownDeepTests/testfiles/mdtest11/Tabs.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/mdtest11/Tabs.text delete mode 100644 Backup/MarkdownDeepTests/testfiles/mdtest11/Tidyness.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/mdtest11/Tidyness.text delete mode 100644 Backup/MarkdownDeepTests/testfiles/pandoc/failure-to-escape-less-than.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/pandoc/failure-to-escape-less-than.text delete mode 100644 Backup/MarkdownDeepTests/testfiles/pandoc/indented-code-in-list-item.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/pandoc/indented-code-in-list-item.text delete mode 100644 Backup/MarkdownDeepTests/testfiles/pandoc/nested-divs.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/pandoc/nested-divs.text delete mode 100644 Backup/MarkdownDeepTests/testfiles/pandoc/nested-emphasis.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/pandoc/nested-emphasis.text delete mode 100644 Backup/MarkdownDeepTests/testfiles/pandoc/unordered-list-and-horizontal-rules.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/pandoc/unordered-list-and-horizontal-rules.text delete mode 100644 Backup/MarkdownDeepTests/testfiles/pandoc/unordered-list-followed-by-ordered-list.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/pandoc/unordered-list-followed-by-ordered-list.text delete mode 100644 Backup/MarkdownDeepTests/testfiles/pandoc/unpredictable-sublists.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/pandoc/unpredictable-sublists.text delete mode 100644 Backup/MarkdownDeepTests/testfiles/phpmarkdown/Backslash escapes.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/phpmarkdown/Backslash escapes.text delete mode 100644 Backup/MarkdownDeepTests/testfiles/phpmarkdown/Code Spans.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/phpmarkdown/Code Spans.text delete mode 100644 Backup/MarkdownDeepTests/testfiles/phpmarkdown/Code block in a list item.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/phpmarkdown/Code block in a list item.text delete mode 100644 Backup/MarkdownDeepTests/testfiles/phpmarkdown/Email auto links.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/phpmarkdown/Email auto links.text delete mode 100644 Backup/MarkdownDeepTests/testfiles/phpmarkdown/Emphasis.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/phpmarkdown/Emphasis.text delete mode 100644 Backup/MarkdownDeepTests/testfiles/phpmarkdown/Headers.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/phpmarkdown/Headers.text delete mode 100644 Backup/MarkdownDeepTests/testfiles/phpmarkdown/Horizontal Rules.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/phpmarkdown/Horizontal Rules.text delete mode 100644 Backup/MarkdownDeepTests/testfiles/phpmarkdown/Inline HTML (Simple).html delete mode 100644 Backup/MarkdownDeepTests/testfiles/phpmarkdown/Inline HTML (Simple).text delete mode 100644 Backup/MarkdownDeepTests/testfiles/phpmarkdown/Inline HTML (Span).html delete mode 100644 Backup/MarkdownDeepTests/testfiles/phpmarkdown/Inline HTML (Span).text delete mode 100644 Backup/MarkdownDeepTests/testfiles/phpmarkdown/Inline HTML comments.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/phpmarkdown/Inline HTML comments.text delete mode 100644 Backup/MarkdownDeepTests/testfiles/phpmarkdown/Ins & del.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/phpmarkdown/Ins & del.text delete mode 100644 Backup/MarkdownDeepTests/testfiles/phpmarkdown/Links, inline style.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/phpmarkdown/Links, inline style.text delete mode 100644 Backup/MarkdownDeepTests/testfiles/phpmarkdown/MD5 Hashes.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/phpmarkdown/MD5 Hashes.text delete mode 100644 Backup/MarkdownDeepTests/testfiles/phpmarkdown/Nesting.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/phpmarkdown/Nesting.text delete mode 100644 Backup/MarkdownDeepTests/testfiles/phpmarkdown/PHP-Specific Bugs.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/phpmarkdown/PHP-Specific Bugs.text delete mode 100644 Backup/MarkdownDeepTests/testfiles/phpmarkdown/Parens in URL.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/phpmarkdown/Parens in URL.text delete mode 100644 Backup/MarkdownDeepTests/testfiles/phpmarkdown/Tight blocks.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/phpmarkdown/Tight blocks.text delete mode 100644 Backup/MarkdownDeepTests/testfiles/safemode/Basic(SafeMode).html delete mode 100644 Backup/MarkdownDeepTests/testfiles/safemode/Basic(SafeMode).txt delete mode 100644 Backup/MarkdownDeepTests/testfiles/spantests/BackslashEscapes.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/spantests/BackslashEscapes.txt delete mode 100644 Backup/MarkdownDeepTests/testfiles/spantests/Emphasis.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/spantests/Emphasis.txt delete mode 100644 Backup/MarkdownDeepTests/testfiles/spantests/EscapesInUrls.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/spantests/EscapesInUrls.txt delete mode 100644 Backup/MarkdownDeepTests/testfiles/spantests/ExplicitReferenceLinkWithTitle.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/spantests/ExplicitReferenceLinkWithTitle.txt delete mode 100644 Backup/MarkdownDeepTests/testfiles/spantests/ExplicitReferenceLinkWithoutTitle.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/spantests/ExplicitReferenceLinkWithoutTitle.txt delete mode 100644 Backup/MarkdownDeepTests/testfiles/spantests/FormattingInLinkText.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/spantests/FormattingInLinkText.txt delete mode 100644 Backup/MarkdownDeepTests/testfiles/spantests/HtmlEncodeLinks.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/spantests/HtmlEncodeLinks.txt delete mode 100644 Backup/MarkdownDeepTests/testfiles/spantests/ImplicitReferenceLinkWithTitle.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/spantests/ImplicitReferenceLinkWithTitle.txt delete mode 100644 Backup/MarkdownDeepTests/testfiles/spantests/ImplicitReferenceLinkWithoutTitle.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/spantests/ImplicitReferenceLinkWithoutTitle.txt delete mode 100644 Backup/MarkdownDeepTests/testfiles/spantests/InlineLinkWithTitle.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/spantests/InlineLinkWithTitle.txt delete mode 100644 Backup/MarkdownDeepTests/testfiles/spantests/LinkTitlesWithEmbeddedQuotes.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/spantests/LinkTitlesWithEmbeddedQuotes.txt delete mode 100644 Backup/MarkdownDeepTests/testfiles/spantests/ReferenceLinkWithIDOnNextLine.html delete mode 100644 Backup/MarkdownDeepTests/testfiles/spantests/ReferenceLinkWithIDOnNextLine.txt delete mode 100644 Backup/MarkdownDeepTests/testfiles/xsstests/non_attacks.txt delete mode 100644 Backup/MarkdownDeepTests/testfiles/xsstests/xss_attacks.txt delete mode 100644 Backup/MarkdownDevBed/MarkdownDevBed.csproj delete mode 100644 Backup/MarkdownDevBed/Program.cs delete mode 100644 Backup/MarkdownDevBed/Properties/AssemblyInfo.cs delete mode 100644 Backup/MarkdownDevBed/input.txt create mode 100644 MarkdownDeepBenchmark/app.config create mode 100644 MarkdownDeepGui/app.config rename Backup/MarkdownDeepTests/SafeModeTests.cs => MarkdownDeepTests/GithubMode.cs (67%) create mode 100644 MarkdownDeepTests/testfiles/githubmode/FencedCodeBlocksAlt(GitHubMode).html create mode 100644 MarkdownDeepTests/testfiles/githubmode/FencedCodeBlocksAlt(GitHubMode).txt create mode 100644 MarkdownDevBed/app.config diff --git a/.gitignore b/.gitignore index 4e0bf5b..696db86 100644 --- a/.gitignore +++ b/.gitignore @@ -1,15 +1,184 @@ -build -bin -obj -Release -Debug -*.pdb -*.user +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# User-specific files *.suo -*.swp -*.swo +*.user +*.sln.docstates + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +build/ +bld/ +[Bb]in/ +[Oo]bj/ + +# Roslyn cache directories +*.ide/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +#NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps *.ncb -*.minime-options -*.zip +*.opensdf +*.sdf +*.cachefile + +# Visual Studio profiler +*.psess +*.vsp +*.vspx + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding addin-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# NCrunch +_NCrunch_* +.*crunch*.local.xml + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# TODO: Comment the next line if you want to checkin your web deploy settings +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# NuGet Packages *.nupkg -/packages/* \ No newline at end of file +# The packages folder can be ignored because of Package Restore +**/packages/* +# except build/, which is used as an MSBuild target. +!**/packages/build/ +# If using the old MSBuild-Integrated Package Restore, uncomment this: +#!**/packages/repositories.config + +# Windows Azure Build Output +csx/ +*.build.csdef + +# Windows Store app package directory +AppPackages/ + +# Others +sql/ +*.Cache +ClientBin/ +[Ss]tyle[Cc]op.* +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.pfx +*.publishsettings +node_modules/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +*.mdf +*.ldf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings + +# Microsoft Fakes +FakesAssemblies/ +.vs/config/applicationhost.config diff --git a/Backup/MarkdownDeep.sln b/Backup/MarkdownDeep.sln deleted file mode 100644 index b4d557e..0000000 --- a/Backup/MarkdownDeep.sln +++ /dev/null @@ -1,96 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 10.00 -# Visual Studio 2008 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MarkdownDeep", "MarkdownDeep\MarkdownDeep.csproj", "{1569ED47-C7C9-4261-B6F4-7445BD0F2C95}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MarkdownDeepTests", "MarkdownDeepTests\MarkdownDeepTests.csproj", "{CD1F5BFF-0118-4994-86A2-92658A36CE1B}" - ProjectSection(ProjectDependencies) = postProject - {AE271B39-C3D2-422B-860F-E3BA86AE4C37} = {AE271B39-C3D2-422B-860F-E3BA86AE4C37} - EndProjectSection -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MarkdownDeepBenchmark", "MarkdownDeepBenchmark\MarkdownDeepBenchmark.csproj", "{655AA41D-B9F5-48C6-99A8-3D04659B2591}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MarkdownDevBed", "MarkdownDevBed\MarkdownDevBed.csproj", "{B8264266-5809-4D05-BB99-312BCBE45B28}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MarkdownDeepGui", "MarkdownDeepGui\MarkdownDeepGui.csproj", "{FBDF1B77-BF84-4B3D-83DE-46271C468690}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MarkdownDeepJS", "MarkdownDeepJS\MarkdownDeepJS.csproj", "{AE271B39-C3D2-422B-860F-E3BA86AE4C37}" - ProjectSection(ProjectDependencies) = postProject - {1569ED47-C7C9-4261-B6F4-7445BD0F2C95} = {1569ED47-C7C9-4261-B6F4-7445BD0F2C95} - EndProjectSection -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Debug|Mixed Platforms = Debug|Mixed Platforms - Debug|Win32 = Debug|Win32 - Release|Any CPU = Release|Any CPU - Release|Mixed Platforms = Release|Mixed Platforms - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {1569ED47-C7C9-4261-B6F4-7445BD0F2C95}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1569ED47-C7C9-4261-B6F4-7445BD0F2C95}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1569ED47-C7C9-4261-B6F4-7445BD0F2C95}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {1569ED47-C7C9-4261-B6F4-7445BD0F2C95}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {1569ED47-C7C9-4261-B6F4-7445BD0F2C95}.Debug|Win32.ActiveCfg = Debug|Any CPU - {1569ED47-C7C9-4261-B6F4-7445BD0F2C95}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1569ED47-C7C9-4261-B6F4-7445BD0F2C95}.Release|Any CPU.Build.0 = Release|Any CPU - {1569ED47-C7C9-4261-B6F4-7445BD0F2C95}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {1569ED47-C7C9-4261-B6F4-7445BD0F2C95}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {1569ED47-C7C9-4261-B6F4-7445BD0F2C95}.Release|Win32.ActiveCfg = Release|Any CPU - {CD1F5BFF-0118-4994-86A2-92658A36CE1B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {CD1F5BFF-0118-4994-86A2-92658A36CE1B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {CD1F5BFF-0118-4994-86A2-92658A36CE1B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {CD1F5BFF-0118-4994-86A2-92658A36CE1B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {CD1F5BFF-0118-4994-86A2-92658A36CE1B}.Debug|Win32.ActiveCfg = Debug|Any CPU - {CD1F5BFF-0118-4994-86A2-92658A36CE1B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {CD1F5BFF-0118-4994-86A2-92658A36CE1B}.Release|Any CPU.Build.0 = Release|Any CPU - {CD1F5BFF-0118-4994-86A2-92658A36CE1B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {CD1F5BFF-0118-4994-86A2-92658A36CE1B}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {CD1F5BFF-0118-4994-86A2-92658A36CE1B}.Release|Win32.ActiveCfg = Release|Any CPU - {655AA41D-B9F5-48C6-99A8-3D04659B2591}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {655AA41D-B9F5-48C6-99A8-3D04659B2591}.Debug|Any CPU.Build.0 = Debug|Any CPU - {655AA41D-B9F5-48C6-99A8-3D04659B2591}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {655AA41D-B9F5-48C6-99A8-3D04659B2591}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {655AA41D-B9F5-48C6-99A8-3D04659B2591}.Debug|Win32.ActiveCfg = Debug|Any CPU - {655AA41D-B9F5-48C6-99A8-3D04659B2591}.Release|Any CPU.ActiveCfg = Release|Any CPU - {655AA41D-B9F5-48C6-99A8-3D04659B2591}.Release|Any CPU.Build.0 = Release|Any CPU - {655AA41D-B9F5-48C6-99A8-3D04659B2591}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {655AA41D-B9F5-48C6-99A8-3D04659B2591}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {655AA41D-B9F5-48C6-99A8-3D04659B2591}.Release|Win32.ActiveCfg = Release|Any CPU - {B8264266-5809-4D05-BB99-312BCBE45B28}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B8264266-5809-4D05-BB99-312BCBE45B28}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B8264266-5809-4D05-BB99-312BCBE45B28}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {B8264266-5809-4D05-BB99-312BCBE45B28}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {B8264266-5809-4D05-BB99-312BCBE45B28}.Debug|Win32.ActiveCfg = Debug|Any CPU - {B8264266-5809-4D05-BB99-312BCBE45B28}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B8264266-5809-4D05-BB99-312BCBE45B28}.Release|Any CPU.Build.0 = Release|Any CPU - {B8264266-5809-4D05-BB99-312BCBE45B28}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {B8264266-5809-4D05-BB99-312BCBE45B28}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {B8264266-5809-4D05-BB99-312BCBE45B28}.Release|Win32.ActiveCfg = Release|Any CPU - {FBDF1B77-BF84-4B3D-83DE-46271C468690}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FBDF1B77-BF84-4B3D-83DE-46271C468690}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FBDF1B77-BF84-4B3D-83DE-46271C468690}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {FBDF1B77-BF84-4B3D-83DE-46271C468690}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {FBDF1B77-BF84-4B3D-83DE-46271C468690}.Debug|Win32.ActiveCfg = Debug|Any CPU - {FBDF1B77-BF84-4B3D-83DE-46271C468690}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FBDF1B77-BF84-4B3D-83DE-46271C468690}.Release|Any CPU.Build.0 = Release|Any CPU - {FBDF1B77-BF84-4B3D-83DE-46271C468690}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {FBDF1B77-BF84-4B3D-83DE-46271C468690}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {FBDF1B77-BF84-4B3D-83DE-46271C468690}.Release|Win32.ActiveCfg = Release|Any CPU - {AE271B39-C3D2-422B-860F-E3BA86AE4C37}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {AE271B39-C3D2-422B-860F-E3BA86AE4C37}.Debug|Any CPU.Build.0 = Debug|Any CPU - {AE271B39-C3D2-422B-860F-E3BA86AE4C37}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {AE271B39-C3D2-422B-860F-E3BA86AE4C37}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {AE271B39-C3D2-422B-860F-E3BA86AE4C37}.Debug|Win32.ActiveCfg = Debug|Any CPU - {AE271B39-C3D2-422B-860F-E3BA86AE4C37}.Release|Any CPU.ActiveCfg = Release|Any CPU - {AE271B39-C3D2-422B-860F-E3BA86AE4C37}.Release|Any CPU.Build.0 = Release|Any CPU - {AE271B39-C3D2-422B-860F-E3BA86AE4C37}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {AE271B39-C3D2-422B-860F-E3BA86AE4C37}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {AE271B39-C3D2-422B-860F-E3BA86AE4C37}.Release|Win32.ActiveCfg = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/Backup/MarkdownDeep/Abbreviation.cs b/Backup/MarkdownDeep/Abbreviation.cs deleted file mode 100644 index f2a1f59..0000000 --- a/Backup/MarkdownDeep/Abbreviation.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -// MarkdownDeep - http://www.toptensoftware.com/markdowndeep -// -// The contents of this file are subject to the license terms as -// specified at the web address above. -// -// Software distributed under the License is distributed on an -// "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or -// implied. See the License for the specific language governing -// rights and limitations under the License. -// -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace MarkdownDeep -{ - class Abbreviation - { - public Abbreviation(string abbr, string title) - { - Abbr = abbr; - Title = title; - } - public string Abbr; - public string Title; - } -} diff --git a/Backup/MarkdownDeep/Block.cs b/Backup/MarkdownDeep/Block.cs deleted file mode 100644 index 1d3e96c..0000000 --- a/Backup/MarkdownDeep/Block.cs +++ /dev/null @@ -1,464 +0,0 @@ -// -// MarkdownDeep - http://www.toptensoftware.com/markdowndeep -// -// The contents of this file are subject to the license terms as -// specified at the web address above. -// -// Software distributed under the License is distributed on an -// "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or -// implied. See the License for the specific language governing -// rights and limitations under the License. -// -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace MarkdownDeep -{ - // Some block types are only used during block parsing, some - // are only used during rendering and some are used during both - internal enum BlockType - { - Blank, // blank line (parse only) - h1, // headings (render and parse) - h2, - h3, - h4, - h5, - h6, - post_h1, // setext heading lines (parse only) - post_h2, - quote, // block quote (render and parse) - ol_li, // list item in an ordered list (render and parse) - ul_li, // list item in an unordered list (render and parse) - p, // paragraph (or plain line during parse) - indent, // an indented line (parse only) - hr, // horizontal rule (render and parse) - html, // html content (render and parse) - unsafe_html, // unsafe html that should be encoded - span, // an undecorated span of text (used for simple list items - // where content is not wrapped in paragraph tags - codeblock, // a code block (render only) - li, // a list item (render only) - ol, // ordered list (render only) - ul, // unordered list (render only) - HtmlTag, // Data=(HtmlTag), children = content - Composite, // Just a list of child blocks - table_spec, // A table row specifier eg: |---: | ---| `data` = TableSpec reference - dd, // definition (render and parse) `data` = bool true if blank line before - dt, // render only - dl, // render only - footnote, // footnote definition eg: [^id] `data` holds the footnote id - p_footnote, // paragraph with footnote return link append. Return link string is in `data`. - } - - class Block - { - internal Block() - { - - } - - internal Block(BlockType type) - { - blockType = type; - } - - public string Content - { - get - { - switch (blockType) - { - case BlockType.codeblock: - StringBuilder s = new StringBuilder(); - foreach (var line in children) - { - s.Append(line.Content); - s.Append('\n'); - } - return s.ToString(); - } - - - if (buf==null) - return null; - else - return contentStart == -1 ? buf : buf.Substring(contentStart, contentLen); - } - } - - internal void RenderChildren(Markdown m, StringBuilder b) - { - foreach (var block in children) - { - block.Render(m, b); - } - } - - internal void RenderChildrenPlain(Markdown m, StringBuilder b) - { - foreach (var block in children) - { - block.RenderPlain(m, b); - } - } - - internal string ResolveHeaderID(Markdown m) - { - // Already resolved? - if (this.data!=null) - return (string)this.data; - - // Approach 1 - PHP Markdown Extra style header id - int end=contentEnd; - string id = Utils.StripHtmlID(buf, contentStart, ref end); - if (id != null) - { - contentEnd = end; - } - else - { - // Approach 2 - pandoc style header id - id = m.MakeUniqueHeaderID(buf, contentStart, contentLen); - } - - this.data = id; - return id; - } - - internal void Render(Markdown m, StringBuilder b) - { - switch (blockType) - { - case BlockType.Blank: - return; - - case BlockType.p: - m.SpanFormatter.FormatParagraph(b, buf, contentStart, contentLen); - break; - - case BlockType.span: - m.SpanFormatter.Format(b, buf, contentStart, contentLen); - b.Append("\n"); - break; - - case BlockType.h1: - case BlockType.h2: - case BlockType.h3: - case BlockType.h4: - case BlockType.h5: - case BlockType.h6: - if (m.ExtraMode && !m.SafeMode) - { - b.Append("<" + blockType.ToString()); - string id = ResolveHeaderID(m); - if (!String.IsNullOrEmpty(id)) - { - b.Append(" id=\""); - b.Append(id); - b.Append("\">"); - } - else - { - b.Append(">"); - } - } - else - { - b.Append("<" + blockType.ToString() + ">"); - } - m.SpanFormatter.Format(b, buf, contentStart, contentLen); - b.Append("\n"); - break; - - case BlockType.hr: - b.Append("
\n"); - return; - - case BlockType.ol_li: - case BlockType.ul_li: - b.Append("
  • "); - m.SpanFormatter.Format(b, buf, contentStart, contentLen); - b.Append("
  • \n"); - break; - - case BlockType.dd: - b.Append("
    "); - if (children != null) - { - b.Append("\n"); - RenderChildren(m, b); - } - else - m.SpanFormatter.Format(b, buf, contentStart, contentLen); - b.Append("
    \n"); - break; - - case BlockType.dt: - { - if (children == null) - { - foreach (var l in Content.Split('\n')) - { - b.Append("
    "); - m.SpanFormatter.Format(b, l.Trim()); - b.Append("
    \n"); - } - } - else - { - b.Append("
    \n"); - RenderChildren(m, b); - b.Append("
    \n"); - } - break; - } - - case BlockType.dl: - b.Append("
    \n"); - RenderChildren(m, b); - b.Append("
    \n"); - return; - - case BlockType.html: - b.Append(buf, contentStart, contentLen); - return; - - case BlockType.unsafe_html: - m.HtmlEncode(b, buf, contentStart, contentLen); - return; - - case BlockType.codeblock: - b.Append("
    ");
    -					foreach (var line in children)
    -					{
    -						m.HtmlEncodeAndConvertTabsToSpaces(b, line.buf, line.contentStart, line.contentLen);
    -						b.Append("\n");
    -					}
    -					b.Append("
    \n\n"); - return; - - case BlockType.quote: - b.Append("
    \n"); - RenderChildren(m, b); - b.Append("
    \n"); - return; - - case BlockType.li: - b.Append("
  • \n"); - RenderChildren(m, b); - b.Append("
  • \n"); - return; - - case BlockType.ol: - b.Append("
      \n"); - RenderChildren(m, b); - b.Append("
    \n"); - return; - - case BlockType.ul: - b.Append("\n"); - return; - - case BlockType.HtmlTag: - var tag = (HtmlTag)data; - - // Prepare special tags - var name=tag.name.ToLowerInvariant(); - if (name == "a") - { - m.OnPrepareLink(tag); - } - else if (name == "img") - { - m.OnPrepareImage(tag, m.RenderingTitledImage); - } - - tag.RenderOpening(b); - b.Append("\n"); - RenderChildren(m, b); - tag.RenderClosing(b); - b.Append("\n"); - return; - - case BlockType.Composite: - case BlockType.footnote: - RenderChildren(m, b); - return; - - case BlockType.table_spec: - ((TableSpec)data).Render(m, b); - break; - - case BlockType.p_footnote: - b.Append("

    "); - if (contentLen > 0) - { - m.SpanFormatter.Format(b, buf, contentStart, contentLen); - b.Append(" "); - } - b.Append((string)data); - b.Append("

    \n"); - break; - - default: - b.Append("<" + blockType.ToString() + ">"); - m.SpanFormatter.Format(b, buf, contentStart, contentLen); - b.Append("\n"); - break; - } - } - - internal void RenderPlain(Markdown m, StringBuilder b) - { - switch (blockType) - { - case BlockType.Blank: - return; - - case BlockType.p: - case BlockType.span: - m.SpanFormatter.FormatPlain(b, buf, contentStart, contentLen); - b.Append(" "); - break; - - case BlockType.h1: - case BlockType.h2: - case BlockType.h3: - case BlockType.h4: - case BlockType.h5: - case BlockType.h6: - m.SpanFormatter.FormatPlain(b, buf, contentStart, contentLen); - b.Append(" - "); - break; - - - case BlockType.ol_li: - case BlockType.ul_li: - b.Append("* "); - m.SpanFormatter.FormatPlain(b, buf, contentStart, contentLen); - b.Append(" "); - break; - - case BlockType.dd: - if (children != null) - { - b.Append("\n"); - RenderChildrenPlain(m, b); - } - else - m.SpanFormatter.FormatPlain(b, buf, contentStart, contentLen); - break; - - case BlockType.dt: - { - if (children == null) - { - foreach (var l in Content.Split('\n')) - { - var str = l.Trim(); - m.SpanFormatter.FormatPlain(b, str, 0, str.Length); - } - } - else - { - RenderChildrenPlain(m, b); - } - break; - } - - case BlockType.dl: - RenderChildrenPlain(m, b); - return; - - case BlockType.codeblock: - foreach (var line in children) - { - b.Append(line.buf, line.contentStart, line.contentLen); - b.Append(" "); - } - return; - - case BlockType.quote: - case BlockType.li: - case BlockType.ol: - case BlockType.ul: - case BlockType.HtmlTag: - RenderChildrenPlain(m, b); - return; - } - } - - public void RevertToPlain() - { - blockType = BlockType.p; - contentStart = lineStart; - contentLen = lineLen; - } - - public int contentEnd - { - get - { - return contentStart + contentLen; - } - set - { - contentLen = value - contentStart; - } - } - - // Count the leading spaces on a block - // Used by list item evaluation to determine indent levels - // irrespective of indent line type. - public int leadingSpaces - { - get - { - int count = 0; - for (int i = lineStart; i < lineStart + lineLen; i++) - { - if (buf[i] == ' ') - { - count++; - } - else - { - break; - } - } - return count; - } - } - - public override string ToString() - { - string c = Content; - return blockType.ToString() + " - " + (c==null ? "" : c); - } - - public Block CopyFrom(Block other) - { - blockType = other.blockType; - buf = other.buf; - contentStart = other.contentStart; - contentLen = other.contentLen; - lineStart = other.lineStart; - lineLen = other.lineLen; - return this; - } - - internal BlockType blockType; - internal string buf; - internal int contentStart; - internal int contentLen; - internal int lineStart; - internal int lineLen; - internal object data; // content depends on block type - internal List children; - } -} diff --git a/Backup/MarkdownDeep/BlockProcessor.cs b/Backup/MarkdownDeep/BlockProcessor.cs deleted file mode 100644 index 81c3bd1..0000000 --- a/Backup/MarkdownDeep/BlockProcessor.cs +++ /dev/null @@ -1,1508 +0,0 @@ -// -// MarkdownDeep - http://www.toptensoftware.com/markdowndeep -// -// The contents of this file are subject to the license terms as -// specified at the web address above. -// -// Software distributed under the License is distributed on an -// "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or -// implied. See the License for the specific language governing -// rights and limitations under the License. -// -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace MarkdownDeep -{ - public class BlockProcessor : StringScanner - { - public BlockProcessor(Markdown m, bool MarkdownInHtml) - { - m_markdown = m; - m_bMarkdownInHtml = MarkdownInHtml; - m_parentType = BlockType.Blank; - } - - internal BlockProcessor(Markdown m, bool MarkdownInHtml, BlockType parentType) - { - m_markdown = m; - m_bMarkdownInHtml = MarkdownInHtml; - m_parentType = parentType; - } - - internal List Process(string str) - { - return ScanLines(str); - } - - internal List ScanLines(string str) - { - // Reset string scanner - Reset(str); - return ScanLines(); - } - - internal List ScanLines(string str, int start, int len) - { - Reset(str, start, len); - return ScanLines(); - } - - internal bool StartTable(TableSpec spec, List lines) - { - // Mustn't have more than 1 preceeding line - if (lines.Count > 1) - return false; - - // Rewind, parse the header row then fast forward back to current pos - if (lines.Count == 1) - { - int savepos = position; - position = lines[0].lineStart; - spec.Headers = spec.ParseRow(this); - if (spec.Headers == null) - return false; - position = savepos; - lines.Clear(); - } - - // Parse all rows - while (true) - { - int savepos = position; - - var row=spec.ParseRow(this); - if (row!=null) - { - spec.Rows.Add(row); - continue; - } - - position = savepos; - break; - } - - return true; - } - - internal List ScanLines() - { - // The final set of blocks will be collected here - var blocks = new List(); - - // The current paragraph/list/codeblock etc will be accumulated here - // before being collapsed into a block and store in above `blocks` list - var lines = new List(); - - // Add all blocks - BlockType PrevBlockType = BlockType.unsafe_html; - while (!eof) - { - // Remember if the previous line was blank - bool bPreviousBlank = PrevBlockType == BlockType.Blank; - - // Get the next block - var b = EvaluateLine(); - PrevBlockType = b.blockType; - - // For dd blocks, we need to know if it was preceeded by a blank line - // so store that fact as the block's data. - if (b.blockType == BlockType.dd) - { - b.data = bPreviousBlank; - } - - - // SetExt header? - if (b.blockType == BlockType.post_h1 || b.blockType == BlockType.post_h2) - { - if (lines.Count > 0) - { - // Remove the previous line and collapse the current paragraph - var prevline = lines.Pop(); - CollapseLines(blocks, lines); - - // If previous line was blank, - if (prevline.blockType != BlockType.Blank) - { - // Convert the previous line to a heading and add to block list - prevline.RevertToPlain(); - prevline.blockType = b.blockType == BlockType.post_h1 ? BlockType.h1 : BlockType.h2; - blocks.Add(prevline); - continue; - } - } - - // Couldn't apply setext header to a previous line - - if (b.blockType == BlockType.post_h1) - { - // `===` gets converted to normal paragraph - b.RevertToPlain(); - lines.Add(b); - } - else - { - // `---` gets converted to hr - if (b.contentLen >= 3) - { - b.blockType = BlockType.hr; - blocks.Add(b); - } - else - { - b.RevertToPlain(); - lines.Add(b); - } - } - - continue; - } - - - // Work out the current paragraph type - BlockType currentBlockType = lines.Count > 0 ? lines[0].blockType : BlockType.Blank; - - // Starting a table? - if (b.blockType == BlockType.table_spec) - { - // Get the table spec, save position - TableSpec spec = (TableSpec)b.data; - int savepos = position; - if (!StartTable(spec, lines)) - { - // Not a table, revert the tablespec row to plain, - // fast forward back to where we were up to and continue - // on as if nothing happened - position = savepos; - b.RevertToPlain(); - } - else - { - blocks.Add(b); - continue; - } - } - - // Process this line - switch (b.blockType) - { - case BlockType.Blank: - switch (currentBlockType) - { - case BlockType.Blank: - FreeBlock(b); - break; - - case BlockType.p: - CollapseLines(blocks, lines); - FreeBlock(b); - break; - - case BlockType.quote: - case BlockType.ol_li: - case BlockType.ul_li: - case BlockType.dd: - case BlockType.footnote: - case BlockType.indent: - lines.Add(b); - break; - - default: - System.Diagnostics.Debug.Assert(false); - break; - } - break; - - case BlockType.p: - switch (currentBlockType) - { - case BlockType.Blank: - case BlockType.p: - lines.Add(b); - break; - - case BlockType.quote: - case BlockType.ol_li: - case BlockType.ul_li: - case BlockType.dd: - case BlockType.footnote: - var prevline = lines.Last(); - if (prevline.blockType == BlockType.Blank) - { - CollapseLines(blocks, lines); - lines.Add(b); - } - else - { - lines.Add(b); - } - break; - - case BlockType.indent: - CollapseLines(blocks, lines); - lines.Add(b); - break; - - default: - System.Diagnostics.Debug.Assert(false); - break; - } - break; - - case BlockType.indent: - switch (currentBlockType) - { - case BlockType.Blank: - // Start a code block - lines.Add(b); - break; - - case BlockType.p: - case BlockType.quote: - var prevline = lines.Last(); - if (prevline.blockType == BlockType.Blank) - { - // Start a code block after a paragraph - CollapseLines(blocks, lines); - lines.Add(b); - } - else - { - // indented line in paragraph, just continue it - b.RevertToPlain(); - lines.Add(b); - } - break; - - - case BlockType.ol_li: - case BlockType.ul_li: - case BlockType.dd: - case BlockType.footnote: - case BlockType.indent: - lines.Add(b); - break; - - default: - System.Diagnostics.Debug.Assert(false); - break; - } - break; - - case BlockType.quote: - if (currentBlockType != BlockType.quote) - { - CollapseLines(blocks, lines); - } - lines.Add(b); - break; - - case BlockType.ol_li: - case BlockType.ul_li: - switch (currentBlockType) - { - case BlockType.Blank: - lines.Add(b); - break; - - case BlockType.p: - case BlockType.quote: - var prevline = lines.Last(); - if (prevline.blockType == BlockType.Blank || m_parentType==BlockType.ol_li || m_parentType==BlockType.ul_li || m_parentType==BlockType.dd) - { - // List starting after blank line after paragraph or quote - CollapseLines(blocks, lines); - lines.Add(b); - } - else - { - // List's can't start in middle of a paragraph - b.RevertToPlain(); - lines.Add(b); - } - break; - - case BlockType.ol_li: - case BlockType.ul_li: - case BlockType.dd: - case BlockType.footnote: - if (b.blockType != currentBlockType) - { - CollapseLines(blocks, lines); - } - lines.Add(b); - break; - - case BlockType.indent: - // List after code block - CollapseLines(blocks, lines); - lines.Add(b); - break; - } - break; - - case BlockType.dd: - case BlockType.footnote: - switch (currentBlockType) - { - case BlockType.Blank: - case BlockType.p: - case BlockType.dd: - case BlockType.footnote: - CollapseLines(blocks, lines); - lines.Add(b); - break; - - default: - b.RevertToPlain(); - lines.Add(b); - break; - } - break; - - default: - CollapseLines(blocks, lines); - blocks.Add(b); - break; - } - } - - CollapseLines(blocks, lines); - - if (m_markdown.ExtraMode) - { - BuildDefinitionLists(blocks); - } - - return blocks; - } - - internal Block CreateBlock() - { - return m_markdown.CreateBlock(); - } - - internal void FreeBlock(Block b) - { - m_markdown.FreeBlock(b); - } - - internal void FreeBlocks(List blocks) - { - foreach (var b in blocks) - FreeBlock(b); - blocks.Clear(); - } - - internal string RenderLines(List lines) - { - StringBuilder b = m_markdown.GetStringBuilder(); - foreach (var l in lines) - { - b.Append(l.buf, l.contentStart, l.contentLen); - b.Append('\n'); - } - return b.ToString(); - } - - internal void CollapseLines(List blocks, List lines) - { - // Remove trailing blank lines - while (lines.Count>0 && lines.Last().blockType == BlockType.Blank) - { - FreeBlock(lines.Pop()); - } - - // Quit if empty - if (lines.Count == 0) - { - return; - } - - - // What sort of block? - switch (lines[0].blockType) - { - case BlockType.p: - { - // Collapse all lines into a single paragraph - var para = CreateBlock(); - para.blockType = BlockType.p; - para.buf = lines[0].buf; - para.contentStart = lines[0].contentStart; - para.contentEnd = lines.Last().contentEnd; - blocks.Add(para); - FreeBlocks(lines); - break; - } - - case BlockType.quote: - { - // Create a new quote block - var quote = new Block(BlockType.quote); - quote.children = new BlockProcessor(m_markdown, m_bMarkdownInHtml, BlockType.quote).Process(RenderLines(lines)); - FreeBlocks(lines); - blocks.Add(quote); - break; - } - - case BlockType.ol_li: - case BlockType.ul_li: - blocks.Add(BuildList(lines)); - break; - - case BlockType.dd: - if (blocks.Count > 0) - { - var prev=blocks[blocks.Count-1]; - switch (prev.blockType) - { - case BlockType.p: - prev.blockType = BlockType.dt; - break; - - case BlockType.dd: - break; - - default: - var wrapper = CreateBlock(); - wrapper.blockType = BlockType.dt; - wrapper.children = new List(); - wrapper.children.Add(prev); - blocks.Pop(); - blocks.Add(wrapper); - break; - } - - } - blocks.Add(BuildDefinition(lines)); - break; - - case BlockType.footnote: - m_markdown.AddFootnote(BuildFootnote(lines)); - break; - - case BlockType.indent: - { - var codeblock = new Block(BlockType.codeblock); - codeblock.children = new List(); - codeblock.children.AddRange(lines); - blocks.Add(codeblock); - lines.Clear(); - break; - } - } - } - - - Block EvaluateLine() - { - // Create a block - Block b=CreateBlock(); - - // Store line start - b.lineStart=position; - b.buf=input; - - // Scan the line - b.contentStart = position; - b.contentLen = -1; - b.blockType=EvaluateLine(b); - - // If end of line not returned, do it automatically - if (b.contentLen < 0) - { - // Move to end of line - SkipToEol(); - b.contentLen = position - b.contentStart; - } - - // Setup line length - b.lineLen=position-b.lineStart; - - // Next line - SkipEol(); - - // Create block - return b; - } - - BlockType EvaluateLine(Block b) - { - // Empty line? - if (eol) - return BlockType.Blank; - - // Save start of line position - int line_start= position; - - // ## Heading ## - char ch=current; - if (ch == '#') - { - // Work out heading level - int level = 1; - SkipForward(1); - while (current == '#') - { - level++; - SkipForward(1); - } - - // Limit of 6 - if (level > 6) - level = 6; - - // Skip any whitespace - SkipLinespace(); - - // Save start position - b.contentStart = position; - - // Jump to end - SkipToEol(); - - // In extra mode, check for a trailing HTML ID - if (m_markdown.ExtraMode && !m_markdown.SafeMode) - { - int end=position; - string strID = Utils.StripHtmlID(input, b.contentStart, ref end); - if (strID!=null) - { - b.data = strID; - position = end; - } - } - - // Rewind over trailing hashes - while (position>b.contentStart && CharAtOffset(-1) == '#') - { - SkipForward(-1); - } - - // Rewind over trailing spaces - while (position>b.contentStart && char.IsWhiteSpace(CharAtOffset(-1))) - { - SkipForward(-1); - } - - // Create the heading block - b.contentEnd = position; - - SkipToEol(); - return BlockType.h1 + (level - 1); - } - - // Check for entire line as - or = for setext h1 and h2 - if (ch=='-' || ch=='=') - { - // Skip all matching characters - char chType = ch; - while (current==chType) - { - SkipForward(1); - } - - // Trailing whitespace allowed - SkipLinespace(); - - // If not at eol, must have found something other than setext header - if (eol) - { - return chType == '=' ? BlockType.post_h1 : BlockType.post_h2; - } - - position = line_start; - } - - // MarkdownExtra Table row indicator? - if (m_markdown.ExtraMode) - { - TableSpec spec = TableSpec.Parse(this); - if (spec!=null) - { - b.data = spec; - return BlockType.table_spec; - } - - position = line_start; - } - - // Fenced code blocks? - if (m_markdown.ExtraMode && ch == '~') - { - if (ProcessFencedCodeBlock(b)) - return b.blockType; - - // Rewind - position = line_start; - } - - // Scan the leading whitespace, remembering how many spaces and where the first tab is - int tabPos = -1; - int leadingSpaces = 0; - while (!eol) - { - if (current == ' ') - { - if (tabPos < 0) - leadingSpaces++; - } - else if (current == '\t') - { - if (tabPos < 0) - tabPos = position; - } - else - { - // Something else, get out - break; - } - SkipForward(1); - } - - // Blank line? - if (eol) - { - b.contentEnd = b.contentStart; - return BlockType.Blank; - } - - // 4 leading spaces? - if (leadingSpaces >= 4) - { - b.contentStart = line_start + 4; - return BlockType.indent; - } - - // Tab in the first 4 characters? - if (tabPos >= 0 && tabPos - line_start<4) - { - b.contentStart = tabPos + 1; - return BlockType.indent; - } - - // Treat start of line as after leading whitespace - b.contentStart = position; - - // Get the next character - ch = current; - - // Html block? - if (ch == '<') - { - // Scan html block - if (ScanHtml(b)) - return b.blockType; - - // Rewind - position = b.contentStart; - } - - // Block quotes start with '>' and have one space or one tab following - if (ch == '>') - { - // Block quote followed by space - if (IsLineSpace(CharAtOffset(1))) - { - // Skip it and create quote block - SkipForward(2); - b.contentStart = position; - return BlockType.quote; - } - - SkipForward(1); - b.contentStart = position; - return BlockType.quote; - } - - // Horizontal rule - a line consisting of 3 or more '-', '_' or '*' with optional spaces and nothing else - if (ch == '-' || ch == '_' || ch == '*') - { - int count = 0; - while (!eol) - { - char chType = current; - if (current == ch) - { - count++; - SkipForward(1); - continue; - } - - if (IsLineSpace(current)) - { - SkipForward(1); - continue; - } - - break; - } - - if (eol && count >= 3) - { - return BlockType.hr; - } - - // Rewind - position = b.contentStart; - } - - // Abbreviation definition? - if (m_markdown.ExtraMode && ch == '*' && CharAtOffset(1) == '[') - { - SkipForward(2); - SkipLinespace(); - - Mark(); - while (!eol && current != ']') - { - SkipForward(1); - } - - var abbr = Extract().Trim(); - if (current == ']' && CharAtOffset(1) == ':' && !string.IsNullOrEmpty(abbr)) - { - SkipForward(2); - SkipLinespace(); - - Mark(); - - SkipToEol(); - - var title = Extract(); - - m_markdown.AddAbbreviation(abbr, title); - - return BlockType.Blank; - } - - position = b.contentStart; - } - - // Unordered list - if ((ch == '*' || ch == '+' || ch == '-') && IsLineSpace(CharAtOffset(1))) - { - // Skip it - SkipForward(1); - SkipLinespace(); - b.contentStart = position; - return BlockType.ul_li; - } - - // Definition - if (ch == ':' && m_markdown.ExtraMode && IsLineSpace(CharAtOffset(1))) - { - SkipForward(1); - SkipLinespace(); - b.contentStart = position; - return BlockType.dd; - } - - // Ordered list - if (char.IsDigit(ch)) - { - // Ordered list? A line starting with one or more digits, followed by a '.' and a space or tab - - // Skip all digits - SkipForward(1); - while (char.IsDigit(current)) - SkipForward(1); - - if (SkipChar('.') && SkipLinespace()) - { - b.contentStart = position; - return BlockType.ol_li; - } - - position=b.contentStart; - } - - // Reference link definition? - if (ch == '[') - { - // Footnote definition? - if (m_markdown.ExtraMode && CharAtOffset(1) == '^') - { - var savepos = position; - - SkipForward(2); - - string id; - if (SkipFootnoteID(out id) && SkipChar(']') && SkipChar(':')) - { - SkipLinespace(); - b.contentStart = position; - b.data = id; - return BlockType.footnote; - } - - position = savepos; - } - - // Parse a link definition - LinkDefinition l = LinkDefinition.ParseLinkDefinition(this, m_markdown.ExtraMode); - if (l!=null) - { - m_markdown.AddLinkDefinition(l); - return BlockType.Blank; - } - } - - // Nothing special - return BlockType.p; - } - - internal enum MarkdownInHtmlMode - { - NA, // No markdown attribute on the tag - Block, // markdown=1 or markdown=block - Span, // markdown=1 or markdown=span - Deep, // markdown=deep - recursive block mode - Off, // Markdown="something else" - } - - internal MarkdownInHtmlMode GetMarkdownMode(HtmlTag tag) - { - // Get the markdown attribute - string strMarkdownMode; - if (!m_markdown.ExtraMode || !tag.attributes.TryGetValue("markdown", out strMarkdownMode)) - { - if (m_bMarkdownInHtml) - return MarkdownInHtmlMode.Deep; - else - return MarkdownInHtmlMode.NA; - } - - // Remove it - tag.attributes.Remove("markdown"); - - // Parse mode - if (strMarkdownMode == "1") - return (tag.Flags & HtmlTagFlags.ContentAsSpan)!=0 ? MarkdownInHtmlMode.Span : MarkdownInHtmlMode.Block; - - if (strMarkdownMode == "block") - return MarkdownInHtmlMode.Block; - - if (strMarkdownMode == "deep") - return MarkdownInHtmlMode.Deep; - - if (strMarkdownMode == "span") - return MarkdownInHtmlMode.Span; - - return MarkdownInHtmlMode.Off; - } - - internal bool ProcessMarkdownEnabledHtml(Block b, HtmlTag openingTag, MarkdownInHtmlMode mode) - { - // Current position is just after the opening tag - - // Scan until we find matching closing tag - int inner_pos = position; - int depth = 1; - bool bHasUnsafeContent = false; - while (!eof) - { - // Find next angle bracket - if (!Find('<')) - break; - - // Is it a html tag? - int tagpos = position; - HtmlTag tag = HtmlTag.Parse(this); - if (tag == null) - { - // Nope, skip it - SkipForward(1); - continue; - } - - // In markdown off mode, we need to check for unsafe tags - if (m_markdown.SafeMode && mode == MarkdownInHtmlMode.Off && !bHasUnsafeContent) - { - if (!tag.IsSafe()) - bHasUnsafeContent = true; - } - - // Ignore self closing tags - if (tag.closed) - continue; - - // Same tag? - if (tag.name == openingTag.name) - { - if (tag.closing) - { - depth--; - if (depth == 0) - { - // End of tag? - SkipLinespace(); - SkipEol(); - - b.blockType = BlockType.HtmlTag; - b.data = openingTag; - b.contentEnd = position; - - switch (mode) - { - case MarkdownInHtmlMode.Span: - { - Block span = this.CreateBlock(); - span.buf = input; - span.blockType = BlockType.span; - span.contentStart = inner_pos; - span.contentLen = tagpos - inner_pos; - - b.children = new List(); - b.children.Add(span); - break; - } - - case MarkdownInHtmlMode.Block: - case MarkdownInHtmlMode.Deep: - { - // Scan the internal content - var bp = new BlockProcessor(m_markdown, mode == MarkdownInHtmlMode.Deep); - b.children = bp.ScanLines(input, inner_pos, tagpos - inner_pos); - break; - } - - case MarkdownInHtmlMode.Off: - { - if (bHasUnsafeContent) - { - b.blockType = BlockType.unsafe_html; - b.contentEnd = position; - } - else - { - Block span = this.CreateBlock(); - span.buf = input; - span.blockType = BlockType.html; - span.contentStart = inner_pos; - span.contentLen = tagpos - inner_pos; - - b.children = new List(); - b.children.Add(span); - } - break; - } - } - - - return true; - } - } - else - { - depth++; - } - } - } - - // Missing closing tag(s). - return false; - } - - // Scan from the current position to the end of the html section - internal bool ScanHtml(Block b) - { - // Remember start of html - int posStartPiece = this.position; - - // Parse a HTML tag - HtmlTag openingTag = HtmlTag.Parse(this); - if (openingTag == null) - return false; - - // Closing tag? - if (openingTag.closing) - return false; - - // Safe mode? - bool bHasUnsafeContent = false; - if (m_markdown.SafeMode && !openingTag.IsSafe()) - bHasUnsafeContent = true; - - HtmlTagFlags flags = openingTag.Flags; - - // Is it a block level tag? - if ((flags & HtmlTagFlags.Block) == 0) - return false; - - // Closed tag, hr or comment? - if ((flags & HtmlTagFlags.NoClosing) != 0 || openingTag.closed) - { - SkipLinespace(); - SkipEol(); - - b.contentEnd = position; - b.blockType = bHasUnsafeContent ? BlockType.unsafe_html : BlockType.html; - return true; - } - - // Can it also be an inline tag? - if ((flags & HtmlTagFlags.Inline) != 0) - { - // Yes, opening tag must be on a line by itself - SkipLinespace(); - if (!eol) - return false; - } - - // Work out the markdown mode for this element - if (m_markdown.ExtraMode) - { - MarkdownInHtmlMode MarkdownMode = this.GetMarkdownMode(openingTag); - if (MarkdownMode != MarkdownInHtmlMode.NA) - { - return this.ProcessMarkdownEnabledHtml(b, openingTag, MarkdownMode); - } - } - - List childBlocks = null; - - // Now capture everything up to the closing tag and put it all in a single HTML block - int depth = 1; - - while (!eof) - { - // Find next angle bracket - if (!Find('<')) - break; - - // Save position of current tag - int posStartCurrentTag = position; - - // Is it a html tag? - HtmlTag tag = HtmlTag.Parse(this); - if (tag == null) - { - // Nope, skip it - SkipForward(1); - continue; - } - - // Safe mode checks - if (m_markdown.SafeMode && !tag.IsSafe()) - bHasUnsafeContent = true; - - // Ignore self closing tags - if (tag.closed) - continue; - - // Markdown enabled content? - if (!tag.closing && m_markdown.ExtraMode && !bHasUnsafeContent) - { - MarkdownInHtmlMode MarkdownMode = this.GetMarkdownMode(tag); - if (MarkdownMode != MarkdownInHtmlMode.NA) - { - Block markdownBlock = this.CreateBlock(); - if (this.ProcessMarkdownEnabledHtml(markdownBlock, tag, MarkdownMode)) - { - if (childBlocks==null) - { - childBlocks = new List(); - } - - // Create a block for everything before the markdown tag - if (posStartCurrentTag > posStartPiece) - { - Block htmlBlock = this.CreateBlock(); - htmlBlock.buf = input; - htmlBlock.blockType = BlockType.html; - htmlBlock.contentStart = posStartPiece; - htmlBlock.contentLen = posStartCurrentTag - posStartPiece; - - childBlocks.Add(htmlBlock); - } - - // Add the markdown enabled child block - childBlocks.Add(markdownBlock); - - // Remember start of the next piece - posStartPiece = position; - - continue; - } - else - { - this.FreeBlock(markdownBlock); - } - } - } - - // Same tag? - if (tag.name == openingTag.name) - { - if (tag.closing) - { - depth--; - if (depth == 0) - { - // End of tag? - SkipLinespace(); - SkipEol(); - - // If anything unsafe detected, just encode the whole block - if (bHasUnsafeContent) - { - b.blockType = BlockType.unsafe_html; - b.contentEnd = position; - return true; - } - - // Did we create any child blocks - if (childBlocks != null) - { - // Create a block for the remainder - if (position > posStartPiece) - { - Block htmlBlock = this.CreateBlock(); - htmlBlock.buf = input; - htmlBlock.blockType = BlockType.html; - htmlBlock.contentStart = posStartPiece; - htmlBlock.contentLen = position - posStartPiece; - - childBlocks.Add(htmlBlock); - } - - // Return a composite block - b.blockType = BlockType.Composite; - b.contentEnd = position; - b.children = childBlocks; - return true; - } - - // Straight html block - b.blockType = BlockType.html; - b.contentEnd = position; - return true; - } - } - else - { - depth++; - } - } - } - - // Rewind to just after the tag - return false; - } - - /* - * Spacing - * - * 1-3 spaces - Promote to indented if more spaces than original item - * - */ - - /* - * BuildList - build a single
      or