You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
954 B
46 lines
954 B
3 years ago
|
package arg
|
||
|
|
||
|
import "fmt"
|
||
|
|
||
|
// FormatCurrency types format.
|
||
|
type FormatCurrency int
|
||
|
|
||
|
// Currency format.
|
||
|
const (
|
||
|
CurrencyFormatSymbol FormatCurrency = iota + 1
|
||
|
CurrencyFormatISO
|
||
|
CurrencyFormatNarrowSymbol
|
||
|
)
|
||
|
|
||
|
// CurrencyOption configures option.
|
||
|
type CurrencyOption func(*Currency)
|
||
|
|
||
|
// WithCurrencyFormat sets format currency.
|
||
|
func WithCurrencyFormat(format FormatCurrency) CurrencyOption {
|
||
|
return func(c *Currency) { c.Format = format }
|
||
|
}
|
||
|
|
||
|
// WithCurrencyISO sets ISO 4217 code currecy.
|
||
|
func WithCurrencyISO(iso string) CurrencyOption {
|
||
|
return func(c *Currency) { c.ISO = iso }
|
||
|
}
|
||
|
|
||
|
// Currency argument.
|
||
|
type Currency struct {
|
||
|
Key string
|
||
|
Value interface{}
|
||
|
Format FormatCurrency
|
||
|
// ISO 3-letter ISO 4217
|
||
|
ISO string
|
||
|
}
|
||
|
|
||
|
// String gets string from currency.
|
||
|
func (a Currency) String() string {
|
||
|
return fmt.Sprintf("currency key:%s, value:%v", a.Key, a.Value)
|
||
|
}
|
||
|
|
||
|
// Val gets value currency.
|
||
|
func (a Currency) Val() interface{} {
|
||
|
return a.Value
|
||
|
}
|