github.com/daixiang0/gci@v0.13.0/pkg/section/prefix.go (about)

     1  package section
     2  
     3  import (
     4  	"fmt"
     5  	"strings"
     6  
     7  	"github.com/daixiang0/gci/pkg/parse"
     8  	"github.com/daixiang0/gci/pkg/specificity"
     9  )
    10  
    11  type Custom struct {
    12  	Prefix string
    13  }
    14  
    15  // CustomSeparator allows you to group multiple custom prefix together in the same section
    16  // gci diff -s standard -s default -s prefix(github.com/company,gitlab.com/company,companysuffix)
    17  const CustomSeparator = ","
    18  
    19  const CustomType = "custom"
    20  
    21  func (c Custom) MatchSpecificity(spec *parse.GciImports) specificity.MatchSpecificity {
    22  	for _, prefix := range strings.Split(c.Prefix, CustomSeparator) {
    23  		prefix = strings.TrimSpace(prefix)
    24  		if strings.HasPrefix(spec.Path, prefix) {
    25  			return specificity.Match{Length: len(prefix)}
    26  		}
    27  	}
    28  
    29  	return specificity.MisMatch{}
    30  }
    31  
    32  func (c Custom) String() string {
    33  	return fmt.Sprintf("prefix(%s)", c.Prefix)
    34  }
    35  
    36  func (c Custom) Type() string {
    37  	return CustomType
    38  }