@@ -65,6 +65,7 @@ private void ParseMarkdown()
6565 markup = ConvertMarkdownParagraphsToHtml ( markup ) ;
6666 markup = ConvertMarkdownLineBreaksToHtml ( markup ) ;
6767 markup = ConvertMarkdownImageToHtml ( markup ) ;
68+ markup = ConvertMarkdownLinksToHtml ( markup ) ;
6869 html = markup . Replace ( CODE_HIGHLIGHTING_LINE_SEPERATOR , "\n " ) ;
6970 }
7071
@@ -104,6 +105,7 @@ List<string> GetLines()
104105 return inputs ;
105106 }
106107
108+ // Headers
107109 private string ConvertMakdownHeadersToHtml ( string markup )
108110 {
109111 var lines = markup . Split ( "\n " ) ;
@@ -154,6 +156,7 @@ private string ConvertMakdownHeadersToHtml(string markup)
154156 return string . Join ( "" , parsedLines ) ;
155157 }
156158
159+ // Blockquotes
157160 private string ConvertMarkdownBlockquotesToHtml ( string markup )
158161 {
159162 var lines = markup . Split ( "\n " ) ;
@@ -231,6 +234,7 @@ private string ConvertMarkdownBlockquotesToHtml(string markup)
231234 return string . Join ( "" , htmlLines ) ;
232235 }
233236
237+ // HorizontalRules
234238 private string ConvertMarkdownHorizontalRulesToHtml ( string markup )
235239 {
236240 var lines = markup . Split ( "\n " ) ;
@@ -262,6 +266,7 @@ private string ConvertMarkdownHorizontalRulesToHtml(string markup)
262266 return string . Join ( "" , parsedLines ) ;
263267 }
264268
269+ // Emphasis
265270 private string ConvertMarkdownEmphasisToHtml ( string markup )
266271 {
267272 var lines = markup . Split ( "\n " ) ;
@@ -294,6 +299,7 @@ private string ConvertMarkdownEmphasisToHtml(string markup)
294299 return string . Join ( "\n " , parsedLines ) ;
295300 }
296301
302+ // Code Highlighting
297303 private string ConvertMarkdownCodeHighlightingToHtml ( string markup )
298304 {
299305 var lines = markup . Split ( "\n " ) ;
@@ -335,6 +341,7 @@ private string ConvertMarkdownCodeHighlightingToHtml(string markup)
335341 return string . Join ( "" , parsedLines ) ;
336342 }
337343
344+ // Lists
338345 private string ConvertMarkdownListToHtml ( string markup )
339346 {
340347 var lines = markup . Split ( "\n " ) ;
@@ -461,6 +468,7 @@ private string ConvertMarkdownListToHtml(string markup)
461468 return string . Join ( "" , htmlLines ) ;
462469 }
463470
471+ // Tables
464472 private string ConvertMarkdownTableToHtml ( string markup )
465473 {
466474 var lines = markup . Split ( "\n " ) ;
@@ -538,6 +546,7 @@ private string ConvertMarkdownTableToHtml(string markup)
538546 return string . Join ( "\n " , parsedLines ) ;
539547 }
540548
549+ // Paragraphs
541550 private string ConvertMarkdownParagraphsToHtml ( string markup )
542551 {
543552 var lines = markup . Split ( "\n \n \n " ) ;
@@ -560,11 +569,26 @@ private string ConvertMarkdownParagraphsToHtml(string markup)
560569 return string . Join ( "" , parsedLines ) ;
561570 }
562571
572+ // Line breaks
563573 private string ConvertMarkdownLineBreaksToHtml ( string markup ) => markup . Replace ( "\n " , "<br />" ) ;
564574
565575 // Links
576+ private string ConvertMarkdownLinksToHtml ( string markup )
577+ {
578+ // Pattern to match Markdown link syntax: [Link Text](Link URL)
579+ var pattern = @"\[(.*?)\]\((.*?)\)" ;
580+
581+ // Replace Markdown link syntax with HTML <a> tag
582+ var html = Regex . Replace ( markup , pattern , match =>
583+ {
584+ var linkText = match . Groups [ 1 ] . Value ;
585+ var linkUrl = match . Groups [ 2 ] . Value ;
586+
587+ return $ "<a href=\" { linkUrl } \" >{ linkText } </a>";
588+ } ) ;
566589
567- // Anchor links
590+ return html ;
591+ }
568592
569593 private string ConvertMarkdownImageToHtml ( string markup )
570594 {
@@ -605,8 +629,26 @@ private string ConvertMarkdownImageToHtml(string markup)
605629 return html ;
606630 }
607631
632+ //private string ConvertMarkdownChecklistToHtml(string markup)
633+ //{
634+ // // Pattern to match Markdown checklist syntax: - [ ] or - [x] or 1. [ ] or 1. [x]
635+ // var pattern = @"^(\s*[-\d]+\.\s*\[([ xX])\])\s*(.*)";
636+
637+ // // Replace Markdown checklist syntax with HTML <input type="checkbox"> tag
638+ // var html = Regex.Replace(markup, pattern, match =>
639+ // {
640+ // var checkbox = match.Groups[2].Value.Trim().ToLower() == "x" ? "checked" : "";
641+ // var content = match.Groups[3].Value;
642+
643+ // return $"<li><input type=\"checkbox\" {checkbox} disabled> {content}</li>";
644+ // }, RegexOptions.Multiline);
645+
646+ // // Wrap the checkboxes in a <ul> or <ol> tag
647+ // html = Regex.Replace(html, @"((<li>.*?</li>\s*)+)", "<ul>$1</ul>", RegexOptions.Singleline);
648+
649+ // return html;
650+ //}
608651
609- // Checklist or task list
610652
611653 // Emoji
612654
0 commit comments