Extract scanning ASCII files into a util package

This commit is contained in:
2018-03-18 05:04:46 +00:00
parent 4176ccd94f
commit 10e22d8428
5 changed files with 131 additions and 100 deletions

View File

@@ -1,12 +1,12 @@
package data
import (
"bufio"
"errors"
// "fmt"
"io"
"strconv"
"strings"
"ur.gs/chaos-gate/internal/util/asciiscan"
)
type Cell struct {
@@ -35,13 +35,15 @@ type AnimatedObject struct {
func LoadAnimatedObjectDefinitions(filename string) ([]AnimatedObject, error) {
var out []AnimatedObject
scanLines, err := fileToScanner(filename)
s, err := asciiscan.New(filename)
if err != nil {
return nil, err
}
defer s.Close()
for {
obj, err := consumeAnimatedObjectDefinition(scanLines)
obj, err := consumeAnimatedObjectDefinition(s)
if err == io.EOF {
return out, nil
} else if err != nil {
@@ -52,7 +54,7 @@ func LoadAnimatedObjectDefinitions(filename string) ([]AnimatedObject, error) {
}
}
func consumeAnimatedObjectDefinition(scanner *bufio.Scanner) (AnimatedObject, error) {
func consumeAnimatedObjectDefinition(scanner *asciiscan.Scanner) (AnimatedObject, error) {
var out AnimatedObject
var err error
@@ -61,8 +63,7 @@ func consumeAnimatedObjectDefinition(scanner *bufio.Scanner) (AnimatedObject, er
return out, err
}
if err := consumeIntPtrs(
scanner,
if err := scanner.ConsumeIntPtrs(
&out.Direction, &out.Type, &out.AnimationID, &out.AnimationGroup, &out.AnimatedType,
); err != nil {
return out, err
@@ -89,8 +90,7 @@ func consumeAnimatedObjectDefinition(scanner *bufio.Scanner) (AnimatedObject, er
return out, err
}
if err := consumeIntPtrs(
scanner,
if err := scanner.ConsumeIntPtrs(
&out.Visibility, &out.Protection, &out.MinDelay, &out.DelayRange,
); err != nil {
return out, err
@@ -99,9 +99,9 @@ func consumeAnimatedObjectDefinition(scanner *bufio.Scanner) (AnimatedObject, er
return out, nil
}
func consumeCell(scanner *bufio.Scanner) (Cell, error) {
func consumeCell(scanner *asciiscan.Scanner) (Cell, error) {
out := Cell{}
str, err := consumeString(scanner)
str, err := scanner.ConsumeString()
if err != nil {
return out, err
}