summaryrefslogtreecommitdiff
path: root/command.go
diff options
context:
space:
mode:
authortjp <tjp@ctrl-c.club>2024-01-04 12:47:52 -0700
committertjp <tjp@ctrl-c.club>2024-01-04 12:47:52 -0700
commitceaaaaf695afab718d98a92a4c3a3b7569261a25 (patch)
treea746041f65d497c212ed0bd83bc286bbc55cc46b /command.go
parent684539c70d4b5dfac56e840f46d8dd08821e93d6 (diff)
back and forward by N
Diffstat (limited to 'command.go')
-rw-r--r--command.go40
1 files changed, 36 insertions, 4 deletions
diff --git a/command.go b/command.go
index ea7ee7c..c3396b2 100644
--- a/command.go
+++ b/command.go
@@ -43,11 +43,35 @@ func ParseCommand(line string) (*Command, error) {
}
case 'b':
if strings.HasPrefix("back", cmd) {
- return &Command{Name: "back"}, nil
+ fields := strings.Fields(rest)
+ switch len(fields) {
+ case 0:
+ return &Command{Name: "back"}, nil
+ case 1:
+ if _, err := strconv.Atoi(fields[0]); err != nil {
+ return nil, ErrInvalidArgs
+ }
+ return &Command{Name: "back", Args: fields}, nil
+ default:
+ return nil, ErrInvalidArgs
+
+ }
}
case 'f':
if strings.HasPrefix("forward", cmd) {
- return &Command{Name: "forward"}, nil
+ fields := strings.Fields(rest)
+ switch len(fields) {
+ case 0:
+ return &Command{Name: "forward"}, nil
+ case 1:
+ if _, err := strconv.Atoi(fields[0]); err != nil {
+ return nil, ErrInvalidArgs
+ }
+ return &Command{Name: "forward", Args: fields}, nil
+ default:
+ return nil, ErrInvalidArgs
+
+ }
}
case 'n':
if strings.HasPrefix("next", cmd) {
@@ -270,9 +294,17 @@ func RunCommand(conf *Config, cmd *Command, state *BrowserState) error {
case "reload":
return Reload(state, conf)
case "back":
- return Back(state)
+ num := 1
+ if len(cmd.Args) == 1 {
+ num, _ = strconv.Atoi(cmd.Args[0])
+ }
+ return Back(state, num)
case "forward":
- return Forward(state)
+ num := 1
+ if len(cmd.Args) == 1 {
+ num, _ = strconv.Atoi(cmd.Args[0])
+ }
+ return Forward(state, num)
case "next":
return Next(state, conf)
case "previous":