From 21e45f5ded6c2436b5a0d5659b47b08ddf0b5e06 Mon Sep 17 00:00:00 2001 From: mkrasilnikov Date: Thu, 2 Mar 2017 10:52:48 +0300 Subject: [PATCH] Add GetIntSlice functions --- viper.go | 6 ++++++ viper_test.go | 31 +++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/viper.go b/viper.go index 2603c78..283343b 100644 --- a/viper.go +++ b/viper.go @@ -684,6 +684,12 @@ func (v *Viper) GetStringSlice(key string) []string { return cast.ToStringSlice(v.Get(key)) } +// GetIntSlice returns the value associated with the key as a slice of ints. +func GetIntSlice(key string) []int { return v.GetIntSlice(key) } +func (v *Viper) GetIntSlice(key string) []int { + return cast.ToIntSlice(v.Get(key)) +} + // GetStringMap returns the value associated with the key as a map of interfaces. func GetStringMap(key string) map[string]interface{} { return v.GetStringMap(key) } func (v *Viper) GetStringMap(key string) map[string]interface{} { diff --git a/viper_test.go b/viper_test.go index cd7b65c..ea52406 100644 --- a/viper_test.go +++ b/viper_test.go @@ -818,6 +818,10 @@ hello: - uk - fr - de + groups: + - 1 + - 2 + - 3 `) var yamlMergeExampleSrc = []byte(` @@ -827,6 +831,9 @@ hello: universe: - mw - ad + ages: + - 21 + - 34 fu: bar `) @@ -853,6 +860,10 @@ func TestMergeConfig(t *testing.T) { t.Fatalf("len(world) != 4, = %d", len(world)) } + if groups := v.GetIntSlice("hello.groups"); len(groups) != 3 { + t.Fatalf("len(groups) != 3, = %d", len(groups)) + } + if fu := v.GetString("fu"); fu != "" { t.Fatalf("fu != \"\", = %s", fu) } @@ -881,6 +892,14 @@ func TestMergeConfig(t *testing.T) { t.Fatalf("len(universe) != 2, = %d", len(universe)) } + if groups := v.GetIntSlice("hello.groups"); len(groups) != 3 { + t.Fatalf("len(groups) != 3, = %d", len(groups)) + } + + if ages := v.GetIntSlice("hello.ages"); len(ages) != 2 { + t.Fatalf("len(ages) != 2, = %d", len(ages)) + } + if fu := v.GetString("fu"); fu != "bar" { t.Fatalf("fu != \"bar\", = %s", fu) } @@ -901,6 +920,10 @@ func TestMergeConfigNoMerge(t *testing.T) { t.Fatalf("len(world) != 4, = %d", len(world)) } + if groups := v.GetIntSlice("hello.groups"); len(groups) != 3 { + t.Fatalf("len(groups) != 3, = %d", len(groups)) + } + if fu := v.GetString("fu"); fu != "" { t.Fatalf("fu != \"\", = %s", fu) } @@ -921,6 +944,14 @@ func TestMergeConfigNoMerge(t *testing.T) { t.Fatalf("len(universe) != 2, = %d", len(universe)) } + if groups := v.GetIntSlice("hello.groups"); len(groups) != 0 { + t.Fatalf("len(groups) != 0, = %d", len(groups)) + } + + if ages := v.GetIntSlice("hello.ages"); len(ages) != 2 { + t.Fatalf("len(groups) != 2, = %d", len(ages)) + } + if fu := v.GetString("fu"); fu != "bar" { t.Fatalf("fu != \"bar\", = %s", fu) }