Skip to content

Commit 192e995

Browse files
Merge pull request #369 from haskellfoundation/indexless-link
Remove "index.html" from navigation links
2 parents 7ba2881 + 79f54d8 commit 192e995

File tree

1 file changed

+18
-4
lines changed

1 file changed

+18
-4
lines changed

message-index/site.hs

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import Data.Binary (Binary)
1010
import Data.Data (Typeable)
1111
import Data.Foldable (for_)
1212
import Data.Functor ((<&>))
13-
import Data.List (find, lookup, nub, sort)
13+
import Data.List (find, isPrefixOf, lookup, nub, sort)
1414
import Data.List.NonEmpty (NonEmpty (..))
1515
import qualified Data.List.NonEmpty as NE
1616
import qualified Data.Map.Strict as Map
@@ -74,7 +74,7 @@ main = hakyll $ do
7474
[ listField
7575
"files"
7676
( mconcat
77-
[ urlField "url",
77+
[ indexlessUrlField "url",
7878
field "name" (pure . view _1 . itemBody),
7979
-- Set the language that highlight.js should use for syntax highlighting
8080
field "language" $ \(itemBody -> (filename, _, _)) ->
@@ -169,7 +169,13 @@ breadcrumbField idents =
169169

170170
breadcrumbCtx :: [Item String] -> Context String
171171
breadcrumbCtx parents =
172-
listField "parents" (mconcat [urlField "url", messageTitleField, defaultContext]) (pure parents)
172+
listField "parents" (mconcat [indexlessUrlField "url", messageTitleField, defaultContext]) (pure parents)
173+
174+
indexlessUrlField :: String -> Context a
175+
indexlessUrlField key = field key $ \i ->
176+
let id = itemIdentifier i
177+
empty' = fail $ "No route url found for item " ++ show id
178+
in maybe empty' (indexless . toUrl) <$> getRoute id
173179

174180
messageTitleField :: Context String
175181
messageTitleField = field "title" getTitle
@@ -185,7 +191,7 @@ messageTitleField = field "title" getTitle
185191
Nothing -> pure ""
186192

187193
messageCtx :: Context String
188-
messageCtx = field "id" (pure . getId)
194+
messageCtx = field "id" (pure . getId) <> indexlessUrlField "url"
189195

190196
getId :: Item a -> String
191197
getId item = fromMaybe "" $ getIdentId (itemIdentifier item)
@@ -271,3 +277,11 @@ flagSetFields =
271277
Just (_, g) -> return $ unwords g
272278
Nothing -> return ""
273279
]
280+
281+
indexless :: String -> String
282+
indexless url
283+
| reverse toDrop `isPrefixOf` lru = reverse $ drop (length toDrop) lru
284+
| otherwise = url
285+
where
286+
lru = reverse url
287+
toDrop = "index.html"

0 commit comments

Comments
 (0)