From a9e774676e48dc491d4982e029750686c34e0322 Mon Sep 17 00:00:00 2001 From: Marko Andjelic Date: Sat, 24 Jan 2026 02:03:09 +0000 Subject: [PATCH] Complete mapping from spine to full path in manifest --- app/EpubParser.hs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/EpubParser.hs b/app/EpubParser.hs index d14812e..15c386f 100644 --- a/app/EpubParser.hs +++ b/app/EpubParser.hs @@ -8,7 +8,7 @@ import Text.HTML.Scalpel (scrape, text, tagSelector, attr, attrs, Scraper, chroo import System.FilePath (takeDirectory, ()) import Control.Monad.Reader import qualified Data.Text as T -import Data.Maybe (fromMaybe) +import Data.Maybe (fromMaybe, catMaybes) import qualified Data.Map as M type EpubAction a = ReaderT EpubEnv IO a @@ -62,7 +62,6 @@ getTagText tagName tags = let scraper = text (tagSelector tagName) in T.pack $ fromMaybe "" (scrape scraper tags) - getSpine :: [Tag String] -> [T.Text] getSpine tags = map T.pack . fromMaybe [] $ scrape (attrs "idref" (tagSelector "itemref")) tags @@ -81,7 +80,8 @@ resolvePath spineId = do m <- asks manifestMap p <- asks rootPrefix - let mHref = M.lookup spineId m + pure $ fmap (\href -> p T.unpack href) (M.lookup spineId m) - - pure $ fmap (\href -> p T.unpack href) mHref +resolveSpine :: EpubAction [FilePath] +resolveSpine = + catMaybes <$> (asks spine >>= mapM resolvePath)