From bdcc863d4590dda456cc2eb4cf791f945e20a7a4 Mon Sep 17 00:00:00 2001 From: "diamondburned (Forefront)" Date: Sat, 25 Jan 2020 13:01:05 -0800 Subject: [PATCH] Extended bot.RawArguments --- bot/arguments.go | 21 ++++++++++++++++++++- bot/extras/arguments/flag.go | 2 +- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/bot/arguments.go b/bot/arguments.go index 042546e..4125c6a 100644 --- a/bot/arguments.go +++ b/bot/arguments.go @@ -4,6 +4,7 @@ import ( "errors" "reflect" "strconv" + "strings" ) type argumentValueFn func(string) (reflect.Value, error) @@ -26,14 +27,32 @@ type ManualParseable interface { // RawArguments implements ManualParseable, in case you want to implement a // custom argument parser. It borrows the library's argument parser. type RawArguments struct { + Command string Arguments []string } func (r *RawArguments) ParseContent(args []string) error { - r.Arguments = args + r.Command = args[0] + + if len(args) > 1 { + r.Arguments = args[1:] + } + return nil } +func (r *RawArguments) Arg(n int) string { + if n < 0 || n >= len(r.Arguments) { + return "" + } + + return r.Arguments[n] +} + +func (r *RawArguments) String() string { + return r.Command + " " + strings.Join(r.Arguments, " ") +} + // Argument is each argument in a method. type Argument struct { String string diff --git a/bot/extras/arguments/flag.go b/bot/extras/arguments/flag.go index a0ad7f6..cb64328 100644 --- a/bot/extras/arguments/flag.go +++ b/bot/extras/arguments/flag.go @@ -42,7 +42,7 @@ func (f *Flag) ParseContent(arguments []string) error { } func (f *Flag) Usage() string { - return "flags..." + return "[flags] arguments..." } func (f *Flag) Command() string {