generated from VLADIMIR/template
69 lines
1.5 KiB
Go
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)
|
|
}
|
|
}
|