Add stylish-haskell config

This commit is contained in:
2025-08-04 10:40:25 +02:00
parent 2a86a80881
commit 865e4e3b87
9 changed files with 542 additions and 55 deletions
+8 -8
View File
@@ -1,6 +1,6 @@
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE OverloadedStrings #-}
module Yore.DB
( DayIndex (..)
@@ -23,21 +23,21 @@ import qualified Database.PostgreSQL.Opium as Opium
data Table = Table
{ schema :: String
, name :: String
, name :: String
} deriving (Show, Generic, Opium.FromRow)
getTables :: Opium.Connection -> IO (Either Opium.Error [Table])
getTables = Opium.fetch_ "SELECT table_schema AS schema, table_name AS name FROM information_schema.tables"
data DayIndex = DayIndex
{ day_index_id :: Int
, day :: Day
{ day_index_id :: Int
, day :: Day
} deriving (Show, Generic, Opium.FromRow)
data DayFile = DayFile
{ day_file_id :: Int
, day_index_id :: Int
, label :: Text
{ day_file_id :: Int
, day_index_id :: Int
, label :: Text
, relative_path :: FilePath
} deriving (Show, Generic, Opium.FromRow)
+1 -1
View File
@@ -7,7 +7,7 @@ import Data.Maybe (fromJust)
import Data.Text (Text)
import Network.HTTP.Req hiding (queryParam)
import System.Directory (createDirectoryIfMissing)
import System.FilePath (makeRelative, takeExtension, (</>), (<.>))
import System.FilePath (makeRelative, takeExtension, (<.>), (</>))
import qualified Data.ByteString.Lazy as LBS
import qualified Data.Text as Text
+1 -1
View File
@@ -1,5 +1,5 @@
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE OverloadedRecordDot #-}
{-# LANGUAGE OverloadedStrings #-}
module Yore.Index (createEntries) where
+2 -2
View File
@@ -1,6 +1,6 @@
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedRecordDot #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE OverloadedStrings #-}
module Yore.Repl (connect, exec, getToday, indexDay, addYears) where
+29 -29
View File
@@ -1,38 +1,38 @@
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedRecordDot #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE ViewPatterns #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedRecordDot #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE ViewPatterns #-}
module Yore.Scrape (Issue (..), getIssuesByDay) where
import Control.Lens (each, (^?), (^..))
import Control.Lens (each, (^..), (^?))
import Control.Monad (guard)
import Data.Char (chr, isDigit, ord)
import Data.Maybe (listToMaybe, mapMaybe)
import Data.Text (Text)
import Data.Time (Year, MonthOfYear, Day, fromGregorian, toGregorian)
import Data.Time (Day, MonthOfYear, Year, fromGregorian, toGregorian)
import Network.HTTP.Req
( GET (..)
, BsResponse
, NoReqBody (..)
, Req
, bsResponse
, defaultHttpConfig
, formToQuery
, https
, req
, responseBody
, responseStatusCode
, runReq
, (/:)
)
import Text.HTML.Parser (Token (..), Attr (..), parseTokens)
( BsResponse
, GET (..)
, NoReqBody (..)
, Req
, bsResponse
, defaultHttpConfig
, formToQuery
, https
, req
, responseBody
, responseStatusCode
, runReq
, (/:)
)
import Text.HTML.Parser (Attr (..), Token (..), parseTokens)
import Text.Printf (printf)
import Text.URI (URI)
import Text.URI.Lens (queryParam, uriPath, uriQuery, unRText)
import Text.URI.Lens (queryParam, unRText, uriPath, uriQuery)
import Text.URI.QQ (queryKey)
import qualified Data.Text as Text
@@ -41,7 +41,7 @@ import qualified Text.URI as URI
-- | A single issue of a newspaper. There may be multiple isses per day.
data Issue = Issue
{ day :: Day
{ day :: Day
, label :: Text
-- ^ A human-readable label for the issue, e.g. @1. Blatt@, @Sportblatt@ or @Handelsblatt@.
, url :: Text
@@ -147,7 +147,7 @@ getShowday t = do
getAHref :: Token -> Maybe Text
getAHref (TagOpen "a" attrs) = getAttr "href" attrs
getAHref _ = Nothing
getAHref _ = Nothing
getRefreshTarget :: Token -> Maybe Text
getRefreshTarget (TagOpen "meta" attrs) = do
@@ -180,14 +180,14 @@ getParam param uri =
decodeDecimalEntities :: Text -> Text
decodeDecimalEntities = Text.pack . q0 . Text.unpack
where
q0 "" = ""
q0 "" = ""
q0 ('&' : '#' : r) = q1 0 r
q0 (c : r) = c : q0 r
q0 (c : r) = c : q0 r
-- Silently swallows broken entities at the end of the string...
q1 _ "" = ""
q1 acc (';' : r) = chr acc : q0 r
q1 acc (c : r)
q1 acc (c : r)
| isDigit c = q1 (10 * acc + ord c - ord '0') r
-- Or if they end unexpectedly.
| otherwise = c : q0 r
+2 -2
View File
@@ -1,7 +1,7 @@
module Yore.Time (addYears, getCurrentDay) where
import Data.Time (Day, addGregorianYearsClip, isLeapYear, toGregorian)
import Data.Time.LocalTime (localDay, zonedTimeToLocalTime, getZonedTime)
import Data.Time.LocalTime (getZonedTime, localDay, zonedTimeToLocalTime)
addYears :: Integer -> Day -> Maybe Day
addYears yearOffset date
@@ -9,7 +9,7 @@ addYears yearOffset date
Nothing
| otherwise =
Just $ addGregorianYearsClip yearOffset date
where
(year, month, day) = toGregorian date
year' = year + yearOffset