From fca7321639f77bbf825dc897156d7a21993a2c69 Mon Sep 17 00:00:00 2001 From: Yash Srivastav Date: Sat, 8 Jun 2019 01:05:23 +0530 Subject: Message list: implement index-format option --- lib/address.go | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 lib/address.go (limited to 'lib/address.go') diff --git a/lib/address.go b/lib/address.go new file mode 100644 index 0000000..b557195 --- /dev/null +++ b/lib/address.go @@ -0,0 +1,40 @@ +package lib + +import ( + "bytes" + "fmt" + "regexp" + "strings" + + "github.com/emersion/go-imap" +) + +var ( + atom *regexp.Regexp = regexp.MustCompile("^[a-z0-9!#$%7'*+-/=?^_`{}|~ ]+$") +) + +func FormatAddresses(addrs []*imap.Address) string { + val := bytes.Buffer{} + for i, addr := range addrs { + val.WriteString(FormatAddress(addr)) + if i != len(addrs)-1 { + val.WriteString(", ") + } + } + return val.String() +} + +func FormatAddress(addr *imap.Address) string { + if addr.PersonalName != "" { + if atom.MatchString(addr.PersonalName) { + return fmt.Sprintf("%s <%s@%s>", + addr.PersonalName, addr.MailboxName, addr.HostName) + } else { + return fmt.Sprintf("\"%s\" <%s@%s>", + strings.ReplaceAll(addr.PersonalName, "\"", "'"), + addr.MailboxName, addr.HostName) + } + } else { + return fmt.Sprintf("<%s@%s>", addr.MailboxName, addr.HostName) + } +} -- cgit v1.2.3