github.com/status-im/status-go@v1.1.0/services/wallet/thirdparty/utils/symbols.go (about)

     1  package utils
     2  
     3  import "strings"
     4  
     5  var renameMapping = map[string]string{
     6  	"STT": "SNT",
     7  }
     8  
     9  func RenameSymbols(symbols []string) (renames []string) {
    10  	for _, symbol := range symbols {
    11  		renames = append(renames, GetRealSymbol(symbol))
    12  	}
    13  	return
    14  }
    15  
    16  func RemoveDuplicates(strings []string) []string {
    17  	uniqueStrings := make(map[string]bool)
    18  	var uniqueSlice []string
    19  	for _, str := range strings {
    20  		if !uniqueStrings[str] {
    21  			uniqueStrings[str] = true
    22  			uniqueSlice = append(uniqueSlice, str)
    23  		}
    24  	}
    25  	return uniqueSlice
    26  }
    27  
    28  func GetRealSymbol(symbol string) string {
    29  	if val, ok := renameMapping[strings.ToUpper(symbol)]; ok {
    30  		return val
    31  	}
    32  	return strings.ToUpper(symbol)
    33  }
    34  
    35  func ChunkSymbols(symbols []string, chunkSizeOptional ...int) [][]string {
    36  	var chunks [][]string
    37  	chunkSize := 100
    38  	if len(chunkSizeOptional) > 0 {
    39  		chunkSize = chunkSizeOptional[0]
    40  	}
    41  
    42  	for i := 0; i < len(symbols); i += chunkSize {
    43  		end := i + chunkSize
    44  
    45  		if end > len(symbols) {
    46  			end = len(symbols)
    47  		}
    48  
    49  		chunks = append(chunks, symbols[i:end])
    50  	}
    51  
    52  	return chunks
    53  }