feat(aa-log): minor improvment in rule generation & formatting.

This commit is contained in:
Alexandre Pujol 2024-09-26 22:15:46 +01:00
parent fbdf9cea64
commit 83bc7d3ade
No known key found for this signature in database
GPG key ID: C5469996F0DF68EC
7 changed files with 97 additions and 34 deletions

View file

@ -94,7 +94,7 @@ func (r Rules) Delete(i int) Rules {
}
func (r Rules) DeleteKind(kind Kind) Rules {
res := make(Rules, 0)
res := make(Rules, 0, len(r))
for _, rule := range r {
if rule == nil {
continue
@ -106,8 +106,8 @@ func (r Rules) DeleteKind(kind Kind) Rules {
return res
}
func (r Rules) Filter(filter Kind) Rules {
res := make(Rules, 0)
func (r Rules) FilterOut(filter Kind) Rules {
res := make(Rules, 0, len(r))
for _, rule := range r {
if rule == nil {
continue
@ -119,8 +119,21 @@ func (r Rules) Filter(filter Kind) Rules {
return res
}
func (r Rules) Filter(filter Kind) Rules {
res := make(Rules, 0, len(r))
for _, rule := range r {
if rule == nil {
continue
}
if rule.Kind() == filter {
res = append(res, rule)
}
}
return res
}
func (r Rules) GetVariables() []*Variable {
res := make([]*Variable, 0)
res := make([]*Variable, 0, len(r))
for _, rule := range r {
switch rule := rule.(type) {
case *Variable:
@ -131,7 +144,7 @@ func (r Rules) GetVariables() []*Variable {
}
func (r Rules) GetIncludes() []*Include {
res := make([]*Include, 0)
res := make([]*Include, 0, len(r))
for _, rule := range r {
switch rule := rule.(type) {
case *Include:
@ -247,3 +260,20 @@ func (r Rules) Format() Rules {
r.setPaddings(paddingsIndex, paddingsMaxLen)
return r
}
// ParaRules is a slice of Rules grouped by paragraph
type ParaRules []Rules
func (r ParaRules) Flatten() Rules {
totalLen := 0
for i := range r {
totalLen += len(r[i])
}
res := make(Rules, 0, totalLen)
for i := range r {
res = append(res, r[i]...)
}
return res
}