correction yaml creation - extraction yaml + html preparation
This commit is contained in:
63
internal/renderer/fetchingyaml.go
Normal file
63
internal/renderer/fetchingyaml.go
Normal file
@@ -0,0 +1,63 @@
|
||||
package renderer
|
||||
import (
|
||||
"log"
|
||||
"project.hechon.fr/internal/config"
|
||||
"project.hechon.fr/internal/models"
|
||||
"gopkg.in/yaml.v3"
|
||||
"os"
|
||||
"path"
|
||||
"strconv"
|
||||
"fmt"
|
||||
)
|
||||
|
||||
func ExtractChapter(cfg *config.Cfg, chapterNum int) (error){
|
||||
|
||||
fileName := path.Join(cfg.YamlPath, cfg.Book.Name + strconv.Itoa(chapterNum) + ".yaml")
|
||||
file, err := os.Open(fileName)
|
||||
if err != nil {
|
||||
log.Printf("can’t open %v: %v", fileName, err)
|
||||
return err
|
||||
}
|
||||
|
||||
var yamlData models.Yaml
|
||||
if err = yaml.NewDecoder(file).Decode(&yamlData) ; err != nil{
|
||||
return err
|
||||
}
|
||||
|
||||
log.Printf("%v", yamlData)
|
||||
|
||||
if len(yamlData.PoeticLines) == 0 || len(yamlData.PoeticLines[0].Cola) == 0 {
|
||||
return fmt.Errorf("no data in %v", fileName)
|
||||
}
|
||||
|
||||
var psalm models.Psalm
|
||||
currentStrophe := models.Strophe{
|
||||
Who: yamlData.PoeticLines[0].Who,
|
||||
To: yamlData.PoeticLines[0].To,
|
||||
Of: yamlData.PoeticLines[0].Of,
|
||||
}
|
||||
|
||||
for _, poeticLine := range yamlData.PoeticLines{
|
||||
log.Printf("first line: %v - %v - %v", poeticLine.Who, poeticLine.To, poeticLine.Of)
|
||||
|
||||
if poeticLine.Who == currentStrophe.Who &&
|
||||
poeticLine.To == currentStrophe.To &&
|
||||
poeticLine.Of == currentStrophe.Of {
|
||||
currentStrophe.Colas = append(currentStrophe.Colas, poeticLine.Cola)
|
||||
}else{
|
||||
psalm.Strophes = append(psalm.Strophes, currentStrophe)
|
||||
currentStrophe.Who = poeticLine.Who
|
||||
currentStrophe.Of = poeticLine.Of
|
||||
currentStrophe.To = poeticLine.To
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
psalm.Strophes = append(psalm.Strophes, currentStrophe)
|
||||
|
||||
log.Printf("%v", psalm)
|
||||
return nil
|
||||
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user