From 778ea957f04583584927152867cd9efa763a2caf Mon Sep 17 00:00:00 2001 From: Alex Yatskov Date: Sat, 30 Mar 2024 22:00:58 -0700 Subject: [PATCH] WIP --- main.go | 36 +++++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/main.go b/main.go index 3890f85..12a4270 100644 --- a/main.go +++ b/main.go @@ -6,6 +6,7 @@ import ( "errors" "flag" "fmt" + "html" "log" "os" "path/filepath" @@ -36,6 +37,10 @@ type ( Table = []TableRow ) +func wrapSpan(content, class string) string { + return fmt.Sprintf("%s", class, html.EscapeString(content)) +} + func injectStories(table Table, path string, heisigIndex int) error { fp, err := os.Open(path) if err != nil { @@ -58,7 +63,8 @@ func injectStories(table Table, path string, heisigIndex int) error { var stories strings.Builder for _, story := range character.Stories { - stories.WriteString(fmt.Sprintf("%s", story.Content)) + content := strings.ReplaceAll(story.Content, "\n", " ") + stories.WriteString(wrapSpan(content, "rtk-story")) } row = append(row, stories.String()) @@ -89,30 +95,29 @@ func injectKanjidic(table Table, path string, heisigIndex int) error { } var ( - meanings []string - kunyomi []string - onyomi []string + meanings strings.Builder + kunyomi strings.Builder + onyomi strings.Builder ) for _, reading := range character.ReadingMeaning.Readings { switch reading.Type { case "ja_on": - onyomi = append(onyomi, reading.Value) + onyomi.WriteString(wrapSpan(reading.Value, "rtk-onyomi")) case "ja_kun": - kunyomi = append(kunyomi, reading.Value) + kunyomi.WriteString(wrapSpan(reading.Value, "rtk-kunyomi")) } } for _, meaning := range character.ReadingMeaning.Meanings { if meaning.Language == nil { - meanings = append(meanings, meaning.Meaning) + meanings.WriteString(wrapSpan(meaning.Meaning, "rtk-meaning")) } } - const seperator = " " - row = append(row, strings.Join(meanings, seperator)) - row = append(row, strings.Join(kunyomi, seperator)) - row = append(row, strings.Join(onyomi, seperator)) + row = append(row, meanings.String()) + row = append(row, kunyomi.String()) + row = append(row, onyomi.String()) table[i] = row found = true @@ -160,6 +165,7 @@ func saveTable(path string, table Table) error { defer fp.Close() writer := csv.NewWriter(fp) + writer.Comma = '\t' if err := writer.WriteAll(table); err != nil { return err } @@ -194,14 +200,14 @@ func main() { log.Fatal(err) } - if len(*storiesPath) > 0 { - if err := injectStories(table, *storiesPath, *heisigIndex); err != nil { + if len(*kanjidicPath) > 0 { + if err := injectKanjidic(table, *kanjidicPath, *heisigIndex); err != nil { log.Fatal(err) } } - if len(*kanjidicPath) > 0 { - if err := injectKanjidic(table, *kanjidicPath, *heisigIndex); err != nil { + if len(*storiesPath) > 0 { + if err := injectStories(table, *storiesPath, *heisigIndex); err != nil { log.Fatal(err) } }