status-im/status-go

View on GitHub
services/wallet/thirdparty/utils/symbols.go

Summary

Maintainability
A
0 mins
Test Coverage
F
0%
package utils

import "strings"

var renameMapping = map[string]string{
    "STT": "SNT",
}

func RenameSymbols(symbols []string) (renames []string) {
    for _, symbol := range symbols {
        renames = append(renames, GetRealSymbol(symbol))
    }
    return
}

func RemoveDuplicates(strings []string) []string {
    uniqueStrings := make(map[string]bool)
    var uniqueSlice []string
    for _, str := range strings {
        if !uniqueStrings[str] {
            uniqueStrings[str] = true
            uniqueSlice = append(uniqueSlice, str)
        }
    }
    return uniqueSlice
}

func GetRealSymbol(symbol string) string {
    if val, ok := renameMapping[strings.ToUpper(symbol)]; ok {
        return val
    }
    return strings.ToUpper(symbol)
}

func ChunkSymbols(symbols []string, chunkSizeOptional ...int) [][]string {
    var chunks [][]string
    chunkSize := 100
    if len(chunkSizeOptional) > 0 {
        chunkSize = chunkSizeOptional[0]
    }

    for i := 0; i < len(symbols); i += chunkSize {
        end := i + chunkSize

        if end > len(symbols) {
            end = len(symbols)
        }

        chunks = append(chunks, symbols[i:end])
    }

    return chunks
}