diff --git a/plugins/InfoBox.hs b/plugins/InfoBox.hs
index 75488bf..b081673 100644
--- a/plugins/InfoBox.hs
+++ b/plugins/InfoBox.hs
@@ -76,45 +76,67 @@ serializeRowToHTML :: TableRowData -> String
serializeRowToHTML (HeadingRowData label) = "
| " ++ label ++ " |
\n"
serializeRowToHTML (FieldRowData label value) = "| " ++ label ++ " | " ++ value ++ " |
\n"
+serializeRowsToTableBodies :: [TableRowData] -> [TableBody]
+serializeRowsToTableBodies [] = []
+serializeRowsToTableBodies (x:xs) = serializeRowToTableBodies x (serializeRowsToTableBodies xs)
+
+serializeRowToTableBodies :: TableRowData -> [TableBody] -> [TableBody]
+serializeRowToTableBodies (HeadingRowData label) result = result ++ [
+ (
+ TableBody
+ nullAttr
+ (RowHeadColumns 1)
+ [
+ Row nullAttr [
+ Cell nullAttr AlignCenter (RowSpan 1) (ColSpan 2) [Plain [((Str . pack) label)]]
+ ]
+ ]
+ []
+ )
+ ]
+serializeRowToTableBodies (FieldRowData label value) result = (init result) ++ [
+ (
+ addBodyRow
+ (last result)
+ (
+ Row nullAttr [
+ Cell nullAttr AlignLeft (RowSpan 1) (ColSpan 1) [Plain [((Str . pack) label)]],
+ Cell nullAttr AlignLeft (RowSpan 1) (ColSpan 1) [Para [(Str (pack value))]]
+ ]
+ )
+ )
+ ]
+
+addBodyRow :: TableBody -> Row -> TableBody
+addBodyRow (TableBody attr rhc headRows bodyRows) row = TableBody attr rhc headRows (bodyRows ++ [row])
+
+serializeToBlock :: InfoBoxData -> Block
+serializeToBlock infoBoxData =
+ Div ("", ["info-box"], []) [
+ Header 2 nullAttr [(Str . pack) (title infoBoxData)],
+ SimpleFigure
+ nullAttr
+ [Str (pack (maybe "" (\x -> x) (imageCaption infoBoxData)))]
+ (
+ pack (maybe "" (\x -> x) (imageURL infoBoxData)),
+ ""
+ ),
+ Table
+ nullAttr
+ (Caption Nothing [])
+ [(AlignLeft,ColWidthDefault), (AlignLeft,ColWidthDefault)]
+ (TableHead nullAttr [])
+ (serializeRowsToTableBodies (reverse (tableRows infoBoxData)))
+ (TableFoot nullAttr [])
+ ]
+
plugin :: Plugin
plugin = mkPageTransform transformBlock
- -- return $ Table
- -- ("ttable", [], [])
- -- (Caption (Just [(Str "some caption")]) [])
- -- [(AlignLeft,ColWidth 20), (AlignLeft,ColWidthDefault)]
- -- (TableHead ("thead", [], []) [
- -- Row ("theadrow1", [], []) [
- -- Cell ("theadcell1", [], []) AlignLeft (RowSpan 1) (ColSpan 1) [Plain [(Str "Header col 1")]]
- -- ]
- -- ])
- -- [TableBody ("tbody1", [], []) (RowHeadColumns 0) [
- -- Row ("trow1.1", [], []) [
- -- Cell ("tcell1.1a", [], []) AlignLeft (RowSpan 1) (ColSpan 1) [Plain [(Str "content cell1.1a"), (Str "2nd content cell1.1")]]
- -- ],
- -- Row ("trow1.2", [], []) [
- -- Cell ("tcell1.2a", [], []) AlignLeft (RowSpan 1) (ColSpan 1) [Plain [(Str "content cell1.2a")]],
- -- Cell ("tcell1.2b", [], []) AlignLeft (RowSpan 1) (ColSpan 1) [Plain [(Str "content cell1.2b")]]
- -- ],
- -- Row ("trow1.3", [], []) [
- -- Cell ("tcell1.3a", [], []) AlignLeft (RowSpan 1) (ColSpan 1) [Plain [(Str "content cell1.3a")]],
- -- Cell ("tcell1.3b", [], []) AlignLeft (RowSpan 1) (ColSpan 1) [Plain [(Str "content cell1.3b")]]
- -- ]
- -- ] [
- -- Row ("trow2.1", [], []) [
- -- Cell ("tcell2.1a", [], []) AlignLeft (RowSpan 1) (ColSpan 1) [Plain [(Str "content cell2.1a")]],
- -- Cell ("tcell2.1b", [], []) AlignLeft (RowSpan 1) (ColSpan 1) [Plain [(Str "content cell2.1b")]]
- -- ],
- -- Row ("trow2.2", [], []) [
- -- Cell ("tcell2.2a", [], []) AlignLeft (RowSpan 1) (ColSpan 1) [Plain [(Str "content cell2.2a")]],
- -- Cell ("tcell2.2b", [], []) AlignLeft (RowSpan 1) (ColSpan 1) [Plain [(Str "content cell2.2b")]]
- -- ]
- -- ]]
- -- (TableFoot ("tfoot", [], []) [])
transformBlock :: Block -> Block
transformBlock (CodeBlock (_, classes, namevals) contents) | "infobox" `elem` classes =
traceShow parsed
- serializeToHTML parsed
+ serializeToBlock parsed
where
parsed = (parse (unpack contents))
transformBlock x = x