aboutsummaryrefslogtreecommitdiff
path: root/Utils.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Utils.hs')
-rw-r--r--Utils.hs17
1 files changed, 17 insertions, 0 deletions
diff --git a/Utils.hs b/Utils.hs
index c609262..f95351e 100644
--- a/Utils.hs
+++ b/Utils.hs
@@ -3,6 +3,11 @@ module Utils where
import Control.Monad.IO.Class
import Data.List.Extra (stripSuffix)
import Data.Maybe (isJust)
+import Text.Pandoc.Definition
+import qualified Text.Pandoc.Walk
+import qualified Data.Text as T
+
+import Types
-- | A shortcut for `liftIO`.
io :: MonadIO m => IO a -> m a
@@ -20,3 +25,15 @@ hasSuffix s = isJust . stripSuffix s
-- | The same second as from arrows et al.
second :: (a -> b) -> (c, a) -> (c, b)
second f (a, b) = (a, f b)
+
+-- | A pandoc walker for printing the URLs.
+walkURLs :: (FilePath -> Site FilePath) -> Text.Pandoc.Definition.Pandoc -> Site Text.Pandoc.Definition.Pandoc
+walkURLs f = Text.Pandoc.Walk.walkM go
+ where
+ go (Link a i (u,t)) = do
+ u' <- T.pack <$> f (T.unpack u)
+ pure $ Link a i (u',t)
+ go (Image a i (u,t)) = do
+ u' <- T.pack <$> f (T.unpack u)
+ pure $ Image a i (u',t)
+ go x = pure x