Skip to content

Commit 569314c

Browse files
committed
Added Input.editOption and Input.editArgument
1 parent c21bd43 commit 569314c

File tree

1 file changed

+26
-46
lines changed

1 file changed

+26
-46
lines changed

src/FSharp.SystemCommandLine/Inputs.fs

Lines changed: 26 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -57,63 +57,43 @@ module Input =
5757
let option<'T> (name: string) =
5858
Option<'T>(name) |> HandlerInput.OfOption
5959

60-
let aliases (aliases: string seq) (hi: HandlerInput<'T>) =
61-
hi.Source
62-
|> function
63-
| ParsedOption o ->
64-
aliases |> Seq.iter o.Aliases.Add
65-
hi
66-
| _ -> hi
60+
let editOption (edit: Option<'T> -> unit) (hi: HandlerInput<'T>) =
61+
match hi.Source with
62+
| ParsedOption o -> o :?> Option<'T> |> edit
63+
| _ -> ()
64+
hi
65+
66+
let editArgument (edit: Argument<'T> -> unit) (hi: HandlerInput<'T>) =
67+
match hi.Source with
68+
| ParsedArgument a -> a :?> Argument<'T> |> edit
69+
| _ -> ()
70+
hi
6771

72+
let aliases (aliases: string seq) (hi: HandlerInput<'T>) =
73+
hi |> editOption (fun o -> aliases |> Seq.iter o.Aliases.Add)
74+
6875
let alias (alias: string) (hi: HandlerInput<'T>) =
69-
hi.Source
70-
|> function
71-
| ParsedOption o -> o.Aliases.Add alias; hi
72-
| _ -> hi
76+
hi |> editOption (fun o -> o.Aliases.Add alias)
7377

7478
let desc (description: string) (hi: HandlerInput<'T>) =
75-
hi.Source
76-
|> function
77-
| ParsedOption o -> o.Description <- description; o :?> Option<'T> |> HandlerInput.OfOption<'T>
78-
| ParsedArgument a -> a.Description <- description; a :?> Argument<'T> |> HandlerInput.OfArgument<'T>
79-
| Context -> hi
79+
hi
80+
|> editOption (fun o -> o.Description <- description)
81+
|> editArgument (fun a -> a.Description <- description)
8082

8183
let defaultValue (defaultValue: 'T) (hi: HandlerInput<'T>) =
82-
hi.Source
83-
|> function
84-
| ParsedOption o ->
85-
let o = o :?> Option<'T>
86-
o.DefaultValueFactory <- (fun _ -> defaultValue)
87-
HandlerInput.OfOption<'T> o
88-
| ParsedArgument a ->
89-
let a = a :?> Argument<'T>
90-
a.DefaultValueFactory <- (fun _ -> defaultValue)
91-
HandlerInput.OfArgument<'T> a
92-
| Context -> hi
93-
84+
hi
85+
|> editOption (fun o -> o.DefaultValueFactory <- (fun _ -> defaultValue))
86+
|> editArgument (fun a -> a.DefaultValueFactory <- (fun _ -> defaultValue))
87+
9488
let def = defaultValue
9589

9690
let defFactory (defaultValueFactory: Parsing.ArgumentResult -> 'T) (hi: HandlerInput<'T>) =
97-
hi.Source
98-
|> function
99-
| ParsedOption o ->
100-
let o = o :?> Option<'T>
101-
o.DefaultValueFactory <- defaultValueFactory
102-
HandlerInput.OfOption<'T> o
103-
| ParsedArgument a ->
104-
let a = a :?> Argument<'T>
105-
a.DefaultValueFactory <- defaultValueFactory
106-
HandlerInput.OfArgument<'T> a
107-
| Context -> hi
91+
hi
92+
|> editOption (fun o -> o.DefaultValueFactory <- defaultValueFactory)
93+
|> editArgument (fun a -> a.DefaultValueFactory <- defaultValueFactory)
10894

10995
let required (hi: HandlerInput<'T>) =
110-
hi.Source
111-
|> function
112-
| ParsedOption o ->
113-
let o = o :?> Option<'T>
114-
o.Required <- true
115-
HandlerInput.OfOption<'T> o
116-
| _ -> hi
96+
hi |> editOption (fun o -> o.Required <- true)
11797

11898
let optionMaybe<'T> (name: string) =
11999
let o = Option<'T option>(name, aliases = [||])

0 commit comments

Comments
 (0)