diff options
| author | Mirek Kratochvil <miroslav.kratochvil@uni.lu> | 2023-06-13 15:53:01 +0200 |
|---|---|---|
| committer | Mirek Kratochvil <miroslav.kratochvil@uni.lu> | 2023-06-13 15:53:01 +0200 |
| commit | c84dcab7a3ced4264da7ab317c2d96e545d5deed (patch) | |
| tree | a2db09c69fa785f849afb539e27be9e1450e1aec /site.hs | |
| parent | 3c197503380ca36c2284a8640b73eb1f6ad5bc41 (diff) | |
| download | reploy-c84dcab7a3ced4264da7ab317c2d96e545d5deed.tar.gz reploy-c84dcab7a3ced4264da7ab317c2d96e545d5deed.tar.bz2 | |
improve link rendering
Diffstat (limited to 'site.hs')
| -rw-r--r-- | site.hs | 18 |
1 files changed, 11 insertions, 7 deletions
@@ -66,7 +66,7 @@ loadPage fp = do md <- io $ runIOorExplode $ readMarkdown markdownReadOpts (T.drop 5 markdown) {- find the main mount point for the page -} let mount = - dropWhile (== '/') . T.unpack . just ("mount point of " ++ fp) $ yml ^? + unAbsolute . T.unpack . just ("mount point of " ++ fp) $ yml ^? key "mount" . _String existing <- use $ pages . to (M.!? mount) @@ -127,14 +127,17 @@ checkTarget fp = do -- | Prepend the root path to the given link rootUrl :: FilePath -> Site FilePath -rootUrl fp = (</> dropWhile (== '/') fp) <$> use urlBase +rootUrl fp = (</> unAbsolute fp) <$> use urlBase -- | Process a single link pointing out from a page. processLink :: FilePath -> FilePath -> Site String -processLink base l = - if isAbsolute l - then rootUrl l - else installFile (base </> l) >>= rootUrl +processLink base l = do + io $ putStrLn l + if any (l `hasUriScheme`) ["http", "https", "ftp", "mailto"] + then pure l + else if isAbsolute l + then rootUrl l + else installFile (base </> l) >>= rootUrl -- | Get a mount point of the page into the correct location. -- (Pages are currently mounted just to the root.) @@ -186,7 +189,8 @@ installPageRedirects :: FilePath -> PageInfo -> Site () installPageRedirects target pi = do traverse_ (installRedirect target) - (pi ^.. pageMeta . key "redirects" . values . _String . to T.unpack) + (pi ^.. pageMeta . key "redirects" . values . _String . to T.unpack . + to unAbsolute) -- | Find the path to the file of a given hash dataFilename :: String -> FilePath -> Site (FilePath, FilePath) |
