Sub Activity_Create(FirstTime As Boolean)
Activity.LoadLayout("Layout")
Dim markdownText As String = $"This is a **bold** Text,
an *italic* Text
and a [Link1](http://example1.com)
and a [Link2](http://example2.com)."$
Dim cs As CSBuilder = ProcessMarkdownToCSBuilder(markdownText)
Label1.Text = cs
cs.EnableClickEvents(Label1)
End Sub
Sub ProcessMarkdownToCSBuilder(markdown As String) As CSBuilder
Dim cs As CSBuilder
cs.Initialize
Dim boldPattern As String = "\*\*(.*?)\*\*" ' Regex for **Text**
Dim italicPattern As String = "\*(.*?)\*" ' Regex for *Text*
Dim urlPattern As String = "\[(.*?)\]\((.*?)\)" ' Regex for [Text](URL)
Dim combinedPattern As String = boldPattern & "|" & italicPattern & "|" & urlPattern
Dim matcher As Matcher = Regex.Matcher(combinedPattern, markdown)
Dim lastEnd As Int = 0
Do While matcher.Find
cs.Append(markdown.SubString2(lastEnd, matcher.GetStart(0)))
If matcher.Group(1) <> Null Then
cs.Typeface(Typeface.DEFAULT_BOLD).Append(matcher.Group(1)).PopAll
Else If matcher.Group(2) <> Null Then
cs.Typeface(Typeface.CreateNew(Typeface.DEFAULT,Typeface.STYLE_ITALIC)).Append(matcher.Group(2)).PopAll
Else If matcher.Group(3) <> Null And matcher.Group(4) <> Null Then
cs.Color(Colors.Blue).Clickable("cs", matcher.Group(4)).Append(matcher.Group(3)).PopAll
End If
lastEnd = matcher.GetEnd(0)
Loop
cs.Append(markdown.SubString(lastEnd))
Return cs
End Sub
Sub cs_Click(cstag As Object)
Log($"Clicked on: ${cstag}"$)
Label2.Text = Label2.Text & CRLF & cstag
End Sub