summaryrefslogtreecommitdiff
path: root/command.go
diff options
context:
space:
mode:
authortjp <tjp@ctrl-c.club>2024-01-03 12:17:37 -0700
committertjp <tjp@ctrl-c.club>2024-01-03 12:17:37 -0700
commit859f74231f2b48d2dcf6a29682e7651b504fda12 (patch)
treee03126c48c8385d98ba81525e7b628d5ca2257ca /command.go
parent6c9558c0d2201d933b1d396febeb6e70ceaad058 (diff)
tours
Diffstat (limited to 'command.go')
-rw-r--r--command.go32
1 files changed, 25 insertions, 7 deletions
diff --git a/command.go b/command.go
index 760ee25..46390da 100644
--- a/command.go
+++ b/command.go
@@ -56,6 +56,12 @@ func ParseCommand(line string) (*Command, error) {
if strings.HasPrefix("previous", cmd) {
return &Command{Name: "previous"}, nil
}
+ if strings.HasPrefix("pipe", cmd) {
+ return &Command{
+ Name: "pipe",
+ Args: []string{rest},
+ }, nil
+ }
case 'u':
if strings.HasPrefix("up", cmd) {
return &Command{Name: "up"}, nil
@@ -163,11 +169,11 @@ func parseMarkArgs(line string) ([]string, error) {
}
func parseTourArgs(line string) ([]string, error) {
- if line == "" {
+ fields := strings.Fields(line)
+ if len(fields) == 0 {
return []string{"next"}, nil
}
- fields := strings.Fields(line)
switch fields[0][0] {
case 'a':
if strings.HasPrefix("add", fields[0]) {
@@ -176,10 +182,21 @@ func parseTourArgs(line string) ([]string, error) {
return nil, ErrInvalidArgs
}
if strings.HasPrefix("next", fields[1]) {
+ if len(fields) == 2 {
+ return nil, ErrInvalidArgs
+ }
fields[1] = "next"
}
return fields, nil
}
+ case 'c':
+ if strings.HasPrefix("clear", fields[0]) {
+ fields[0] = "clear"
+ if len(fields) != 1 {
+ return nil, ErrInvalidArgs
+ }
+ return fields, nil
+ }
case 'n':
if strings.HasPrefix("next", fields[0]) {
fields[0] = "next"
@@ -192,14 +209,11 @@ func parseTourArgs(line string) ([]string, error) {
if strings.HasPrefix("set", fields[0]) {
fields[0] = "set"
if len(fields) == 1 {
- return fields, nil
+ return append(fields, ""), nil
}
if len(fields) != 2 {
return nil, ErrInvalidArgs
}
- if len(fields[1]) != 1 || fields[1][0] < 'a' || fields[1][0] > 'z' {
- return nil, ErrInvalidArgs
- }
return fields, nil
}
if strings.HasPrefix("show", fields[0]) {
@@ -238,7 +252,7 @@ func parseTourArgs(line string) ([]string, error) {
}
}
- return nil, ErrInvalidArgs
+ return append([]string{"add"}, fields...), nil
}
func RunCommand(conf *Config, cmd *Command, state *BrowserState) error {
@@ -261,6 +275,8 @@ func RunCommand(conf *Config, cmd *Command, state *BrowserState) error {
return Up(state, conf)
case "go":
return Go(state, cmd.Args[0], conf)
+ case "pipe":
+ return Pipe(state, cmd.Args[0])
case "print":
return Print(state)
case "links":
@@ -271,6 +287,8 @@ func RunCommand(conf *Config, cmd *Command, state *BrowserState) error {
return Save(state, cmd.Args[0], conf)
case "mark":
return Mark(state, cmd.Args, conf)
+ case "tour":
+ return TourCmd(state, cmd.Args, conf)
case "quit":
os.Exit(0)
}