improve link rendering
This commit is contained in:
parent
3c19750338
commit
c84dcab7a3
6
Utils.hs
6
Utils.hs
|
@ -40,3 +40,9 @@ walkURLs f = Text.Pandoc.Walk.walkM go
|
|||
u' <- T.pack <$> f (T.unpack u)
|
||||
pure $ Image a i (u', t)
|
||||
go x = pure x
|
||||
|
||||
hasUriScheme :: String -> String -> Bool
|
||||
hasUriScheme x = all id . zipWith (==) x . (++ ":")
|
||||
|
||||
unAbsolute :: String -> String
|
||||
unAbsolute = dropWhile (== '/')
|
||||
|
|
14
site.hs
14
site.hs
|
@ -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,12 +127,15 @@ 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
|
||||
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
|
||||
|
||||
|
@ -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)
|
||||
|
|
Loading…
Reference in a new issue