summaryrefslogtreecommitdiff
path: root/internal/platforms/linkedin/escapes.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/platforms/linkedin/escapes.go')
-rw-r--r--internal/platforms/linkedin/escapes.go39
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()
+}