From: sabadev Date: Sat, 27 Mar 2021 15:41:23 +0000 (-0400) Subject: Added the ViewPatterns extension. X-Git-Url: http://sabadev.xyz:4321/?a=commitdiff_plain;h=ba13d398c7156fe48eacf14345ba90eb45c28b12;p=website.git Added the ViewPatterns extension. --- diff --git a/package.yaml b/package.yaml index e1cc1bb..fcd487f 100644 --- a/package.yaml +++ b/package.yaml @@ -48,6 +48,7 @@ default-extensions: - StandaloneDeriving - TypeApplications - TypeOperators +- ViewPatterns library: source-dirs: src diff --git a/src/ApiTypes.hs b/src/ApiTypes.hs index bd0342a..11ab85f 100644 --- a/src/ApiTypes.hs +++ b/src/ApiTypes.hs @@ -35,16 +35,14 @@ data Theme = Theme { themeType :: !LightDark } instance FromHttpApiData Theme where - parseQueryParam theme = do - case T.splitOn "," theme of - [lightText, redText, greenText, blueText] -> do - let parseColorComponent = pure . flip mod 0x100 <=< parseQueryParam - light <- parseQueryParam lightText - red <- parseColorComponent redText - green <- parseColorComponent greenText - blue <- parseColorComponent blueText - pure $ Theme { themeType = light, themeRed = red, themeGreen = green, themeBlue = blue } - _ -> Left $ "Invalid value '" <> theme <> "'. Value must contain four integer values delimited by commas." + parseQueryParam (T.splitOn "," -> [lightText, redText, greenText, blueText]) = do + let parseColorComponent = pure . flip mod 0x100 <=< parseQueryParam + light <- parseQueryParam lightText + red <- parseColorComponent redText + green <- parseColorComponent greenText + blue <- parseColorComponent blueText + pure $ Theme { themeType = light, themeRed = red, themeGreen = green, themeBlue = blue } + parseQueryParam theme = Left $ "Invalid value '" <> theme <> "'. Value must contain four integer values delimited by commas." instance ToHttpApiData Theme where toQueryParam theme = toQueryParam (themeType theme) <> "," <> toQueryParam (themeRed theme) <> "," <> toQueryParam (themeGreen theme) <> "," <> toQueryParam (themeBlue theme) diff --git a/src/Html.hs b/src/Html.hs index 2f5f80c..7d58c26 100644 --- a/src/Html.hs +++ b/src/Html.hs @@ -31,10 +31,8 @@ blogList :: (MonadIO m) => Maybe Theme -> m (Html ()) blogList theme = liftIO $ getDirectoryContents staticPath >>= pure . foldMap (blogListItem theme) . filter (T.isSuffixOf markdownExtension) . fmap T.pack blogListItem :: Maybe Theme -> T.Text -> Html () -blogListItem theme path = do - case blogLink path of - Nothing -> pure $ mempty - Just file -> li_ [class_ "blog-link"] $ a_ [href_ $ safeBlogLink theme $ T.unpack file] $ toHtml file +blogListItem theme (blogLink -> Nothing) = pure $ mempty +blogListItem theme (blogLink -> (Just file)) = li_ [class_ "blog-link"] $ a_ [href_ $ safeBlogLink theme $ T.unpack file] $ toHtml file blogLink :: T.Text -> Maybe T.Text blogLink = T.stripSuffix markdownExtension