Skip to content
Snippets Groups Projects
VersionSliceByte.go 938 B
Newer Older
  • Learn to ignore specific revisions
  • Md. Alim Ul Karim's avatar
    Md. Alim Ul Karim committed
    package corecmp
    
    Md. Alim Ul Karim's avatar
    Md. Alim Ul Karim committed
    import "gitlab.com/evatix-go/core/corecomparator"
    
    func VersionSliceByte(leftVersions, rightVersions []byte) corecomparator.Compare {
    
    	if leftVersions == nil && rightVersions == nil {
    
    Md. Alim Ul Karim's avatar
    Md. Alim Ul Karim committed
    		return corecomparator.Equal
    
    	}
    
    	if leftVersions == nil || rightVersions == nil {
    
    Md. Alim Ul Karim's avatar
    Md. Alim Ul Karim committed
    		return corecomparator.NotEqual
    
    	}
    
    	leftLen := len(leftVersions)
    	rightLen := len(rightVersions)
    
    Md. Alim Ul Karim's avatar
    Md. Alim Ul Karim committed
    	minLength := corecomparator.MinLength(
    
    		leftLen,
    		rightLen)
    
    	for i := 0; i < minLength; i++ {
    		cLeft := leftVersions[i]
    		cRight := rightVersions[i]
    
    		if cLeft == cRight {
    			continue
    		} else if cLeft < cRight {
    
    Md. Alim Ul Karim's avatar
    Md. Alim Ul Karim committed
    			return corecomparator.LeftLess
    
    		} else if cLeft > cRight {
    
    Md. Alim Ul Karim's avatar
    Md. Alim Ul Karim committed
    			return corecomparator.LeftGreater
    
    Md. Alim Ul Karim's avatar
    Md. Alim Ul Karim committed
    		return corecomparator.Equal
    
    	} else if leftLen < rightLen {
    
    Md. Alim Ul Karim's avatar
    Md. Alim Ul Karim committed
    		return corecomparator.LeftLess
    
    	} else if leftLen > rightLen {
    
    Md. Alim Ul Karim's avatar
    Md. Alim Ul Karim committed
    		return corecomparator.LeftGreater
    
    Md. Alim Ul Karim's avatar
    Md. Alim Ul Karim committed
    	return corecomparator.NotEqual