Merge PR #3951: Remove ';' delimiting support from ParseDecCoins
This commit is contained in:
parent
294ac8e980
commit
dd7de2acaf
@ -0,0 +1 @@
|
||||
#3915 Remove ';' delimiting support from ParseDecCoins
|
||||
@ -2,6 +2,7 @@ package config
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
)
|
||||
@ -14,7 +15,7 @@ const (
|
||||
type BaseConfig struct {
|
||||
// The minimum gas prices a validator is willing to accept for processing a
|
||||
// transaction. A transaction's fees must meet the minimum of any denomination
|
||||
// specified in this config (e.g. 0.01photino;0.0001stake).
|
||||
// specified in this config (e.g. 0.25token1;0.0001token2).
|
||||
MinGasPrices string `mapstructure:"minimum-gas-prices"`
|
||||
}
|
||||
|
||||
@ -31,9 +32,20 @@ func (c *Config) SetMinGasPrices(gasPrices sdk.DecCoins) {
|
||||
// GetMinGasPrices returns the validator's minimum gas prices based on the set
|
||||
// configuration.
|
||||
func (c *Config) GetMinGasPrices() sdk.DecCoins {
|
||||
gasPrices, err := sdk.ParseDecCoins(c.MinGasPrices)
|
||||
if err != nil {
|
||||
panic(fmt.Sprintf("invalid minimum gas prices: %v", err))
|
||||
if c.MinGasPrices == "" {
|
||||
return sdk.DecCoins{}
|
||||
}
|
||||
|
||||
gasPricesStr := strings.Split(c.MinGasPrices, ";")
|
||||
gasPrices := make(sdk.DecCoins, len(gasPricesStr))
|
||||
|
||||
for i, s := range gasPricesStr {
|
||||
gasPrice, err := sdk.ParseDecCoin(s)
|
||||
if err != nil {
|
||||
panic(fmt.Errorf("failed to parse minimum gas price coin (%s): %s", s, err))
|
||||
}
|
||||
|
||||
gasPrices[i] = gasPrice
|
||||
}
|
||||
|
||||
return gasPrices
|
||||
|
||||
@ -15,7 +15,7 @@ const defaultConfigTemplate = `# This is a TOML config file.
|
||||
|
||||
# The minimum gas prices a validator is willing to accept for processing a
|
||||
# transaction. A transaction's fees must meet the minimum of any denomination
|
||||
# specified in this config (e.g. 0.01photino;0.0001stake).
|
||||
# specified in this config (e.g. 0.25token1;0.0001token2).
|
||||
minimum-gas-prices = "{{ .BaseConfig.MinGasPrices }}"
|
||||
`
|
||||
|
||||
|
||||
@ -589,25 +589,27 @@ func ParseCoin(coinStr string) (coin Coin, err error) {
|
||||
// ParseCoins will parse out a list of coins separated by commas.
|
||||
// If nothing is provided, it returns nil Coins.
|
||||
// Returned coins are sorted.
|
||||
func ParseCoins(coinsStr string) (coins Coins, err error) {
|
||||
func ParseCoins(coinsStr string) (Coins, error) {
|
||||
coinsStr = strings.TrimSpace(coinsStr)
|
||||
if len(coinsStr) == 0 {
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
coinStrs := strings.Split(coinsStr, ",")
|
||||
for _, coinStr := range coinStrs {
|
||||
coins := make(Coins, len(coinStrs))
|
||||
for i, coinStr := range coinStrs {
|
||||
coin, err := ParseCoin(coinStr)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
coins = append(coins, coin)
|
||||
|
||||
coins[i] = coin
|
||||
}
|
||||
|
||||
// Sort coins for determinism.
|
||||
// sort coins for determinism
|
||||
coins.Sort()
|
||||
|
||||
// Validate coins before returning.
|
||||
// validate coins before returning
|
||||
if !coins.IsValid() {
|
||||
return nil, fmt.Errorf("parseCoins invalid: %#v", coins)
|
||||
}
|
||||
|
||||
@ -2,7 +2,6 @@ package types
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"regexp"
|
||||
"sort"
|
||||
"strings"
|
||||
|
||||
@ -545,21 +544,21 @@ func ParseDecCoin(coinStr string) (coin DecCoin, err error) {
|
||||
// ParseDecCoins will parse out a list of decimal coins separated by commas.
|
||||
// If nothing is provided, it returns nil DecCoins. Returned decimal coins are
|
||||
// sorted.
|
||||
func ParseDecCoins(coinsStr string) (coins DecCoins, err error) {
|
||||
func ParseDecCoins(coinsStr string) (DecCoins, error) {
|
||||
coinsStr = strings.TrimSpace(coinsStr)
|
||||
if len(coinsStr) == 0 {
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
splitRe := regexp.MustCompile(",|;")
|
||||
coinStrs := splitRe.Split(coinsStr, -1)
|
||||
for _, coinStr := range coinStrs {
|
||||
coinStrs := strings.Split(coinsStr, ",")
|
||||
coins := make(DecCoins, len(coinStrs))
|
||||
for i, coinStr := range coinStrs {
|
||||
coin, err := ParseDecCoin(coinStr)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
coins = append(coins, coin)
|
||||
coins[i] = coin
|
||||
}
|
||||
|
||||
// sort coins for determinism
|
||||
|
||||
Loading…
Reference in New Issue
Block a user