Skip to content

Commit 1d0ee5b

Browse files
committed
format
1 parent 05e81f3 commit 1d0ee5b

File tree

3 files changed

+73
-24
lines changed

3 files changed

+73
-24
lines changed

src/Markdown.hs

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,52 @@ markdownToHtml input = T.concat $ map renderElement $ Parser.parseMarkdown $ T.l
1313

1414
renderElement :: MDElement -> Text
1515
renderElement element = case element of
16+
LabReport info ->
17+
T.concat
18+
[ T.pack "<div align=\"center\">\n",
19+
T.pack "<h3>",
20+
escapeHtml (university info),
21+
T.pack "</h3>\n",
22+
T.pack "<div style=\"margin-top: 50px;\">\n",
23+
T.pack "<h2><b>",
24+
escapeHtml (labName info),
25+
T.pack "</b></h2>\n",
26+
T.pack "</div>\n",
27+
T.pack "<h3>по дисциплине\n\"",
28+
escapeHtml (discipline info),
29+
T.pack "\"\n</h3>\n",
30+
T.pack "</div>\n\n",
31+
T.pack "<div align=\"right\" style=\"margin-top: 50px;\">\n",
32+
T.pack " <b>Выполнили студенты группы ",
33+
escapeHtml (groupName info),
34+
T.pack ":</b>\n",
35+
T.pack " <ul style=\"list-style-type: none; padding-left: 0; margin: 0;\">\n",
36+
renderStudentsList (students info),
37+
T.pack " </ul>\n",
38+
T.pack " <div style=\"margin-top: 20px;\">\n",
39+
T.pack " <b>Преподаватель:</b>\n",
40+
T.pack " ",
41+
escapeHtml (teacher info),
42+
T.pack "\n",
43+
T.pack " </div>\n",
44+
T.pack "</div>\n\n",
45+
T.pack "<div align=\"center\" style=\"margin-top: 200px; text: center\">\n",
46+
T.pack "г. ",
47+
escapeHtml (city info),
48+
T.pack "\n\n",
49+
escapeHtml (year info),
50+
T.pack " г.\n",
51+
T.pack "</div>\n\n",
52+
T.pack "<div style=\"page-break-after: always;\"></div>\n"
53+
]
54+
where
55+
renderStudentsList :: [Text] -> Text
56+
renderStudentsList =
57+
T.concat
58+
. map
59+
( \student ->
60+
T.concat [T.pack " <li>", escapeHtml student, T.pack "</li>\n"]
61+
)
1662
Image alt url title ->
1763
let titleAttr =
1864
if T.null title

src/Parser.hs

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
module Parser (parseMarkdown, isTableLine) where
22

3+
import Control.Monad (guard)
34
import Crypto.Hash (Digest, MD5, hash)
45
import Data.Char (isAlpha, isAlphaNum, isDigit, isSpace)
56
import Data.List (groupBy)
@@ -8,11 +9,10 @@ import Data.Text (Text, break)
89
import qualified Data.Text as T
910
import Data.Text.Encoding (encodeUtf8)
1011
import Types
11-
( MDElement (..),
12+
( LabReportInfo (..),
13+
MDElement (..),
1214
TableAlignment (..),
13-
LabReportInfo (..),
1415
)
15-
import Control.Monad (guard)
1616

1717
data ListContext = ListContext
1818
{ indentLevel :: Int,
@@ -129,7 +129,7 @@ parseLines acc (line : lines)
129129
| isLabReportLine line =
130130
case parseLabReport line of
131131
Just labReport -> processBlock (reverse acc) ++ [labReport] ++ parseLines [] lines
132-
Nothing -> parseLines (line:acc) lines
132+
Nothing -> parseLines (line : acc) lines
133133
| isListLine line =
134134
let (listItems, rest) = extractListItems (line : lines)
135135
parsedLists = parseNestedLists listItems
@@ -566,13 +566,15 @@ parseLabReport line = do
566566
Just studentsStr -> Just $ map T.strip $ T.splitOn (T.pack ";") studentsStr
567567
Nothing -> Nothing
568568

569-
return $ LabReport LabReportInfo
570-
{ university = head parts
571-
, labName = parts !! 1
572-
, discipline = parts !! 2
573-
, groupName = parts !! 3
574-
, students = students
575-
, teacher = parts !! 5
576-
, city = parts !! 6
577-
, year = parts !! 7
578-
}
569+
return $
570+
LabReport
571+
LabReportInfo
572+
{ university = head parts,
573+
labName = parts !! 1,
574+
discipline = parts !! 2,
575+
groupName = parts !! 3,
576+
students = students,
577+
teacher = parts !! 5,
578+
city = parts !! 6,
579+
year = parts !! 7
580+
}

src/Types.hs

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,23 @@
11
module Types
22
( MDElement (..),
33
TableAlignment (..),
4-
LabReportInfo(..),
4+
LabReportInfo (..),
55
)
66
where
77

88
import Data.Text (Text)
99

1010
data LabReportInfo = LabReportInfo
11-
{ university :: Text
12-
, labName :: Text
13-
, discipline :: Text
14-
, groupName :: Text
15-
, students :: [Text]
16-
, teacher :: Text
17-
, city :: Text
18-
, year :: Text
19-
} deriving (Show, Eq)
11+
{ university :: Text,
12+
labName :: Text,
13+
discipline :: Text,
14+
groupName :: Text,
15+
students :: [Text],
16+
teacher :: Text,
17+
city :: Text,
18+
year :: Text
19+
}
20+
deriving (Show, Eq)
2021

2122
data TableAlignment
2223
= AlignLeft

0 commit comments

Comments
 (0)