From c34a2557681b5201e478583649ee59ddf7544a78 Mon Sep 17 00:00:00 2001 From: Celogeek <65178+celogeek@users.noreply.github.com> Date: Sun, 5 Jan 2025 16:57:23 +0100 Subject: [PATCH] 26 expose the internal epub and epub options package (#44) * make epub and epub options public * export only interface --- internal/pkg/converter/options.go | 2 +- internal/pkg/epubimageprocessor/processor.go | 2 +- internal/pkg/epubtemplates/content.go | 2 +- main.go | 2 +- {internal/pkg => pkg}/epub/epub.go | 32 +++++++++++-------- {internal/pkg => pkg}/epuboptions/color.go | 0 {internal/pkg => pkg}/epuboptions/crop.go | 0 .../pkg => pkg}/epuboptions/epub_options.go | 0 {internal/pkg => pkg}/epuboptions/image.go | 0 {internal/pkg => pkg}/epuboptions/view.go | 0 10 files changed, 22 insertions(+), 18 deletions(-) rename {internal/pkg => pkg}/epub/epub.go (93%) rename {internal/pkg => pkg}/epuboptions/color.go (100%) rename {internal/pkg => pkg}/epuboptions/crop.go (100%) rename {internal/pkg => pkg}/epuboptions/epub_options.go (100%) rename {internal/pkg => pkg}/epuboptions/image.go (100%) rename {internal/pkg => pkg}/epuboptions/view.go (100%) diff --git a/internal/pkg/converter/options.go b/internal/pkg/converter/options.go index 5fdcdc5..cca9801 100644 --- a/internal/pkg/converter/options.go +++ b/internal/pkg/converter/options.go @@ -9,8 +9,8 @@ import ( "gopkg.in/yaml.v3" - "github.com/celogeek/go-comic-converter/v3/internal/pkg/epuboptions" "github.com/celogeek/go-comic-converter/v3/internal/pkg/utils" + "github.com/celogeek/go-comic-converter/v3/pkg/epuboptions" ) type Options struct { diff --git a/internal/pkg/epubimageprocessor/processor.go b/internal/pkg/epubimageprocessor/processor.go index a245c8e..bb2c368 100644 --- a/internal/pkg/epubimageprocessor/processor.go +++ b/internal/pkg/epubimageprocessor/processor.go @@ -11,10 +11,10 @@ import ( "github.com/celogeek/go-comic-converter/v3/internal/pkg/epubimage" "github.com/celogeek/go-comic-converter/v3/internal/pkg/epubimagefilters" - "github.com/celogeek/go-comic-converter/v3/internal/pkg/epuboptions" "github.com/celogeek/go-comic-converter/v3/internal/pkg/epubprogress" "github.com/celogeek/go-comic-converter/v3/internal/pkg/epubzip" "github.com/celogeek/go-comic-converter/v3/internal/pkg/utils" + "github.com/celogeek/go-comic-converter/v3/pkg/epuboptions" ) type EPUBImageProcessor struct { diff --git a/internal/pkg/epubtemplates/content.go b/internal/pkg/epubtemplates/content.go index 4e20856..7de258d 100644 --- a/internal/pkg/epubtemplates/content.go +++ b/internal/pkg/epubtemplates/content.go @@ -4,8 +4,8 @@ import ( "github.com/beevik/etree" "github.com/celogeek/go-comic-converter/v3/internal/pkg/epubimage" - "github.com/celogeek/go-comic-converter/v3/internal/pkg/epuboptions" "github.com/celogeek/go-comic-converter/v3/internal/pkg/utils" + "github.com/celogeek/go-comic-converter/v3/pkg/epuboptions" ) type Content struct { diff --git a/main.go b/main.go index cac09c5..254c787 100644 --- a/main.go +++ b/main.go @@ -15,8 +15,8 @@ import ( "github.com/tcnksm/go-latest" "github.com/celogeek/go-comic-converter/v3/internal/pkg/converter" - "github.com/celogeek/go-comic-converter/v3/internal/pkg/epub" "github.com/celogeek/go-comic-converter/v3/internal/pkg/utils" + "github.com/celogeek/go-comic-converter/v3/pkg/epub" ) func main() { diff --git a/internal/pkg/epub/epub.go b/pkg/epub/epub.go similarity index 93% rename from internal/pkg/epub/epub.go rename to pkg/epub/epub.go index 1c39dde..debba78 100644 --- a/internal/pkg/epub/epub.go +++ b/pkg/epub/epub.go @@ -16,15 +16,19 @@ import ( "github.com/celogeek/go-comic-converter/v3/internal/pkg/epubimage" "github.com/celogeek/go-comic-converter/v3/internal/pkg/epubimageprocessor" - "github.com/celogeek/go-comic-converter/v3/internal/pkg/epuboptions" "github.com/celogeek/go-comic-converter/v3/internal/pkg/epubprogress" "github.com/celogeek/go-comic-converter/v3/internal/pkg/epubtemplates" "github.com/celogeek/go-comic-converter/v3/internal/pkg/epubtree" "github.com/celogeek/go-comic-converter/v3/internal/pkg/epubzip" "github.com/celogeek/go-comic-converter/v3/internal/pkg/utils" + "github.com/celogeek/go-comic-converter/v3/pkg/epuboptions" ) -type EPUB struct { +type EPUB interface { + Write() error +} + +type epub struct { epuboptions.EPUBOptions UID string Publisher string @@ -48,7 +52,7 @@ func New(options epuboptions.EPUBOptions) EPUB { "zoom": func(s int, z float32) int { return int(float32(s) * z) }, }) - return EPUB{ + return epub{ EPUBOptions: options, UID: uid.String(), Publisher: "GO Comic Converter", @@ -59,7 +63,7 @@ func New(options epuboptions.EPUBOptions) EPUB { } // render templates -func (e EPUB) render(templateString string, data map[string]any) string { +func (e epub) render(templateString string, data map[string]any) string { var result strings.Builder tmpl := template.Must(e.templateProcessor.Parse(templateString)) if err := tmpl.Execute(&result, data); err != nil { @@ -69,7 +73,7 @@ func (e EPUB) render(templateString string, data map[string]any) string { } // write image to the zip -func (e EPUB) writeImage(wz epubzip.EPUBZip, img epubimage.EPUBImage, zipImg *zip.File) error { +func (e epub) writeImage(wz epubzip.EPUBZip, img epubimage.EPUBImage, zipImg *zip.File) error { err := wz.WriteContent( img.EPUBPagePath(), []byte(e.render(epubtemplates.Text, map[string]any{ @@ -87,7 +91,7 @@ func (e EPUB) writeImage(wz epubzip.EPUBZip, img epubimage.EPUBImage, zipImg *zi } // write blank page -func (e EPUB) writeBlank(wz epubzip.EPUBZip, img epubimage.EPUBImage) error { +func (e epub) writeBlank(wz epubzip.EPUBZip, img epubimage.EPUBImage) error { return wz.WriteContent( img.EPUBSpacePath(), []byte(e.render(epubtemplates.Blank, map[string]any{ @@ -98,7 +102,7 @@ func (e EPUB) writeBlank(wz epubzip.EPUBZip, img epubimage.EPUBImage) error { } // write title image -func (e EPUB) writeCoverImage(wz epubzip.EPUBZip, img epubimage.EPUBImage, part, totalParts int) error { +func (e epub) writeCoverImage(wz epubzip.EPUBZip, img epubimage.EPUBImage, part, totalParts int) error { title := "Cover" text := "" if totalParts > 1 { @@ -141,7 +145,7 @@ func (e EPUB) writeCoverImage(wz epubzip.EPUBZip, img epubimage.EPUBImage, part, } // write title image -func (e EPUB) writeTitleImage(wz epubzip.EPUBZip, img epubimage.EPUBImage, title string) error { +func (e epub) writeTitleImage(wz epubzip.EPUBZip, img epubimage.EPUBImage, title string) error { titleAlign := "" if !e.Image.View.PortraitOnly { if e.Image.Manga { @@ -197,7 +201,7 @@ func (e EPUB) writeTitleImage(wz epubzip.EPUBZip, img epubimage.EPUBImage, title } // extract image and split it into part -func (e EPUB) getParts() (parts []epubPart, imgStorage epubzip.StorageImageReader, err error) { +func (e epub) getParts() (parts []epubPart, imgStorage epubzip.StorageImageReader, err error) { images, err := e.imageProcessor.Load() if err != nil { @@ -268,7 +272,7 @@ func (e EPUB) getParts() (parts []epubPart, imgStorage epubzip.StorageImageReade // create a tree from the directories. // // this is used to simulate the toc. -func (e EPUB) getTree(images []epubimage.EPUBImage, skipFiles bool) string { +func (e epub) getTree(images []epubimage.EPUBImage, skipFiles bool) string { t := epubtree.New() for _, img := range images { if skipFiles { @@ -285,7 +289,7 @@ func (e EPUB) getTree(images []epubimage.EPUBImage, skipFiles bool) string { return c.WriteString("") } -func (e EPUB) computeAspectRatio(epubParts []epubPart) float64 { +func (e epub) computeAspectRatio(epubParts []epubPart) float64 { var ( bestAspectRatio float64 bestAspectRatioCount int @@ -312,7 +316,7 @@ func (e EPUB) computeAspectRatio(epubParts []epubPart) float64 { return bestAspectRatio } -func (e EPUB) computeViewPort(epubParts []epubPart) (int, int) { +func (e epub) computeViewPort(epubParts []epubPart) (int, int) { if e.Image.View.AspectRatio == -1 { //keep device size return e.Image.View.Width, e.Image.View.Height @@ -332,7 +336,7 @@ func (e EPUB) computeViewPort(epubParts []epubPart) (int, int) { } } -func (e EPUB) writePart(path string, currentPart, totalParts int, part epubPart, imgStorage epubzip.StorageImageReader) error { +func (e epub) writePart(path string, currentPart, totalParts int, part epubPart, imgStorage epubzip.StorageImageReader) error { hasTitlePage := e.TitlePage == 1 || (e.TitlePage == 2 && totalParts > 1) wz, err := epubzip.New(path) @@ -413,7 +417,7 @@ func (e EPUB) writePart(path string, currentPart, totalParts int, part epubPart, } // create the zip -func (e EPUB) Write() error { +func (e epub) Write() error { epubParts, imgStorage, err := e.getParts() if err != nil { return err diff --git a/internal/pkg/epuboptions/color.go b/pkg/epuboptions/color.go similarity index 100% rename from internal/pkg/epuboptions/color.go rename to pkg/epuboptions/color.go diff --git a/internal/pkg/epuboptions/crop.go b/pkg/epuboptions/crop.go similarity index 100% rename from internal/pkg/epuboptions/crop.go rename to pkg/epuboptions/crop.go diff --git a/internal/pkg/epuboptions/epub_options.go b/pkg/epuboptions/epub_options.go similarity index 100% rename from internal/pkg/epuboptions/epub_options.go rename to pkg/epuboptions/epub_options.go diff --git a/internal/pkg/epuboptions/image.go b/pkg/epuboptions/image.go similarity index 100% rename from internal/pkg/epuboptions/image.go rename to pkg/epuboptions/image.go diff --git a/internal/pkg/epuboptions/view.go b/pkg/epuboptions/view.go similarity index 100% rename from internal/pkg/epuboptions/view.go rename to pkg/epuboptions/view.go