Implement note parsing

This commit is contained in:
2024-10-27 17:18:43 +01:00
parent 9f0435057e
commit c31ab6a01d
6 changed files with 95 additions and 4 deletions

61
main.go
View File

@@ -1,10 +1,13 @@
package main
import (
"flag"
"fmt"
"io"
"log"
"os"
"strings"
"time"
)
var Error *log.Logger
@@ -28,7 +31,59 @@ func init() {
}
func main() {
log.Println("Hello, World!")
Warning.Println("Hello, World!")
Error.Println("Hello, World!")
inputFile := flag.String("if", "input", "Input file")
flag.Parse()
log.Printf("Input file: %s", *inputFile)
db := DB{
path: "data/db.db",
}
err := db.Open()
if err != nil {
Error.Printf("Failed opening database: %v", err)
return
}
defer db.Close()
inputData, err := os.ReadFile(*inputFile)
if err != nil {
Error.Printf("Failed reading input file: %v", err)
return
}
note, err := ParseNote(string(inputData))
if err != nil {
Error.Printf("Failed parsing note: %v", err)
return
}
log.Printf("%#v", note)
}
func ParseNote(data string) (NoteData, error) {
res := NoteData{}
lines := strings.Split(data, "\n")
note := []string{}
for _, line := range lines {
line = strings.TrimSpace(line)
if line == "" {
continue
}
parts := strings.Split(line, ":")
log.Printf("%#v", parts)
switch parts[0] {
case "p":
res.Player = parts[1]
case "d":
var err error
res.Date, err = time.Parse(time.DateOnly, parts[1])
if err != nil {
return res, fmt.Errorf("failed to parse date: %v", err)
}
case "g":
res.Guild = parts[1]
default:
note = append(note, line)
}
}
res.Note = strings.Join(note, "\n")
return res, nil
}