subject.go

 1package threading
 2
 3import (
 4	"regexp"
 5	"strings"
 6)
 7
 8var subjectPrefixRE = regexp.MustCompile(`(?i)^(Re|Fwd|Fw|AW|WG|Tr|Reé|Resp|SV|VS|RV|ENC|Antw|Odp|R|I)\s*:\s*`)
 9
10func canonicalSubject(s string) string {
11	s = strings.TrimSpace(s)
12	for {
13		next := subjectPrefixRE.ReplaceAllString(s, "")
14		if next == s {
15			break
16		}
17		s = strings.TrimSpace(next)
18	}
19	return strings.ToLower(strings.TrimSpace(s))
20}