@@ -10,12 +10,10 @@ import (
1010
1111// MapBase wraps map[string]T to satisfy flag.Value
1212type MapBase [T any , C any , VC ValueCreator [T , C ]] struct {
13- dict * map [string ]T
14- hasBeenSet bool
15- value Value
16- sliceSeparator string
17- disableSliceSeparator bool
18- keyValueSeparator string
13+ dict * map [string ]T
14+ hasBeenSet bool
15+ value Value
16+ multiValueConfig multiValueParsingConfig
1917}
2018
2119func (i MapBase [T , C , VC ]) Create (val map [string ]T , p * map [string ]T , c C ) Value {
@@ -41,10 +39,14 @@ func NewMapBase[T any, C any, VC ValueCreator[T, C]](defaults map[string]T) *Map
4139
4240// configuration of slicing
4341func (i * MapBase [T , C , VC ]) setMultiValueParsingConfig (c multiValueParsingConfig ) {
44- i .disableSliceSeparator = c .DisableSliceFlagSeparator
45- i .sliceSeparator = c .SliceFlagSeparator
46- i .keyValueSeparator = c .MapFlagKeyValueSeparator
47- tracef ("set map parsing config - keyValueSeparator '%s', slice separator '%s', disable separator:%v" , i .keyValueSeparator , i .sliceSeparator , i .disableSliceSeparator )
42+ i .multiValueConfig = c
43+ mvc := & i .multiValueConfig
44+ tracef (
45+ "set map parsing config - keyValueSeparator '%s', slice separator '%s', disable separator:%v" ,
46+ mvc .MapFlagKeyValueSeparator ,
47+ mvc .SliceFlagSeparator ,
48+ mvc .DisableSliceFlagSeparator ,
49+ )
4850}
4951
5052// Set parses the value and appends it to the list of values
@@ -61,13 +63,20 @@ func (i *MapBase[T, C, VC]) Set(value string) error {
6163 return nil
6264 }
6365
64- keyValueSeparator := i .keyValueSeparator
66+ mvc := & i .multiValueConfig
67+ keyValueSeparator := mvc .MapFlagKeyValueSeparator
6568 if len (keyValueSeparator ) == 0 {
6669 keyValueSeparator = defaultMapFlagKeyValueSeparator
6770 }
6871
69- tracef ("splitting map value '%s', keyValueSeparator '%s', slice separator '%s', disable separator:%v" , value , keyValueSeparator , i .sliceSeparator , i .disableSliceSeparator )
70- for _ , item := range flagSplitMultiValues (value , i .sliceSeparator , i .disableSliceSeparator ) {
72+ tracef (
73+ "splitting map value '%s', keyValueSeparator '%s', slice separator '%s', disable separator:%v" ,
74+ value ,
75+ keyValueSeparator ,
76+ mvc .SliceFlagSeparator ,
77+ mvc .DisableSliceFlagSeparator ,
78+ )
79+ for _ , item := range flagSplitMultiValues (value , mvc .SliceFlagSeparator , mvc .DisableSliceFlagSeparator ) {
7180 key , value , ok := strings .Cut (item , keyValueSeparator )
7281 if ! ok {
7382 return fmt .Errorf ("item %q is missing separator %q" , item , keyValueSeparator )
0 commit comments