Skip to content

Commit 3a7705a

Browse files
cutelispdmaluka
authored andcommitted
Enhance GetNativeValue
1 parent 55a5530 commit 3a7705a

File tree

4 files changed

+17
-15
lines changed

4 files changed

+17
-15
lines changed

cmd/micro/micro.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -317,7 +317,7 @@ func main() {
317317
// flag options
318318
for k, v := range optionFlags {
319319
if *v != "" {
320-
nativeValue, err := config.GetNativeValue(k, config.DefaultAllSettings()[k], *v)
320+
nativeValue, err := config.GetNativeValue(k, *v)
321321
if err != nil {
322322
screen.TermMessage(err)
323323
continue

internal/action/command.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -668,7 +668,7 @@ func SetGlobalOption(option, value string) error {
668668
return config.ErrInvalidOption
669669
}
670670

671-
nativeValue, err := config.GetNativeValue(option, config.GlobalSettings[option], value)
671+
nativeValue, err := config.GetNativeValue(option, value)
672672
if err != nil {
673673
return err
674674
}

internal/buffer/settings.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ func (b *Buffer) SetOption(option, value string) error {
155155
return config.ErrInvalidOption
156156
}
157157

158-
nativeValue, err := config.GetNativeValue(option, b.Settings[option], value)
158+
nativeValue, err := config.GetNativeValue(option, value)
159159
if err != nil {
160160
return err
161161
}

internal/config/settings.go

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -472,28 +472,30 @@ func DefaultAllSettings() map[string]interface{} {
472472
}
473473

474474
// GetNativeValue parses and validates a value for a given option
475-
func GetNativeValue(option string, realValue interface{}, value string) (interface{}, error) {
476-
var native interface{}
477-
kind := reflect.TypeOf(realValue).Kind()
478-
if kind == reflect.Bool {
475+
func GetNativeValue(option, value string) (interface{}, error) {
476+
curVal := GetGlobalOption(option)
477+
if curVal == nil {
478+
return nil, ErrInvalidOption
479+
}
480+
481+
switch kind := reflect.TypeOf(curVal).Kind(); kind {
482+
case reflect.Bool:
479483
b, err := util.ParseBool(value)
480484
if err != nil {
481485
return nil, ErrInvalidValue
482486
}
483-
native = b
484-
} else if kind == reflect.String {
485-
native = value
486-
} else if kind == reflect.Float64 {
487+
return b, nil
488+
case reflect.String:
489+
return value, nil
490+
case reflect.Float64:
487491
f, err := strconv.ParseFloat(value, 64)
488492
if err != nil {
489493
return nil, ErrInvalidValue
490494
}
491-
native = f
492-
} else {
495+
return f, nil
496+
default:
493497
return nil, ErrInvalidValue
494498
}
495-
496-
return native, nil
497499
}
498500

499501
// OptionIsValid checks if a value is valid for a certain option

0 commit comments

Comments
 (0)