SetEnvKeyReplacer(): replace concrete type "strings.Replacer" with its interface

This commit is contained in:
PROger4ever 2018-10-05 12:37:22 +05:00
parent 62edee3196
commit a9236e1fbf
2 changed files with 13 additions and 7 deletions

View file

@ -185,7 +185,7 @@ with ENV:
* `AutomaticEnv()`
* `BindEnv(string...) : error`
* `SetEnvPrefix(string)`
* `SetEnvKeyReplacer(string...) *strings.Replacer`
* `SetEnvKeyReplacer(string...) *replacer`
_When working with ENV variables, its important to recognize that Viper
treats ENV variables as case sensitive._
@ -212,8 +212,9 @@ time a `viper.Get` request is made. It will apply the following rules. It will
check for a environment variable with a name matching the key uppercased and
prefixed with the `EnvPrefix` if set.
`SetEnvKeyReplacer` allows you to use a `strings.Replacer` object to rewrite Env
keys to an extent. This is useful if you want to use `-` or something in your
`SetEnvKeyReplacer` allows you to use a `replacer` interface to rewrite Env
keys to an extent. The most popular implementation of the interface is
`strings.Replacer`. This is useful if you want to use `-` or something in your
`Get()` calls, but want your environmental variables to use `_` delimiters. An
example of using it can be found in `viper_test.go`.

View file

@ -186,7 +186,7 @@ type Viper struct {
envPrefix string
automaticEnvApplied bool
envKeyReplacer *strings.Replacer
envKeyReplacer replacer
config map[string]interface{}
override map[string]interface{}
@ -1084,11 +1084,16 @@ func (v *Viper) AutomaticEnv() {
v.automaticEnvApplied = true
}
// SetEnvKeyReplacer sets the strings.Replacer on the viper object
// replacer is the interface that a replacement algorithm needs to implement.
type replacer interface {
Replace(s string) string
}
// SetEnvKeyReplacer sets the replacer on the viper object
// Useful for mapping an environmental variable to a key that does
// not match it.
func SetEnvKeyReplacer(r *strings.Replacer) { v.SetEnvKeyReplacer(r) }
func (v *Viper) SetEnvKeyReplacer(r *strings.Replacer) {
func SetEnvKeyReplacer(r replacer) { v.SetEnvKeyReplacer(r) }
func (v *Viper) SetEnvKeyReplacer(r replacer) {
v.envKeyReplacer = r
}