Files
v2dat/cmd/unpack/utils.go
Urle Sistiana fc8c213056 init
2022-12-15 11:19:07 +08:00

55 lines
1.0 KiB
Go

package unpack
import (
"github.com/urlesistiana/v2dat/mlog"
"github.com/urlesistiana/v2dat/v2data"
"path/filepath"
"strings"
)
var logger = mlog.L()
func splitAttrs(s string) (string, map[string]struct{}) {
tag, attrs, ok := strings.Cut(s, "@")
if ok {
m := make(map[string]struct{})
for _, attr := range strings.Split(attrs, "@") {
m[attr] = struct{}{}
}
return tag, m
}
return s, nil
}
// filterAttrs filter entries that do not have any of given attrs.
// If no attr was given, filterAttrs returns in.
func filterAttrs(in []*v2data.Domain, attrs map[string]struct{}) []*v2data.Domain {
if len(attrs) == 0 {
return in
}
out := make([]*v2data.Domain, 0)
for _, d := range in {
hasAttr := false
for _, attr := range d.Attribute {
if _, ok := attrs[attr.Key]; ok {
hasAttr = true
break
}
}
if !hasAttr {
continue
}
out = append(out, d)
}
return out
}
func fileName(f string) string {
f = filepath.Base(f)
if i := strings.LastIndexByte(f, '.'); i == -1 {
return f
} else {
return f[:i]
}
}