Added the ViewPatterns extension.
authorsabadev <saba@sabadev.xyz>
Sat, 27 Mar 2021 15:41:23 +0000 (11:41 -0400)
committersabadev <dev@sabadev.xyz>
Tue, 13 Apr 2021 01:16:43 +0000 (21:16 -0400)
package.yaml
src/ApiTypes.hs
src/Html.hs

index e1cc1bb..fcd487f 100644 (file)
@@ -48,6 +48,7 @@ default-extensions:
 - StandaloneDeriving
 - TypeApplications
 - TypeOperators
+- ViewPatterns
 
 library:
   source-dirs: src
index bd0342a..11ab85f 100644 (file)
@@ -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)
index 2f5f80c..7d58c26 100644 (file)
@@ -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