2025-06-05 00:22:32 +07:00

69 lines
1.5 KiB
Go

package main
import (
"encoding/json"
"os"
"strings"
)
type story struct {
Places []placeBlock `json:"places"`
}
type placeBlock struct {
Code string `json:"code"`
Name string `json:"name"`
Text string `json:"text"`
Applications []application `json:"applications,omitempty"`
}
type application struct {
Name string `json:"name"`
}
func main() {
b, err := os.ReadFile("./cmd/text_to_story/text.txt")
if err != nil {
panic(err)
}
story := &story{}
lines := strings.Split(string(b), "\n")
var place *placeBlock
text := ""
for _, line := range lines {
if strings.HasPrefix(line, "[") {
if place != nil {
place.Text = strings.TrimSpace(text)
story.Places = append(story.Places, *place)
text = ""
}
place = &placeBlock{}
codeAndName := strings.Split(line, " ")
place.Code = strings.Trim(codeAndName[0], "[]")
place.Name = strings.TrimSpace(strings.TrimPrefix(strings.Join(codeAndName[1:], " "), "-"))
continue
}
if strings.HasPrefix(line, "Приложение:") {
place.Applications = append(
place.Applications,
application{
Name: strings.TrimSpace(strings.TrimPrefix(line, "Приложение:")),
},
)
continue
}
text += line + "\n"
}
place.Text = strings.TrimSpace(text)
story.Places = append(story.Places, *place)
res, err := json.Marshal(story)
if err != nil {
panic(err)
}
if err := os.WriteFile("./cmd/text_to_story/story.json", res, 0x777); err != nil {
panic(err)
}
}