diff --git a/wrapBody.go b/wrapBody.go index 9514c57e75b1eb59d3ba6fdeda7df4f2133dc4df..3c0ac3291f5e99736d6890bc6114e173745549ef 100644 --- a/wrapBody.go +++ b/wrapBody.go @@ -14,15 +14,27 @@ var numberedListRegex = regexp.MustCompile(`^\d+\.\s`) func formatBody(body string) (string, error) { lines := strings.Split(body, "\n") var result []string + var plainTextBuffer []string + + flushPlainText := func() { + if len(plainTextBuffer) > 0 { + joined := strings.Join(plainTextBuffer, " ") + wrapped := wordWrap(joined, 72) + result = append(result, wrapped) + plainTextBuffer = nil + } + } for _, line := range lines { trimmed := strings.TrimSpace(line) if trimmed == "" { + flushPlainText() result = append(result, "") continue } if strings.HasPrefix(trimmed, "- ") || strings.HasPrefix(trimmed, "* ") { + flushPlainText() marker := trimmed[:2] content := trimmed[2:] wrapped := wrapWithHangingIndent(marker, " ", content, 72) @@ -31,6 +43,7 @@ func formatBody(body string) (string, error) { } if numberedListRegex.MatchString(trimmed) { + flushPlainText() parts := strings.SplitN(trimmed, " ", 2) marker := parts[0] + " " content := "" @@ -43,9 +56,11 @@ func formatBody(body string) (string, error) { continue } - result = append(result, wordWrap(trimmed, 72)) + plainTextBuffer = append(plainTextBuffer, trimmed) } + flushPlainText() + return strings.Join(result, "\n"), nil }