# Pastebin jOzAUQdg navLink :: [String] -> Item String -> Compiler String navLink args item = return $ "" ++ title ++ "" where [to, title] = args itemName = show $ itemIdentifier item classAttr = if (navLinkIsActive to itemName) then " class='active' " else "" navLinkIsActive :: String -> String -> Bool navLinkIsActive to itemName | to == "/" && itemName == "index.html" = True | Just m <- matchPattern "^([^/.]+)\\.html$" = to == "/" ++ m ++ ".html" | Just _ <- matchPattern "^posts/([^/.]+)\\.md$" = to == "/blog.html" | Just _ <- matchPattern "^info/([^/.]+)\\.md$" = to == "/info.html" | Just m <- matchPattern "^([^/.]+)\\.md$" = to == "/" ++ m ++ ".md" | Just m <- matchPattern "^templates/([^.]+)\\.md$" = to == "/" ++ m ++ ".html" | otherwise = error (to ++ " / " ++ itemName) where firstMatch :: (String, String, String, [String]) -> Maybe String firstMatch (_, _, _, [name]) = Just name firstMatch _ = Nothing matchPattern :: String -> Maybe String matchPattern pat = firstMatch $ itemName =~ pat