From e804103951a0fb01471d0670773c2bc5566e117a Mon Sep 17 00:00:00 2001 From: MkQtS <81752398+MkQtS@users.noreply.github.com> Date: Fri, 2 Jan 2026 01:02:41 +0800 Subject: [PATCH] Remove support for partial include This reverts e640ac27834550c9182c486ea180bbd3b0d4ba75 It is problematic and I will implement a new one --- main.go | 73 +++++++-------------------------------------------------- 1 file changed, 8 insertions(+), 65 deletions(-) diff --git a/main.go b/main.go index 64a07316..c4b822c2 100644 --- a/main.go +++ b/main.go @@ -191,43 +191,6 @@ func Load(path string) (*List, error) { return list, nil } -func isMatchAttr(Attrs []string, includeKey string) bool { - isMatch := false - mustMatch := true - matchName := includeKey - if strings.HasPrefix(includeKey, "!") { - isMatch = true - mustMatch = false - matchName = strings.TrimLeft(includeKey, "!") - } - - for _, Attr := range Attrs { - if mustMatch { - if matchName == Attr { - isMatch = true - break - } - } else { - if matchName == Attr { - isMatch = false - break - } - } - } - return isMatch -} - -func createIncludeAttrEntrys(list *List, matchAttr string) []Entry { - newEntryList := make([]Entry, 0, len(list.Entry)) - for _, entry := range list.Entry { - matched := isMatchAttr(entry.Attrs, matchAttr) - if matched { - newEntryList = append(newEntryList, entry) - } - } - return newEntryList -} - func ParseList(list *List, ref map[string]*List) (*ParsedList, error) { pl := &ParsedList{ Name: list.Name, @@ -240,35 +203,15 @@ func ParseList(list *List, ref map[string]*List) (*ParsedList, error) { for _, entry := range entryList { if entry.Type == RuleTypeInclude { refName := strings.ToUpper(entry.Value) - if entry.Attrs != nil { - for _, attr := range entry.Attrs { - InclusionName := strings.ToUpper(refName + "@" + attr) - if pl.Inclusion[InclusionName] { - continue - } - pl.Inclusion[InclusionName] = true - - refList := ref[refName] - if refList == nil { - return nil, fmt.Errorf("list not found: %s", entry.Value) - } - attrEntrys := createIncludeAttrEntrys(refList, attr) - if len(attrEntrys) != 0 { - newEntryList = append(newEntryList, attrEntrys...) - } - } - } else { - InclusionName := refName - if pl.Inclusion[InclusionName] { - continue - } - pl.Inclusion[InclusionName] = true - refList := ref[refName] - if refList == nil { - return nil, fmt.Errorf("list not found: %s", entry.Value) - } - newEntryList = append(newEntryList, refList.Entry...) + if pl.Inclusion[refName] { + continue } + pl.Inclusion[refName] = true + refList := ref[refName] + if refList == nil { + return nil, fmt.Errorf("list not found: %s", entry.Value) + } + newEntryList = append(newEntryList, refList.Entry...) hasInclude = true } else { newEntryList = append(newEntryList, entry)