aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Hockin <[email protected]>2015-04-23 21:45:29 -0700
committerTim Hockin <[email protected]>2015-04-23 21:45:29 -0700
commit4ac8829b5173e7af7ae84e1d477f8c5471cb126c (patch)
tree424c2547ffc6c7a662bd375d4c271972c61c5700
parentbeb8d730f2afc6c3fe75312ad6f61a3dc47a64aa (diff)
Allow WordSeparators to be set after flags are added
-rw-r--r--flag.go7
-rw-r--r--flag_test.go3
2 files changed, 8 insertions, 2 deletions
diff --git a/flag.go b/flag.go
index 7af532e..5f14635 100644
--- a/flag.go
+++ b/flag.go
@@ -621,9 +621,14 @@ func SetInterspersed(interspersed bool) {
// SetWordSeparators sets a list of strings to be considerered as word
// separators and normalized for the pruposes of lookups. For example, if this
// is set to {"-", "_", "."} then --foo_bar, --foo-bar, and --foo.bar are
-// considered equivalent flags.
+// considered equivalent flags. This must be called before flags are parsed,
+// and may only be called once.
func (f *FlagSet) SetWordSeparators(separators []string) {
f.wordSeparators = separators
+ for k, v := range f.formal {
+ delete(f.formal, k)
+ f.formal[f.normalizeFlagName(string(k))] = v
+ }
}
// Parsed returns true if the command-line flags have been parsed.
diff --git a/flag_test.go b/flag_test.go
index 10e6ebb..ca500dd 100644
--- a/flag_test.go
+++ b/flag_test.go
@@ -238,8 +238,9 @@ func testNormalizedNames(args []string, t *testing.T) {
if f.Parsed() {
t.Error("f.Parse() = true before Parse")
}
- f.SetWordSeparators([]string{"-", "_"})
withDashFlag := f.Bool("with-dash-flag", false, "bool value")
+ // Set this after some flags have been added and before others.
+ f.SetWordSeparators([]string{"-", "_"})
withUnderFlag := f.Bool("with_under_flag", false, "bool value")
withBothFlag := f.Bool("with-both_flag", false, "bool value")
if err := f.Parse(args); err != nil {