Reader -> Reader+Parser refactoring: moved the

reading of the lines to its own function
This commit is contained in:
Karma Riuk 2023-08-05 10:48:41 +02:00
parent ab6f85b7b6
commit 929c5b58a0

View File

@ -12,18 +12,30 @@ type TextReader struct {
} }
func (r TextReader) Read() (*maze.RawMaze, error) { func (r TextReader) Read() (*maze.RawMaze, error) {
var lines []string lines, err := getLines(r.Filename)
if _, err := os.Stat(r.Filename); err != nil {
return nil, err
}
file, err := os.Open(r.Filename)
if err != nil { if err != nil {
return nil, err return nil, err
} }
{ return &maze.RawMaze{
PathChar: r.PathChar,
WallChar: r.WallChar,
Data: *lines,
}, nil
}
func getLines(filename string) (*[]string, error) {
var lines []string
if _, err := os.Stat(filename); err != nil {
return nil, err
}
file, err := os.Open(filename)
if err != nil {
return nil, err
}
defer file.Close()
scanner := bufio.NewScanner(file) scanner := bufio.NewScanner(file)
scanner.Split(bufio.ScanLines) scanner.Split(bufio.ScanLines)
@ -31,8 +43,6 @@ func (r TextReader) Read() (*maze.RawMaze, error) {
line := scanner.Text() line := scanner.Text()
lines = append(lines, line) lines = append(lines, line)
} }
file.Close()
}
return &maze.RawMaze{PathChar: r.PathChar, WallChar: r.WallChar, Data: lines}, nil return &lines, nil
} }