diff options
author | Charlie Stanton <charlie@shtanton.xyz> | 2023-05-12 11:37:44 +0100 |
---|---|---|
committer | Charlie Stanton <charlie@shtanton.xyz> | 2023-05-12 11:37:44 +0100 |
commit | 551613765c9e60e2221ac920d2756b949e68f373 (patch) | |
tree | ac579a9e0d6c015edca694880f259c8dac4d7a04 /main | |
parent | e98ebbad387def55d8347adb5bf45034d542cce0 (diff) | |
download | stred-go-551613765c9e60e2221ac920d2756b949e68f373.tar |
Move reading and writing of tokens into a separate package to prepare for other input and output formats
Diffstat (limited to 'main')
-rw-r--r-- | main/command.go | 9 | ||||
-rw-r--r-- | main/main.go | 18 |
2 files changed, 15 insertions, 12 deletions
diff --git a/main/command.go b/main/command.go index 63cc3b8..ef48596 100644 --- a/main/command.go +++ b/main/command.go @@ -13,12 +13,13 @@ type Command interface { type PrintValueCommand struct {} func (cmd PrintValueCommand) exec(state *ProgramState) { - pathValues, err := walk.Compound(state.path) + err := state.out.Write(walk.WalkItem { + Path: state.path, + Value: state.value, + }) if err != nil { - panic("Tried to convert invalid atoms to values") + panic("Error while outputting") } - path := walk.PathFromWalkValues(pathValues) - state.out.Print(path, state.value) state.pc++ } func (cmd PrintValueCommand) String() string { diff --git a/main/main.go b/main/main.go index 55ed5b5..668253d 100644 --- a/main/main.go +++ b/main/main.go @@ -4,14 +4,15 @@ import ( "os" "bufio" "main/walk" + "main/json_tokens" ) type Program []Command type ProgramState struct { path, value, xreg, yreg, zreg []walk.Atom - in walk.JSONIn - out walk.JSONOut + in walk.StredReader + out walk.StredWriter program []Command pc int } @@ -44,8 +45,8 @@ func main() { stdout := bufio.NewWriter(os.Stdout) state := ProgramState { - in: walk.NewJSONIn(stdin), - out: walk.NewJSONOut(stdout), + in: json_tokens.NewJSONIn(stdin), + out: json_tokens.NewJSONOut(stdout), program: program, } @@ -61,12 +62,13 @@ func main() { state.program[state.pc].exec(&state) } if !quiet { - pathValues, err := walk.Compound(state.path) + err := state.out.Write(walk.WalkItem { + Path: state.path, + Value: state.value, + }) if err != nil { - panic("Tried to convert invalid atoms to values") + panic("Error while outputting") } - path := walk.PathFromWalkValues(pathValues) - state.out.Print(path, state.value) } } |