refactored ebook preparation, separated from calling the pager

This commit is contained in:
2025-10-21 21:11:04 +02:00
parent 7a6353a3b3
commit bf3bf65a60
2 changed files with 26 additions and 24 deletions

View File

@@ -26,36 +26,32 @@ import (
"github.com/tlinden/epuppy/pkg/epub" "github.com/tlinden/epuppy/pkg/epub"
) )
func View(conf *Config) (int, error) { func Prepare(conf *Config) (*Ebook, error) {
switch filepath.Ext(conf.Document) { switch filepath.Ext(conf.Document) {
case ".epub": case ".epub":
return ViewEpub(conf) return PrepareEpub(conf)
default: default:
return ViewText(conf) return PrepareText(conf)
} }
} }
func ViewText(conf *Config) (int, error) { func PrepareText(conf *Config) (*Ebook, error) {
data, err := os.ReadFile(conf.Document) data, err := os.ReadFile(conf.Document)
if err != nil { if err != nil {
return 0, err return nil, err
} }
if conf.Dump { return &Ebook{
return fmt.Println(string(data))
}
return Pager(&Ebook{
Config: conf, Config: conf,
Title: conf.Document, Title: conf.Document,
Body: string(data), Body: string(data),
}) }, nil
} }
func ViewEpub(conf *Config) (int, error) { func PrepareEpub(conf *Config) (*Ebook, error) {
book, err := epub.Open(conf.Document, conf.XML) book, err := epub.Open(conf.Document, conf.XML)
if err != nil { if err != nil {
return 0, err return nil, err
} }
if conf.Debug { if conf.Debug {
@@ -83,21 +79,13 @@ func ViewEpub(conf *Config) (int, error) {
fetchByContent(conf, &buf, book) fetchByContent(conf, &buf, book)
if conf.Dump { return &Ebook{
return fmt.Println(buf.String())
}
if conf.Debug || conf.XML {
return 0, nil
}
return Pager(&Ebook{
Config: conf, Config: conf,
Title: head.String(), Title: head.String(),
Body: buf.String(), Body: buf.String(),
Cover: book.CoverImage, Cover: book.CoverImage,
MediaType: book.CoverMediaType, MediaType: book.CoverMediaType,
}) }, nil
} }
func fetchByContent(conf *Config, buf *strings.Builder, book *epub.Book) bool { func fetchByContent(conf *Config, buf *strings.Builder, book *epub.Book) bool {

View File

@@ -59,7 +59,21 @@ func Execute(output io.Writer) int {
} }
} }
progress, err := View(conf) ebook, err := Prepare(conf)
if err != nil {
return Die(err)
}
if conf.Dump {
fmt.Println(ebook.Body)
return 0
}
if conf.Debug || conf.XML {
return 0
}
progress, err := Pager(ebook)
if err != nil { if err != nil {
return Die(err) return Die(err)
} }