|
7 | 7 | "github.com/GoMudEngine/GoMud/internal/configs" |
8 | 8 | "github.com/GoMudEngine/GoMud/internal/events" |
9 | 9 | "github.com/GoMudEngine/GoMud/internal/gametime" |
| 10 | + "github.com/GoMudEngine/GoMud/internal/keywords" |
10 | 11 | "github.com/GoMudEngine/GoMud/internal/users" |
11 | 12 | "github.com/GoMudEngine/GoMud/internal/util" |
12 | 13 | "github.com/dop251/goja" |
@@ -45,6 +46,7 @@ func setUtilFunctions(vm *goja.Runtime) { |
45 | 46 | vm.Set(`ColorWrap`, ColorWrap) |
46 | 47 | vm.Set(`EventFlags`, EventFlags) |
47 | 48 | vm.Set(`RaiseEvent`, RaiseEvent) |
| 49 | + vm.Set(`ExpandCommand`, ExpandCommand) |
48 | 50 |
|
49 | 51 | } |
50 | 52 |
|
@@ -181,3 +183,32 @@ func ColorWrap(txt string, colorClass ...string) string { |
181 | 183 | func RaiseEvent(name string, data map[string]any) { |
182 | 184 | events.AddToQueue(events.ScriptedEvent{Name: name, Data: data}) |
183 | 185 | } |
| 186 | + |
| 187 | +func ExpandCommand(cmd string, limit ...int) string { |
| 188 | + |
| 189 | + parts := util.SplitButRespectQuotes(cmd) |
| 190 | + |
| 191 | + expansionsLeft := -1 |
| 192 | + if len(limit) > 0 { |
| 193 | + expansionsLeft = limit[0] |
| 194 | + if expansionsLeft < -1 { |
| 195 | + expansionsLeft = -1 |
| 196 | + } |
| 197 | + } |
| 198 | + |
| 199 | + result := "" |
| 200 | + for _, abbr := range parts { |
| 201 | + if expansionsLeft != 0 { |
| 202 | + alias := keywords.TryCommandAlias(abbr) |
| 203 | + result += alias |
| 204 | + expansionsLeft-- |
| 205 | + } else { |
| 206 | + result += abbr |
| 207 | + } |
| 208 | + result += " " |
| 209 | + } |
| 210 | + |
| 211 | + result = strings.Trim(result, " ") |
| 212 | + |
| 213 | + return result |
| 214 | +} |
0 commit comments