Skip to content

Commit 0cbdc92

Browse files
committed
Markdown - code cleanup + updates
1 parent 07cc006 commit 0cbdc92

File tree

4 files changed

+55
-4
lines changed

4 files changed

+55
-4
lines changed

BlazorBootstrap.Demo.RCL/Components/Pages/Markdown/MarkdownDocumentation.razor

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,10 @@
6060
<div class="mb-3"></div>
6161
<Demo Type="typeof(Markdown_Demo_09_Lists_E_Nested)" Tabs="true" />
6262

63+
<SectionHeading Size="HeadingSize.H2" Text="Links" PageUrl="@pageUrl" HashTagName="links" />
64+
<div class="mb-3"></div>
65+
<Demo Type="typeof(Markdown_Demo_10_Links)" Tabs="true" />
66+
6367
<SectionHeading Size="HeadingSize.H2" Text="Images" PageUrl="@pageUrl" HashTagName="images" />
6468
<div class="mb-3"></div>
6569
<Demo Type="typeof(Markdown_Demo_11_Images)" Tabs="true" />
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
<Markdown>
2-
Links
2+
[Google](https://www.google.com)
33
</Markdown>
Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
11
<Markdown>
2-
Checklist or task list
2+
- [ ] A
3+
- [ ] B
4+
- [ ] C
5+
- [x] A
6+
- [x] B
7+
- [x] C
38
</Markdown>

blazorbootstrap/Components/Markdown/Markdown.razor.cs

Lines changed: 44 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)