in pkg/genlib/fields/fields.go [51:85]
func normaliseFields(fields Fields) (Fields, error) {
sort.Sort(fields)
normalisedFields := make(Fields, 0, len(fields))
for _, field := range fields {
if !strings.Contains(field.Name, "*") {
normalisedFields = append(normalisedFields, field)
continue
}
normalizationPattern := strings.NewReplacer(".", "\\.", "*", ".+").Replace(field.Name)
re, err := regexp.Compile(normalizationPattern)
if err != nil {
return nil, err
}
hasMatch := false
for _, otherField := range fields {
if otherField.Name == field.Name {
continue
}
if re.MatchString(otherField.Name) {
hasMatch = true
break
}
}
if !hasMatch {
normalisedFields = append(normalisedFields, field)
}
}
sort.Sort(normalisedFields)
return normalisedFields, nil
}