کد تبدیل markdown به HTML که فعلا فقط برای قسمت کد از زبان ویژوال بیسیک نوشتمش:
Protected Friend Shared ContentList As New List(Of String)
Private Shared CodeMatch As New Regex("[\`]{3}\w+\n+([\s\S]+)\n+[\`]{3}")
Protected Friend Shared Function Markdown2HTML(ByVal Expression As String) As String
Dim Output As String = Expression.Replace("<", "<").Replace(">", ">")
Dim Start As Integer = 0, Value, Language, Code As String
ContentList.Clear()
redoCode: With CodeMatch.Matches(Output, Start)
For I = 0 To .Count - 1
With .Item(I)
If .Success = False Then Continue For
If I = 0 Then
Value = Output.Substring(Start, .Index)
If .Index > 0 And Value.Length > 0 Then
' As MarkdownText....
ContentList.Add(Value.Replace(Space(1), " ").
Replace(vbLf, "<br>"))
End If
End If
' As Code....
Dim Index As Integer = InStr(3, .Value, vbLf, CompareMethod.Binary)
If Index > 0 Then
Language = .Value.Substring(3, (Index - 3) - 1)
Code = .Value.Substring((3 + Language.Length) + 1, .Length - (6 + Language.Length + 1))
Select Case Language.ToLower
Case "vb", "vbnet", "vb.net", "visualbasic"
VisualBasic.Highlight(Code)
Case Else
End Select
Dim Expr As String = String.Format("<pre><code>{1}</code></pre>",
vbLf,
Code)
VisualBasic.HighlightComments(Expr)
SharedHighlight.HighLightStrings(Expr)
Expr = Expr.Replace(Space(1), " ").Replace(vbLf, "<br>")
Start = .Index + .Length
ContentList.Add(Expr)
Else
Start = .Index + .Length
End If
GoTo redoCode
End With
Next
End With
If Start < Output.Length - 1 Then
ContentList.Add(Output.Substring(Start).
Replace(Space(1), " ").
Replace(vbCrLf, "<br>"))
End If
Return Join(ContentList.ToArray, "")
End Function
نمونه:
Screenshot 2024-09-24 211046.jpg