Skip to content

Commit 2fc9923

Browse files
authored
Added stylish-haskell dependency and made other style improvements (#1535)
* Added .eslintcache to .gitignore
1 parent 9398f84 commit 2fc9923

24 files changed

+210
-215
lines changed

.gitignore

+74-71
Original file line numberDiff line numberDiff line change
@@ -1,71 +1,74 @@
1-
# cabal sandbox
2-
.cabal-sandbox/
3-
cabal.sandbox.config
4-
5-
# local database
6-
*.sqlite3
7-
*.sqlite3-shm
8-
*.sqlite3-wal
9-
10-
# generated build files
11-
/app/dist/
12-
13-
# generated stack files
14-
.stack-work/
15-
16-
# generated CSS
17-
/public/style/
18-
19-
# generated resources
20-
/graphs/gen/*.svg
21-
/graphs/gen/*.png
22-
23-
# course videos
24-
/public/videos/
25-
26-
# generated documentation
27-
/doc
28-
29-
# IDE project files
30-
.idea
31-
.vscode
32-
33-
# Node (Javascript) modules
34-
/node_modules
35-
36-
# Yarn files
37-
.yarn/*
38-
!.yarn/cache
39-
!.yarn/patches
40-
!.yarn/plugins
41-
!.yarn/releases
42-
!.yarn/sdks
43-
!.yarn/versions
44-
45-
# TODO: eventually remove all public/js files from tracking
46-
/public/js/search
47-
/public/js/grid/app.js
48-
/public/js/post/app.js
49-
/public/js/generate/app.js
50-
/public/js/graph/app.js
51-
/public/js/draw/app.js
52-
/public/js/about/app.js
53-
/public/*.svg
54-
/public/*.png
55-
/public/*.ttf
56-
/public/*.eot
57-
/public/*.woff
58-
/public/*.png
59-
/public/*.woff2
60-
61-
# coverage directory used by tools like istanbul and jest --coverage
62-
coverage
63-
64-
# cypress suggested folder structure scaffolding
65-
/cypress/fixtures
66-
/cypress/integration/examples
67-
/cypress/plugins
68-
/cypress/support
69-
70-
# Python virtual environment
71-
venv
1+
# cabal sandbox
2+
.cabal-sandbox/
3+
cabal.sandbox.config
4+
5+
# local database
6+
*.sqlite3
7+
*.sqlite3-shm
8+
*.sqlite3-wal
9+
10+
# generated build files
11+
/app/dist/
12+
13+
# generated stack files
14+
.stack-work/
15+
16+
# generated CSS
17+
/public/style/
18+
19+
# generated resources
20+
/graphs/gen/*.svg
21+
/graphs/gen/*.png
22+
23+
# course videos
24+
/public/videos/
25+
26+
# generated documentation
27+
/doc
28+
29+
# IDE project files
30+
.idea
31+
.vscode
32+
33+
# Node (Javascript) modules
34+
/node_modules
35+
36+
# Yarn files
37+
.yarn/*
38+
!.yarn/cache
39+
!.yarn/patches
40+
!.yarn/plugins
41+
!.yarn/releases
42+
!.yarn/sdks
43+
!.yarn/versions
44+
45+
# TODO: eventually remove all public/js files from tracking
46+
/public/js/search
47+
/public/js/grid/app.js
48+
/public/js/post/app.js
49+
/public/js/generate/app.js
50+
/public/js/graph/app.js
51+
/public/js/draw/app.js
52+
/public/js/about/app.js
53+
/public/*.svg
54+
/public/*.png
55+
/public/*.ttf
56+
/public/*.eot
57+
/public/*.woff
58+
/public/*.png
59+
/public/*.woff2
60+
61+
# coverage directory used by tools like istanbul and jest --coverage
62+
coverage
63+
64+
# cypress suggested folder structure scaffolding
65+
/cypress/fixtures
66+
/cypress/integration/examples
67+
/cypress/plugins
68+
/cypress/support
69+
70+
# Python virtual environment
71+
venv
72+
73+
# Other generated files
74+
.eslintcache

CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757
- Added Debugging Guide
5858
- Added Haskell Language Server (HLS) Guide
5959
- Upgraded to Stackage lts-23.18
60+
- Added `stylish-haskell` dependency and ran it on `.hs` source files
6061

6162
## [0.6.0] - 2024-06-24
6263

app/Config.hs

+3-3
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,11 @@ module Config (
2929

3030
import Control.Monad.IO.Class (liftIO)
3131
import Control.Monad.Logger (NoLoggingT)
32-
import Control.Monad.Trans.Resource (ResourceT, MonadUnliftIO)
3332
import Control.Monad.Trans.Reader (ReaderT)
34-
import Data.Aeson (FromJSON(..), object, (.=), Value, (.:), withObject)
35-
import qualified Data.Text as T
33+
import Control.Monad.Trans.Resource (MonadUnliftIO, ResourceT)
34+
import Data.Aeson (FromJSON (..), Value, object, withObject, (.:), (.=))
3635
import Data.Text (Text)
36+
import qualified Data.Text as T
3737
import Data.Time (Day)
3838
import Data.Yaml.Config (loadYamlSettings, useEnv)
3939
import Database.Persist.Sqlite (SqlBackend, runSqlite)

app/Controllers/Course.hs

+4-4
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@ module Controllers.Course
33

44
import Config (runDb)
55
import Control.Monad.IO.Class (liftIO)
6+
import Data.List (nub, sort)
67
import qualified Data.Text as T (Text, unlines, unpack)
7-
import Data.List (sort, nub)
8+
import qualified Database.CourseQueries as CourseHelpers (getDeptCourses, queryCourse)
89
import Database.Persist (Entity)
9-
import Database.Persist.Sqlite (SqlPersistM, selectList, entityVal)
10+
import Database.Persist.Sqlite (SqlPersistM, entityVal, selectList)
1011
import Database.Tables as Tables (Courses, coursesCode)
11-
import Happstack.Server (lookText', ServerPart, Response, toResponse)
12+
import Happstack.Server (Response, ServerPart, lookText', toResponse)
1213
import Util.Happstack (createJSONResponse)
13-
import qualified Database.CourseQueries as CourseHelpers (queryCourse, getDeptCourses)
1414

1515
-- | Takes a course code (e.g. \"CSC108H1\") and sends a JSON representation
1616
-- of the course as a response.

app/Controllers/Generate.hs

+13-13
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
11
module Controllers.Generate
22
(generateResponse, findAndSavePrereqsResponse) where
33

4-
import Happstack.Server
5-
import MasterTemplate
6-
import Scripts
7-
import Text.Blaze ((!))
8-
import qualified Text.Blaze.Html5 as H
9-
import qualified Text.Blaze.Html5.Attributes as A
10-
import Control.Monad()
4+
import Control.Monad ()
115
import Control.Monad.IO.Class (liftIO)
126
import Data.Aeson (decode, object, (.=))
137
import Data.List (nub)
148
import Data.Maybe (fromJust, isNothing, mapMaybe)
159
import qualified Data.Text.Lazy as TL
16-
import Database.CourseQueries (returnPost, reqsForPost)
17-
import DynamicGraphs.WriteRunDot (getBody, generateAndSavePrereqResponse)
10+
import Database.CourseQueries (reqsForPost, returnPost)
1811
import DynamicGraphs.GraphOptions (CourseGraphOptions (..), GraphOptions (..))
12+
import DynamicGraphs.WriteRunDot (generateAndSavePrereqResponse, getBody)
13+
import Happstack.Server
14+
import MasterTemplate
15+
import Scripts
16+
import Text.Blaze ((!))
17+
import qualified Text.Blaze.Html5 as H
18+
import qualified Text.Blaze.Html5.Attributes as A
1919
import Util.Happstack (createJSONResponse)
2020

2121
generateResponse :: ServerPart Response
@@ -41,10 +41,10 @@ findAndSavePrereqsResponse = do
4141
method PUT
4242
requestBody <- getBody
4343
let coursesOptions :: CourseGraphOptions = fromJust $ decode requestBody
44-
44+
4545
postResults <- liftIO $ mapM (\code -> do
4646
post <- returnPost (TL.toStrict code)
47-
return (TL.toStrict code, post))
47+
return (TL.toStrict code, post))
4848
(programs coursesOptions)
4949

5050
let invalidPrograms = map fst $ filter (isNothing . snd) postResults
@@ -55,9 +55,9 @@ findAndSavePrereqsResponse = do
5555
then return $ map TL.pack (concatMap reqsForPost validPrograms)
5656
else return $ courses coursesOptions
5757

58-
let updatedCoursesOptions = coursesOptions
58+
let updatedCoursesOptions = coursesOptions
5959
{ courses = map TL.toUpper allCourses
60-
, graphOptions = (graphOptions coursesOptions)
60+
, graphOptions = (graphOptions coursesOptions)
6161
{ taken = map TL.toUpper (taken (graphOptions coursesOptions))
6262
, departments = map TL.toUpper (departments (graphOptions coursesOptions))
6363
}

app/Controllers/Graph.hs

+9-15
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,22 @@
11
module Controllers.Graph (graphResponse, index, getGraphJSON, graphImageResponse) where
22

3-
import Happstack.Server (ServerPart, Response, toResponse, ok, lookText', look)
4-
import MasterTemplate (masterTemplate, header)
3+
import Control.Monad.IO.Class (liftIO)
4+
import Data.Aeson (object, (.=))
5+
import Data.Maybe (fromMaybe)
6+
import Happstack.Server (Response, ServerPart, look, lookText', ok, toResponse)
7+
import MasterTemplate (header, masterTemplate)
58
import Scripts (graphScripts)
69
import Text.Blaze ((!))
710
import qualified Text.Blaze.Html5 as H
811
import qualified Text.Blaze.Html5.Attributes as A
9-
import Control.Monad.IO.Class (liftIO)
10-
import Data.Aeson (object, (.=))
11-
import Data.Maybe (fromMaybe)
1212

13-
import Database.Tables as Tables
14-
( EntityField(GraphTitle, GraphDynamic), Text, Graph )
15-
import Database.CourseQueries (getGraph)
16-
import Database.Persist.Sqlite
17-
( Entity,
18-
SelectOpt(Asc),
19-
(==.),
20-
selectList,
21-
SqlPersistM )
2213
import Config (runDb)
23-
import Util.Happstack (createJSONResponse)
14+
import Database.CourseQueries (getGraph)
15+
import Database.Persist.Sqlite (Entity, SelectOpt (Asc), SqlPersistM, selectList, (==.))
16+
import Database.Tables as Tables (EntityField (GraphDynamic, GraphTitle), Graph, Text)
2417
import Export.GetImages (getActiveGraphImage)
2518
import Response.Image (returnImageData)
19+
import Util.Happstack (createJSONResponse)
2620

2721
graphResponse :: ServerPart Response
2822
graphResponse =

app/Controllers/Timetable.hs

+16-17
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,31 @@
1-
module Controllers.Timetable
2-
(gridResponse, returnPDF, exportTimetableImageResponse,
3-
exportTimetablePDFResponse, calendarResponse) where
1+
module Controllers.Timetable
2+
(gridResponse, returnPDF, exportTimetableImageResponse,
3+
exportTimetablePDFResponse, calendarResponse) where
44

5-
import Happstack.Server
6-
import MasterTemplate
7-
import Scripts
8-
import Text.Blaze ((!))
9-
import qualified Text.Blaze.Html5 as H
10-
import qualified Text.Blaze.Html5.Attributes as A
5+
import Config (fallEndDate, fallStartDate, holidays, outDay, runDb, winterEndDate, winterStartDate)
116
import Control.Monad.IO.Class (liftIO)
127
import qualified Data.ByteString as BS
138
import Data.ByteString.Base64.Lazy as BEnc
149
import qualified Data.ByteString.Lazy as L
15-
import qualified Data.Text as T
16-
import Export.GetImages
17-
import Export.LatexGenerator
18-
import Export.PdfGenerator
19-
import Response.Image (returnImageData)
20-
import System.Directory (removeFile)
21-
import Config (runDb, fallEndDate, fallStartDate, holidays, outDay, winterEndDate,
22-
winterStartDate)
2310
import Data.List (groupBy, sort, sortOn)
2411
import Data.List.Split (splitOn)
12+
import qualified Data.Text as T
2513
import Data.Time (Day, defaultTimeLocale, formatTime, getCurrentTime, toGregorian)
2614
import Data.Time.Calendar.OrdinalDate (fromMondayStartWeek, mondayStartWeek)
2715
import Database.CourseQueries (returnMeeting)
2816
import Database.Persist.Sqlite (entityKey, entityVal, selectList, (==.))
2917
import Database.Tables
18+
import Export.GetImages
19+
import Export.LatexGenerator
20+
import Export.PdfGenerator
21+
import Happstack.Server
22+
import MasterTemplate
23+
import Response.Image (returnImageData)
24+
import Scripts
25+
import System.Directory (removeFile)
26+
import Text.Blaze ((!))
27+
import qualified Text.Blaze.Html5 as H
28+
import qualified Text.Blaze.Html5.Attributes as A
3029
import Text.Read (readMaybe)
3130

3231
gridResponse :: ServerPart Response

app/Database/CourseInsertion.hs

+2-3
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,9 @@ import Control.Monad.IO.Class (liftIO)
1616
import qualified Data.Aeson as Aeson
1717
import qualified Data.Text as T
1818
import Database.Persist.Class (selectKeysList)
19-
import Database.Persist.Sqlite (SqlPersistM, insert, insertMany_, insert_, selectFirst,
20-
(==.))
19+
import Database.Persist.Sqlite (SqlPersistM, insert, insertMany_, insert_, selectFirst, (==.))
2120
import Database.Tables hiding (breadth, distribution, paths, shapes, texts)
22-
import Happstack.Server (lookBS, lookText', ServerPart, Response, toResponse)
21+
import Happstack.Server (Response, ServerPart, lookBS, lookText', toResponse)
2322

2423
-- | Inserts SVG graph data into Texts, Shapes, and Paths tables
2524
saveGraphJSON :: ServerPart Response

app/Database/CourseQueries.hs

+13-11
Original file line numberDiff line numberDiff line change
@@ -24,18 +24,20 @@ module Database.CourseQueries
2424

2525
import Config (runDb)
2626
import Control.Monad.IO.Class (MonadIO, liftIO)
27-
import Data.Aeson (object, toJSON, Value)
28-
import Data.Char (isAlphaNum, isPunctuation, isAlpha, isDigit)
27+
import Data.Aeson (Value, object, toJSON)
28+
import Data.Char (isAlpha, isAlphaNum, isDigit, isPunctuation)
2929
import Data.List (partition)
3030
import Data.Maybe (fromJust, fromMaybe)
31-
import qualified Data.Text as T (Text, append, tail, isPrefixOf, toUpper, filter, snoc, take, unpack)
32-
import Database.DataType ( ShapeType( Node ) , ShapeType( Hybrid ), ShapeType( BoolNode ))
33-
import Database.Persist.Sqlite (Entity, PersistEntity, SqlPersistM, PersistValue( PersistInt64 ), selectList,
34-
entityKey, entityVal, selectFirst, (==.), (<-.), get, keyToValues, PersistValue( PersistText ),
35-
rawSql)
31+
import qualified Data.Text as T (Text, append, filter, isPrefixOf, snoc, tail, take, toUpper,
32+
unpack)
33+
import Database.DataType (ShapeType (BoolNode, Hybrid, Node))
34+
import Database.Persist.Sqlite (Entity, PersistEntity, PersistValue (PersistInt64, PersistText),
35+
SqlPersistM, entityKey, entityVal, get, keyToValues, rawSql,
36+
selectFirst, selectList, (<-.), (==.))
3637
import Database.Tables as Tables
37-
import Happstack.Server.SimpleHTTP (ServerPart, Response, Request, askRq, lookText', ifModifiedSince)
38-
import Svg.Builder (intersectsWithShape, buildPath, buildEllipses, buildRect)
38+
import Happstack.Server.SimpleHTTP (Request, Response, ServerPart, askRq, ifModifiedSince,
39+
lookText')
40+
import Svg.Builder (buildEllipses, buildPath, buildRect, intersectsWithShape)
3941
import Util.Happstack (createJSONResponse)
4042

4143
-- | Queries the database for all matching lectures, tutorials,
@@ -103,8 +105,8 @@ reqsForPost post = do
103105
where
104106
-- | TODO: change function to use a regex
105107
isCourseCode :: String -> Bool
106-
isCourseCode codeStr =
107-
length codeStr == 8 &&
108+
isCourseCode codeStr =
109+
length codeStr == 8 &&
108110
all isAlphaNum codeStr &&
109111
all isAlpha (take 3 codeStr) &&
110112
all isDigit (take 3 (drop 3 codeStr)) &&

app/Database/Database.hs

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ inserting it into the database. Run when @cabal run database@ is executed.
99
module Database.Database
1010
(populateCalendar, setupDatabase) where
1111

12-
import Control.Monad.IO.Class (liftIO)
1312
import Config (databasePath, runDb)
13+
import Control.Monad.IO.Class (liftIO)
1414
import Data.Maybe (fromMaybe)
1515
import Data.Text as T (findIndex, length, reverse, take, unpack)
1616
import Database.CourseVideoSeed (seedVideos)

0 commit comments

Comments
 (0)