diff options
Diffstat (limited to 'internal/platforms/linkedin/escapes.go')
| -rw-r--r-- | internal/platforms/linkedin/escapes.go | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/internal/platforms/linkedin/escapes.go b/internal/platforms/linkedin/escapes.go new file mode 100644 index 0000000..5f803a5 --- /dev/null +++ b/internal/platforms/linkedin/escapes.go @@ -0,0 +1,39 @@ +package linkedin + +import ( + "strings" +) + +// https://learn.microsoft.com/en-us/linkedin/marketing/community-management/shares/little-text-format?view=li-lms-2024-01#language-grammar +func escapeLinkedInText(input string) string { + var builder strings.Builder + + reservedChars := map[rune]string{ + '"': "\\\"", + '|': "\\|", + '{': "\\{", + '}': "\\}", + // '@': "\\@", + '[': "\\[", + ']': "\\]", + '(': "\\(", + ')': "\\)", + '<': "\\<", + '>': "\\>", + //'#': "\\#", + '\\': "\\\\", + '*': "\\*", + '_': "\\_", + '~': "\\~", + } + + for _, char := range input { + if escapeSeq, ok := reservedChars[char]; ok { + builder.WriteString(escapeSeq) + } else { + builder.WriteRune(char) + } + } + + return builder.String() +} |
