gitextract_l7_nm_6w/ ├── .github/ │ ├── FUNDING.yml │ ├── dependabot.yml │ └── workflows/ │ ├── ci.yaml │ ├── nuget-publish.yaml │ └── on-push-do-docs.yml ├── .gitignore ├── LICENSE ├── README.md ├── dotnet ├── mdsnippets.json └── src/ ├── .editorconfig ├── ReverseMarkdown/ │ ├── Cleaner.cs │ ├── Config.cs │ ├── Converter.cs │ ├── ConverterContext.cs │ ├── Converters/ │ │ ├── A.cs │ │ ├── AliasConverter.cs │ │ ├── AliasTagConverter.cs │ │ ├── Aside.cs │ │ ├── Blockquote.cs │ │ ├── Br.cs │ │ ├── ByPass.cs │ │ ├── Code.cs │ │ ├── ConverterBase.cs │ │ ├── Dd.cs │ │ ├── Div.cs │ │ ├── Dl.cs │ │ ├── Drop.cs │ │ ├── Dt.cs │ │ ├── Em.cs │ │ ├── H.cs │ │ ├── Hr.cs │ │ ├── IConverter.cs │ │ ├── Ignore.cs │ │ ├── Img.cs │ │ ├── Li.cs │ │ ├── Ol.cs │ │ ├── P.cs │ │ ├── PassThrough.cs │ │ ├── Pre.cs │ │ ├── S.cs │ │ ├── Strong.cs │ │ ├── Sup.cs │ │ ├── Table.cs │ │ ├── Td.cs │ │ ├── Text.cs │ │ ├── Tr.cs │ │ └── UnknownTagReplacer.cs │ ├── Helpers/ │ │ ├── LineSplitEnumerator.cs │ │ ├── StringExtensions.cs │ │ ├── StringReplaceValues.cs │ │ └── StringUtils.cs │ ├── ImageUtils.cs │ ├── ReverseMarkdown.csproj │ ├── UnknownTagException.cs │ └── UnsupportedTagExtension.cs ├── ReverseMarkdown.Benchmark/ │ ├── Benchmark.md │ ├── CompareBenchmark.cs │ ├── FileHelper.cs │ ├── Files/ │ │ ├── 1000-paragraphs.html │ │ ├── 10k-paragraphs.html │ │ └── huge.html │ ├── Program.cs │ └── ReverseMarkdown.Benchmark.csproj ├── ReverseMarkdown.Test/ │ ├── ChildConverterTests.cs │ ├── Children/ │ │ └── IgnoreAWhenHasClass.cs │ ├── CommonMarkSpecTests.cs │ ├── ConverterTests.Bug255_table_newline_char_issue.verified.md │ ├── ConverterTests.Bug294_Table_bug_with_row_superfluous_newlines.verified.md │ ├── ConverterTests.Bug391_AnchorTagUnnecessarilyIndented.verified.md │ ├── ConverterTests.Bug393_RegressionWithVaryingNewLines.verified.md │ ├── ConverterTests.Bug400_MissingSpanSpaceWithItalics.verified.md │ ├── ConverterTests.Bug403_unexpectedBehaviourWhenTableBodyRowsWithTHCells.verified.md │ ├── ConverterTests.Check_Converter_With_Unknown_Tag_ByPass_Option.verified.md │ ├── ConverterTests.Check_Converter_With_Unknown_Tag_Drop_Option.verified.md │ ├── ConverterTests.Check_Converter_With_Unknown_Tag_PassThrough_Option.verified.md │ ├── ConverterTests.Check_Converter_With_Unknown_Tag_Raise_Option.verified.txt │ ├── ConverterTests.EscapeMarkdownCharsInTextProperly.verified.md │ ├── ConverterTests.Li_With_No_Parent.verified.md │ ├── ConverterTests.SlackFlavored_Bold.verified.md │ ├── ConverterTests.SlackFlavored_Bullets.verified.md │ ├── ConverterTests.SlackFlavored_Italic.verified.md │ ├── ConverterTests.SlackFlavored_Strikethrough.verified.md │ ├── ConverterTests.TestConversionOfMultiParagraphWithHeaders.verified.md │ ├── ConverterTests.WhenAnchorTagContainsImgTag_LinkTextShouldNotBeEscaped.verified.md │ ├── ConverterTests.WhenBoldTagContainsBRTag_ThenConvertToMarkdown.verified.md │ ├── ConverterTests.WhenCommentOverlapTag_WithRemoveComments_ThenDoNotStripContentBetweenComments.verified.md │ ├── ConverterTests.WhenListContainsMultipleParagraphs_ConvertToMarkdownAndIndentSiblings.verified.md │ ├── ConverterTests.WhenListContainsNewlineAndTabBetweenTagBorders_CleanupAndConvertToMarkdown.verified.md │ ├── ConverterTests.WhenListContainsParagraphsOutsideItems_ConvertToMarkdownAndIndentSiblings.verified.md │ ├── ConverterTests.WhenListItemTextContainsLeadingAndTrailingSpacesAndTabs_ThenConvertToMarkdownListItemWithSpacesAndTabsStripped.verified.md │ ├── ConverterTests.WhenRemovedCommentsIsEnabled_CommentsAreRemoved.verified.md │ ├── ConverterTests.WhenStyletagWithBypassOption_ReturnEmpty.verified.md │ ├── ConverterTests.WhenTableCellsWithDataAndP_ThenNewlineBeforeP.verified.md │ ├── ConverterTests.WhenTableCellsWithDiv_ThenDoNotAddNewlines.verified.md │ ├── ConverterTests.WhenTableCellsWithMultipleP_ThenNoNewlines.verified.md │ ├── ConverterTests.WhenTableCellsWithPWithMarkupNewlines_ThenTrimExcessNewlines.verified.md │ ├── ConverterTests.WhenTableCellsWithP_ThenDoNotAddNewlines.verified.md │ ├── ConverterTests.WhenTableCellsWithP_ThenNoNewlines.verified.md │ ├── ConverterTests.WhenTableHeadingWithAlignmentStyles_ThenTableHeaderShouldHaveProperAlignment.verified.md │ ├── ConverterTests.WhenTableRowWithDuplicateStyleKeysAfterTrimming_ThenConvertWithoutException.verified.md │ ├── ConverterTests.WhenTable_CellContainsBr_PreserveBrAndConvertToGFMTable.verified.md │ ├── ConverterTests.WhenTable_CellContainsParagraph_AddBrThenConvertToGFMTable.verified.md │ ├── ConverterTests.WhenTable_Cell_Content_WithNewline_Add_BR_ThenConvertToGFMTable.verified.md │ ├── ConverterTests.WhenTable_ContainsTheadTd_ConvertToGFMTable.verified.md │ ├── ConverterTests.WhenTable_ContainsTheadTh_ConvertToGFMTable.verified.md │ ├── ConverterTests.WhenTable_HasEmptyRow_DropsEmptyRow.verified.md │ ├── ConverterTests.WhenTable_ThenConvertToGFMTable.verified.md │ ├── ConverterTests.WhenTable_WithCaptionAndGithubFlavored_ThenCaptionAppearsAboveTable.verified.md │ ├── ConverterTests.WhenTable_WithCaptionAndNoHeaderRow_EmptyRowHandling_ThenCaptionAppearsAboveTable.verified.md │ ├── ConverterTests.WhenTable_WithCaptionContainingMarkdownChars_ThenHandleProperly.verified.md │ ├── ConverterTests.WhenTable_WithCaptionContainingNestedTags_ThenExtractTextOnly.verified.md │ ├── ConverterTests.WhenTable_WithCaptionContainingNewlines_ThenHandleNewlines.verified.md │ ├── ConverterTests.WhenTable_WithCaptionContainingWhitespace_ThenTrimWhitespace.verified.md │ ├── ConverterTests.WhenTable_WithCaption_ThenCaptionAppearsAboveTable.verified.md │ ├── ConverterTests.WhenTable_WithColSpan_TableHeaderColumnSpansHandling_ThenConvertToGFMTable.verified.md │ ├── ConverterTests.WhenTable_WithEmptyCaption_ThenConvertNormally.verified.md │ ├── ConverterTests.WhenTable_WithoutCaption_ThenConvertNormally.verified.md │ ├── ConverterTests.WhenTable_WithoutHeaderRow_With_TableWithoutHeaderRowHandlingOptionDefault_ThenConvertToGFMTable_WithFirstRowAsHeaderRow.verified.md │ ├── ConverterTests.WhenTable_WithoutHeaderRow_With_TableWithoutHeaderRowHandlingOptionEmptyRow_ThenConvertToGFMTable_WithEmptyHeaderRow.verified.md │ ├── ConverterTests.WhenThereAreBTag_ThenConvertToMarkdownDoubleAsterisks.verified.md │ ├── ConverterTests.WhenThereAreLineBreaksEncompassingParagraphText_It_Should_be_Removed.verified.md │ ├── ConverterTests.WhenThereAreMultipleLinks_ThenConvertThemToMarkdownLinks.verified.md │ ├── ConverterTests.WhenThereAreSemanticContainerTags.verified.md │ ├── ConverterTests.WhenThereAreStrongTag_ThenConvertToMarkdownDoubleAsterisks.verified.md │ ├── ConverterTests.WhenThereHtmlWithHrefAndNoSchema_NotWhitelisted_ThenConvertToPlain.verified.md │ ├── ConverterTests.WhenThereHtmlWithHrefAndNoSchema_WhitelistedEmptyString_ThenConvertToMarkdown.verified.md │ ├── ConverterTests.WhenThereIsAsideTag.verified.md │ ├── ConverterTests.WhenThereIsBase64ImgTag_WithDefaultConfig_ThenIncludeInMarkdown.verified.md │ ├── ConverterTests.WhenThereIsBase64ImgTag_WithSaveToFileConfigButNoDirectory_ThenSkipImage.verified.md │ ├── ConverterTests.WhenThereIsBase64ImgTag_WithSkipConfig_ThenSkipImage.verified.md │ ├── ConverterTests.WhenThereIsBase64JpegImgTag_WithSkipConfig_ThenSkipImage.verified.md │ ├── ConverterTests.WhenThereIsBlockquoteTag_ThenConvertToMarkdownBlockquote.verified.md │ ├── ConverterTests.WhenThereIsBreakTag_ThenConvertToMarkdownDoubleSpacesCarriageReturn.verified.md │ ├── ConverterTests.WhenThereIsEmptyBlockquoteTag_ThenConvertToMarkdownBlockquote.verified.md │ ├── ConverterTests.WhenThereIsEmptyPreTag_ThenConvertToMarkdownPre.verified.md │ ├── ConverterTests.WhenThereIsEmptyPreTag_ThenConvertToMarkdownPre_GFM.verified.md │ ├── ConverterTests.WhenThereIsEncompassingEmOrITag_ThenConvertToMarkdownSingleAsterisks_AnyEmOrITagsInsideAreIgnored.verified.md │ ├── ConverterTests.WhenThereIsEncompassingStrongOrBTag_ThenConvertToMarkdownDoubleAsterisks_AnyStrongOrBTagsInsideAreIgnored.verified.md │ ├── ConverterTests.WhenThereIsH1Tag_ThenConvertToMarkdownHeader.verified.md │ ├── ConverterTests.WhenThereIsH2Tag_ThenConvertToMarkdownHeader.verified.md │ ├── ConverterTests.WhenThereIsH3Tag_ThenConvertToMarkdownHeader.verified.md │ ├── ConverterTests.WhenThereIsH4Tag_ThenConvertToMarkdownHeader.verified.md │ ├── ConverterTests.WhenThereIsH5Tag_ThenConvertToMarkdownHeader.verified.md │ ├── ConverterTests.WhenThereIsH6Tag_ThenConvertToMarkdownHeader.verified.md │ ├── ConverterTests.WhenThereIsHeadingInsideTable_ThenIgnoreHeadingLevel.verified.md │ ├── ConverterTests.WhenThereIsHorizontalRule_ThenConvertToMarkdownHorizontalRule.verified.md │ ├── ConverterTests.WhenThereIsHtmlLinkNotWhitelisted_ThenBypass.verified.md │ ├── ConverterTests.WhenThereIsHtmlLinkWithDisallowedCharsInChildren_ThenEscapeTextInMarkdown.verified.md │ ├── ConverterTests.WhenThereIsHtmlLinkWithParensInHref_ThenEscapeHrefInMarkdown.verified.md │ ├── ConverterTests.WhenThereIsHtmlLinkWithTitle_ThenConvertToMarkdownLink.verified.md │ ├── ConverterTests.WhenThereIsHtmlLinkWithoutHttpSchemaAndNameWithoutScheme_SmartHandling_ThenConvertToMarkdown.verified.md │ ├── ConverterTests.WhenThereIsHtmlLink_ThenConvertToMarkdownLink.verified.md │ ├── ConverterTests.WhenThereIsHtmlWithHrefAndNameMatching_SmartHandling_ThenConvertToPlain.verified.md │ ├── ConverterTests.WhenThereIsHtmlWithHrefAndNameNotMatching_SmartHandling_ThenConvertToMarkdown.verified.md │ ├── ConverterTests.WhenThereIsHtmlWithMailtoSchemeAndNameWithoutScheme_SmartHandling_ThenConvertToPlain.verified.md │ ├── ConverterTests.WhenThereIsHtmlWithProtocolRelativeUrlHrefAndNameNotMatching_SmartHandling_ThenConvertToMarkdown.verified.md │ ├── ConverterTests.WhenThereIsHtmlWithTelSchemeAndNameWithoutScheme_SmartHandling_ThenConvertToPlain.verified.md │ ├── ConverterTests.WhenThereIsImgTagAndSrcWithNoSchema_NotWhitelisted_ThenConvertToPlain.verified.md │ ├── ConverterTests.WhenThereIsImgTagAndSrcWithNoSchema_WhitelistedEmptyString_ThenConvertToMarkdown.verified.md │ ├── ConverterTests.WhenThereIsImgTagWithBracesInAltText_ThenEnsureAltTextIsEscapedInMarkdown.verified.md │ ├── ConverterTests.WhenThereIsImgTagWithHttpProtocolRelativeUrl_ConfigHasWhitelist_ThenConvertToMarkdown.verified.md │ ├── ConverterTests.WhenThereIsImgTagWithMultilineAltText_ThenEnsureNoBlankLinesInMarkdownAltText.verified.md │ ├── ConverterTests.WhenThereIsImgTagWithRelativeUrl_NotWhitelisted_ThenConvertToMarkdown.verified.md │ ├── ConverterTests.WhenThereIsImgTagWithUnixUrl_ConfigHasWhitelist_ThenConvertToMarkdown.verified.md │ ├── ConverterTests.WhenThereIsImgTagWithoutAltText_ThenConvertToMarkdownImageWithoutAltText.verified.md │ ├── ConverterTests.WhenThereIsImgTagWithoutTitle_ThenConvertToMarkdownImageWithoutTitle.verified.md │ ├── ConverterTests.WhenThereIsImgTag_SchemeIsWhitelisted_ThenConvertToMarkdown.verified.md │ ├── ConverterTests.WhenThereIsImgTag_SchemeNotWhitelisted_ThenEmptyOutput.verified.md │ ├── ConverterTests.WhenThereIsImgTag_ThenConvertToMarkdownImage.verified.md │ ├── ConverterTests.WhenThereIsInputListWithGithubFlavoredDisabled_ThenConvertToTypicalMarkdownList.verified.md │ ├── ConverterTests.WhenThereIsInputListWithGithubFlavoredEnabled_ThenConvertToMarkdownCheckList.verified.md │ ├── ConverterTests.WhenThereIsOrderedListWithNestedUnorderedList_ThenConvertToMarkdownListWithNestedList.verified.md │ ├── ConverterTests.WhenThereIsOrderedList_ThenConvertToMarkdownList.verified.md │ ├── ConverterTests.WhenThereIsParagraphTag_ThenConvertToMarkdownDoubleLineBreakBeforeAndAfter.verified.md │ ├── ConverterTests.WhenThereIsPreTag_ThenConvertToMarkdownPre.verified.md │ ├── ConverterTests.WhenThereIsSingleAsteriskInText_ThenConvertToMarkdownEscapedAsterisk.verified.md │ ├── ConverterTests.WhenThereIsUnorderedListAndBulletIsAsterisk_ThenConvertToMarkdownList.verified.md │ ├── ConverterTests.WhenThereIsUnorderedListWithNestedOrderedList_ThenConvertToMarkdownListWithNestedList.verified.md │ ├── ConverterTests.WhenThereIsUnorderedList_ThenConvertToMarkdownList.verified.md │ ├── ConverterTests.WhenThereIsWhitespaceAroundNestedLists_PreventBlankLinesWhenConvertingToMarkdownList.verified.md │ ├── ConverterTests.WhenUnclosedScriptTag_WithBypassUnknownTags_ThenConvertToMarkdown.verified.md │ ├── ConverterTests.WhenUnclosedStyleTag_WithBypassUnknownTags_ThenConvertToMarkdown.verified.md │ ├── ConverterTests.When_AlternatingEmptyAndFilledNestedParagraphs_ThenConvertCorrectly.verified.md │ ├── ConverterTests.When_Anchor_Text_with_Underscore_Do_Not_Escape.verified.md │ ├── ConverterTests.When_BR_With_GitHubFlavored_Config_ThenConvertToGFM_BR.verified.md │ ├── ConverterTests.When_CodeContainsSpacesAndIsSurroundedByWhitespace_Should_NotRemoveSpaces.verified.md │ ├── ConverterTests.When_CodeContainsSpaces_ShouldPreserveSpaces.verified.md │ ├── ConverterTests.When_CodeContainsSpanWithExtraSpaces_Should_NotNormalizeSpaces.verified.md │ ├── ConverterTests.When_ComplexNestedTableIsInTable_LeaveNestedTableAsHtml.verified.md │ ├── ConverterTests.When_Consecutive_Em_Tags_Should_Convert_Properly.verified.md │ ├── ConverterTests.When_Consecutive_Strong_Tags_Should_Convert_Properly.verified.md │ ├── ConverterTests.When_Content_Contains_script_tags_ignore_it.verified.md │ ├── ConverterTests.When_Converting_HTML_Ensure_To_Process_Only_Body.verified.md │ ├── ConverterTests.When_DeeplyNestedParagraphs_WithMalformedHTML_ThenConvertWithoutHanging.verified.md │ ├── ConverterTests.When_DescriptionListTag_ThenConvertToMarkdown_List.verified.md │ ├── ConverterTests.When_EmptyNestedParagraphs_ThenConvertCorrectly.verified.md │ ├── ConverterTests.When_FencedCodeBlocks_Shouldnt_Have_Trailing_Line.verified.md │ ├── ConverterTests.When_Html_Containing_Nested_DIVs_Process_ONLY_Inner_Most_DIV.verified.md │ ├── ConverterTests.When_InlineCode_Shouldnt_Contain_Encoded_Chars.verified.md │ ├── ConverterTests.When_InterleavedParagraphsAndSpans_ThenConvertCorrectly.verified.md │ ├── ConverterTests.When_ManySequentialUnclosedParagraphs_ThenConvertCorrectly.verified.md │ ├── ConverterTests.When_MultipleNestedTablesInTable_LeaveAllNestedTablesAsHtml.verified.md │ ├── ConverterTests.When_NestedParagraphs_FiveLevelsDeep_ThenConvertCorrectly.verified.md │ ├── ConverterTests.When_NestedParagraphs_TenLevelsDeep_ThenConvertCorrectly.verified.md │ ├── ConverterTests.When_NestedSpans_FiveLevelsDeep_ThenConvertCorrectly.verified.md │ ├── ConverterTests.When_NestedTableIsInTable_LeaveNestedTableAsHtml.verified.md │ ├── ConverterTests.When_OrderedListIsInTable_LeaveListAsHtml.verified.md │ ├── ConverterTests.When_PRE_With_Confluence_Lang_Class_Att_And_GitHubFlavored_Config_ThenConvertToGFM_PRE.verified.md │ ├── ConverterTests.When_PRE_With_GitHubFlavored_Config_ThenConvertToGFM_PRE.verified.md │ ├── ConverterTests.When_PRE_With_Github_Site_DIV_Parent_And_GitHubFlavored_Config_ThenConvertToGFM_PRE.verified.md │ ├── ConverterTests.When_PRE_With_HighlightJs_Lang_Class_Att_And_GitHubFlavored_Config_ThenConvertToGFM_PRE.verified.md │ ├── ConverterTests.When_PRE_With_Lang_Highlight_Class_Att_And_GitHubFlavored_Config_ThenConvertToGFM_PRE.verified.md │ ├── ConverterTests.When_PRE_With_Parent_DIV_And_Non_GitHubFlavored_Config_FirstLine_CodeBlock_SpaceIndent_Should_Be_Retained.verified.md │ ├── ConverterTests.When_PRE_Without_Lang_Marker_Class_Att_And_GitHubFlavored_Config_With_DefaultCodeBlockLanguage_ThenConvertToGFM_PRE.verified.md │ ├── ConverterTests.When_PreTag_Contains_IndentedFirstLine_Should_PreserveIndentation.verified.md │ ├── ConverterTests.When_PreTag_Contains_IndentedFirstLine_Should_PreserveIndentation_GFM.verified.md │ ├── ConverterTests.When_PreTag_Within_List_Should_Be_Indented.verified.md │ ├── ConverterTests.When_PreTag_Within_List_Should_Be_Indented_With_GitHub_FlavouredMarkdown.verified.md │ ├── ConverterTests.When_SingleChild_BlockTag_With_Parent_DIV_Ignore_Processing_DIV.verified.md │ ├── ConverterTests.When_Spaces_In_Inline_Tags_Should_Be_Retained.verified.md │ ├── ConverterTests.When_Span_with_newline_Should_Convert_Properly.verified.md │ ├── ConverterTests.When_Strikethrough_And_Nested_Strikethrough.verified.md │ ├── ConverterTests.When_Sup_And_Nested_Sup.verified.md │ ├── ConverterTests.When_SuppressNewlineFlag_PrefixDiv_Should_Be_Empty.verified.md │ ├── ConverterTests.When_Table_Within_List_Should_Be_Indented.verified.md │ ├── ConverterTests.When_Tag_In_PassThoughTags_List_Then_Use_PassThroughConverter.verified.md │ ├── ConverterTests.When_TextContainsAngleBrackets_HexEscapeAngleBrackets.verified.md │ ├── ConverterTests.When_TextContainsBacktickInlineCode_DecodeAngleEntities.verified.md │ ├── ConverterTests.When_TextIsHtmlEncoded_DecodeText.verified.md │ ├── ConverterTests.When_TextWithinParagraphContainsNewlineChars_ConvertNewlineCharsToSpace.verified.md │ ├── ConverterTests.When_Text_Contains_NewLineChars_Should_Not_Convert_To_BR.verified.md │ ├── ConverterTests.When_Text_Contains_NewLineChars_Should_Not_Convert_To_BR_GitHub_Flavoured.verified.md │ ├── ConverterTests.When_UnclosedParagraphsWithSpansAndTextNodes_ThenConvertCorrectly.verified.md │ ├── ConverterTests.When_Underline_Tag_With_AliasConverter_Register_ThenConvertToItalics.verified.md │ ├── ConverterTests.When_Underline_Tag_With_TagAlias_ThenConvertToItalics.verified.md │ ├── ConverterTests.When_Underline_Tag_With_UnknownTagsReplacer_ThenConvertToItalics.verified.md │ ├── ConverterTests.When_UnorderedListIsInTable_LeaveListAsHtml.verified.md │ ├── ConverterTests.cs │ ├── ReverseMarkdown.Test.csproj │ ├── Snippets.Usage.verified.txt │ ├── Snippets.cs │ └── TestData/ │ ├── README.md │ ├── cases.json │ └── commonmark.json └── ReverseMarkdown.sln