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

     1  package specificity
     2  
     3  type specificityClass int
     4  
     5  const (
     6  	MisMatchClass    = 0
     7  	DefaultClass     = 10
     8  	StandardClass    = 20
     9  	MatchClass       = 30
    10  	NameClass        = 40
    11  	LocalModuleClass = 50
    12  )
    13  
    14  // MatchSpecificity is used to determine which section matches an import best
    15  type MatchSpecificity interface {
    16  	IsMoreSpecific(than MatchSpecificity) bool
    17  	Equal(to MatchSpecificity) bool
    18  	class() specificityClass
    19  }
    20  
    21  func isMoreSpecific(this, than MatchSpecificity) bool {
    22  	return this.class() > than.class()
    23  }
    24  
    25  func equalSpecificity(base, to MatchSpecificity) bool {
    26  	// m.class() == to.class() would not work for Match
    27  	return !base.IsMoreSpecific(to) && !to.IsMoreSpecific(base)
    28  }