Search Apps Documentation Source Content File Folder Download Copy Actions Download

util.gno

1.18 Kb ยท 66 lines
 1package disperse
 2
 3import (
 4	"strconv"
 5	"strings"
 6	"unicode"
 7)
 8
 9func parseAddresses(addresses string) ([]address, error) {
10	var ret []address
11
12	for _, str := range strings.Split(addresses, ",") {
13		addr := address(str)
14		if !addr.IsValid() {
15			return nil, ErrInvalidAddress
16		}
17
18		ret = append(ret, addr)
19	}
20
21	return ret, nil
22}
23
24func splitString(input string) (string, string) {
25	var pos int
26	for i, char := range input {
27		if !unicode.IsDigit(char) {
28			pos = i
29			break
30		}
31	}
32	return input[:pos], input[pos:]
33}
34
35func parseTokens(tokens string) ([]int64, []string, error) {
36	var amounts []int64
37	var symbols []string
38
39	for _, token := range strings.Split(tokens, ",") {
40		amountStr, symbol := splitString(token)
41		amount, _ := strconv.Atoi(amountStr)
42		if amount < 0 {
43			return nil, nil, ErrNegativeCoinAmount
44		}
45
46		amounts = append(amounts, int64(amount))
47		symbols = append(symbols, symbol)
48	}
49
50	return amounts, symbols, nil
51}
52
53func parseAmounts(amounts string) ([]int64, error) {
54	var ret []int64
55
56	for _, amt := range strings.Split(amounts, ",") {
57		amount, _ := strconv.Atoi(amt)
58		if amount < 0 {
59			return nil, ErrNegativeCoinAmount
60		}
61
62		ret = append(ret, int64(amount))
63	}
64
65	return ret, nil
66}