diff --git a/src/utils/textstyleparser.go b/src/utils/textstyleparser.go index f732dc7..8fe4adf 100644 --- a/src/utils/textstyleparser.go +++ b/src/utils/textstyleparser.go @@ -27,13 +27,14 @@ func ParseMarkdownMessage(message string) (string, []string) { state := None signalCliFormatStrings := []string{} fullString := "" + lastChar := "" runes := []rune(message) //turn string to slice for i, v := range runes { //iterate through rune if v == '*' { if state == ItalicBegin { - if i-1 == textFormatBegin { + if lastChar == "*" { state = BoldBegin textFormat = Bold textFormatBegin = i - numOfAsterisks @@ -56,6 +57,7 @@ func ParseMarkdownMessage(message string) (string, []string) { textFormatLength += 1 fullString += string(v) } + lastChar = string(v) if state == ItalicEnd || state == BoldEnd2 { signalCliFormatStrings = append(signalCliFormatStrings, strconv.Itoa(textFormatBegin)+":"+strconv.Itoa(textFormatLength)+":"+textFormat) diff --git a/src/utils/textstyleparser_test.go b/src/utils/textstyleparser_test.go index e109aee..8e3c491 100644 --- a/src/utils/textstyleparser_test.go +++ b/src/utils/textstyleparser_test.go @@ -32,3 +32,9 @@ func TestBoldAndItalicMessage(t *testing.T) { expectMessageEqual(t, message, "This is a bold and italic message") expectFormatStringsEqual(t, signalCliFormatStrings, []string{"10:4:BOLD", "19:6:ITALIC"}) } + +func TestTwoBoldFormattedStrings(t *testing.T) { + message, signalCliFormatStrings := ParseMarkdownMessage("This is a **bold** and another **bold** message") + expectMessageEqual(t, message, "This is a bold and another bold message") + expectFormatStringsEqual(t, signalCliFormatStrings, []string{"10:4:BOLD", "27:4:BOLD"}) +}