Move findPlaintext / findFirstNonMultipart to utils

They are used by more than one command and as such need to be in a common file.
This commit is contained in:
Reto Brunner 2020-05-17 12:09:34 +02:00
parent cff4476f3b
commit d48ea6231c
2 changed files with 32 additions and 31 deletions

View file

@ -196,34 +196,3 @@ func (reply) Execute(aerc *widgets.Aerc, args []string) error {
return addTab()
}
}
func findPlaintext(bs *models.BodyStructure, path []int) []int {
for i, part := range bs.Parts {
cur := append(path, i+1)
if strings.ToLower(part.MIMEType) == "text" &&
strings.ToLower(part.MIMESubType) == "plain" {
return cur
}
if strings.ToLower(part.MIMEType) == "multipart" {
if path := findPlaintext(part, cur); path != nil {
return path
}
}
}
return nil
}
func findFirstNonMultipart(bs *models.BodyStructure, path []int) []int {
for i, part := range bs.Parts {
cur := append(path, i+1)
mimetype := strings.ToLower(part.MIMEType)
if mimetype != "multipart" {
return path
} else if mimetype == "multipart" {
if path := findPlaintext(part, cur); path != nil {
return path
}
}
}
return nil
}

View file

@ -2,6 +2,7 @@ package msg
import (
"errors"
"strings"
"git.sr.ht/~sircmpwn/aerc/commands"
"git.sr.ht/~sircmpwn/aerc/lib"
@ -48,3 +49,34 @@ func (h *helper) messages() ([]*models.MessageInfo, error) {
}
return commands.MsgInfoFromUids(store, uid)
}
func findPlaintext(bs *models.BodyStructure, path []int) []int {
for i, part := range bs.Parts {
cur := append(path, i+1)
if strings.ToLower(part.MIMEType) == "text" &&
strings.ToLower(part.MIMESubType) == "plain" {
return cur
}
if strings.ToLower(part.MIMEType) == "multipart" {
if path := findPlaintext(part, cur); path != nil {
return path
}
}
}
return nil
}
func findFirstNonMultipart(bs *models.BodyStructure, path []int) []int {
for i, part := range bs.Parts {
cur := append(path, i+1)
mimetype := strings.ToLower(part.MIMEType)
if mimetype != "multipart" {
return path
} else if mimetype == "multipart" {
if path := findPlaintext(part, cur); path != nil {
return path
}
}
}
return nil
}