Add rpn parser and infix solver

This commit is contained in:
Dustin Pianalto
2020-08-25 21:03:50 -08:00
parent d66a25a525
commit 1ddc4d4c36
3 changed files with 143 additions and 4 deletions
+26 -1
View File
@@ -3,6 +3,7 @@ package exts
import (
"fmt"
"strconv"
"strings"
"djpianalto.com/goff/djpianalto.com/goff/utils"
"github.com/dustinpianalto/disgoman"
@@ -50,10 +51,34 @@ func deinterleave(ctx disgoman.Context, args []string) {
}
}
func rpn(ctx disgoman.Context, args []string) {
func generateRPNCommand(ctx disgoman.Context, args []string) {
rpn, err := utils.GenerateRPN(args)
if err != nil {
ctx.Send(err.Error())
return
}
ctx.Send(rpn)
}
func parseRPNCommand(ctx disgoman.Context, args []string) {
res, err := utils.ParseRPN(args)
if err != nil {
ctx.Send(err.Error())
return
}
ctx.Send(fmt.Sprintf("The result is: %v", res))
}
func solveCommand(ctx disgoman.Context, args []string) {
rpn, err := utils.GenerateRPN(args)
if err != nil {
ctx.Send(err.Error())
return
}
res, err := utils.ParseRPN(strings.Split(rpn, " "))
if err != nil {
ctx.Send(err.Error())
return
}
ctx.Send(fmt.Sprintf("The result is: %v", res))
}
+22 -3
View File
@@ -187,12 +187,31 @@ func AddCommandHandlers(h *disgoman.CommandManager) {
Invoke: deinterleave,
})
_ = h.AddCommand(&disgoman.Command{
Name: "rpn",
Aliases: []string{},
Name: "RPN",
Aliases: []string{"rpn"},
Description: "Convert infix to rpn",
OwnerOnly: false,
Hidden: false,
RequiredPermissions: 0,
Invoke: rpn,
Invoke: generateRPNCommand,
})
_ = h.AddCommand(&disgoman.Command{
Name: "ParseRPN",
Aliases: []string{'PRPN'},
Description: "Parse RPN string and return the result",
OwnerOnly: false,
Hidden: false,
RequiredPermissions: 0,
Invoke: parseRPNCommand,
})
_ = h.AddCommand(&disgoman.Command{
Name: "solve",
Aliases: []string{"math"},
Description: "Solve infix equation and return the result",
OwnerOnly: false,
Hidden: false,
RequiredPermissions: 0,
Invoke: solveCommand,
})
}