dirlist: add format specifier to compact folder name
Add the format specifier %N to the dirlist-format to display compacted folder names. A folder such as INBOX/WORK/PROJECT will be compacted to I/W/PROJECT in the directoy list. Signed-off-by: Koni Marti <koni.marti@gmail.com> Tested-by: Tim Culverhouse <tim@timculverhouse.com>
This commit is contained in:
parent
8f976af17b
commit
e1ae7b80cc
3 changed files with 33 additions and 0 deletions
lib/format
|
@ -39,6 +39,33 @@ func FormatAddresses(l []*mail.Address) string {
|
|||
return strings.Join(formatted, ", ")
|
||||
}
|
||||
|
||||
// CompactPath reduces a directory path into a compact form. The directory
|
||||
// name will be split with the provided separator and each part will be reduced
|
||||
// to the first letter in its name: INBOX/01_WORK/PROJECT will become
|
||||
// I/W/PROJECT.
|
||||
func CompactPath(name string, sep rune) (compact string) {
|
||||
parts := strings.Split(name, string(sep))
|
||||
for i, part := range parts {
|
||||
if i == len(parts)-1 {
|
||||
compact += part
|
||||
} else {
|
||||
if len(part) != 0 {
|
||||
r := part[0]
|
||||
for i := 0; i < len(part)-1; i++ {
|
||||
if unicode.IsLetter(rune(part[i])) {
|
||||
r = part[i]
|
||||
break
|
||||
}
|
||||
}
|
||||
compact += fmt.Sprintf("%c%c", r, sep)
|
||||
} else {
|
||||
compact += fmt.Sprintf("%c", sep)
|
||||
}
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
type Ctx struct {
|
||||
FromAddress string
|
||||
AccountName string
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue