aboutsummaryrefslogtreecommitdiff
path: root/src/Text/Pandoc
diff options
context:
space:
mode:
authorNils Carlson <pyssling@ludd.ltu.se>2018-09-20 21:30:32 +0000
committerNils Carlson <pyssling@ludd.ltu.se>2018-09-23 22:04:32 +0000
commitce6e9e8817fa7c09625a3c587095bffc8a5eb598 (patch)
tree9bd0a2257086fad2ccde45e5abaf2d4d81b2d4ef /src/Text/Pandoc
parent111e6ffa55e17b5e0399adac484a9510a80d3a3b (diff)
downloadpandoc-ce6e9e8817fa7c09625a3c587095bffc8a5eb598.tar.gz
ODT Writer: Improve table header row style handling
This changes the way styles for cells in the header row and normal rows are handled in ODT tables. Previously a new (but identical) style was generated for every table, specifying the style of the cells within the table. After this change there are two style definitions for table cells, one for the cells in the header row, one for all other cells. This doesn't change the actual styles, but makes post-processing changes to the table styles much simpler as it is no longer necessary to introduce new styles for header rows and there are now only two styles where there was previously one per table.
Diffstat (limited to 'src/Text/Pandoc')
-rw-r--r--src/Text/Pandoc/Writers/OpenDocument.hs34
1 files changed, 21 insertions, 13 deletions
diff --git a/src/Text/Pandoc/Writers/OpenDocument.hs b/src/Text/Pandoc/Writers/OpenDocument.hs
index d6ab73aa4..6f6f58ae6 100644
--- a/src/Text/Pandoc/Writers/OpenDocument.hs
+++ b/src/Text/Pandoc/Writers/OpenDocument.hs
@@ -403,8 +403,8 @@ blockToOpenDocument o bs
else withParagraphStyle o "Table" [Para c]
th <- if all null h
then return empty
- else colHeadsToOpenDocument o name (map fst paraHStyles) h
- tr <- mapM (tableRowToOpenDocument o name (map fst paraStyles)) r
+ else colHeadsToOpenDocument o (map fst paraHStyles) h
+ tr <- mapM (tableRowToOpenDocument o (map fst paraStyles)) r
return $ inTags True "table:table" [ ("table:name" , name)
, ("table:style-name", name)
] (vcat columns $$ th $$ vcat tr) $$ captionDoc
@@ -416,24 +416,24 @@ blockToOpenDocument o bs
return $ imageDoc $$ captionDoc
colHeadsToOpenDocument :: PandocMonad m
- => WriterOptions -> String -> [String] -> [[Block]]
+ => WriterOptions -> [String] -> [[Block]]
-> OD m Doc
-colHeadsToOpenDocument o tn ns hs =
+colHeadsToOpenDocument o ns hs =
inTagsIndented "table:table-header-rows" . inTagsIndented "table:table-row" . vcat <$>
- mapM (tableItemToOpenDocument o tn) (zip ns hs)
+ mapM (tableItemToOpenDocument o "TableHeaderRowCell") (zip ns hs)
tableRowToOpenDocument :: PandocMonad m
- => WriterOptions -> String -> [String] -> [[Block]]
+ => WriterOptions -> [String] -> [[Block]]
-> OD m Doc
-tableRowToOpenDocument o tn ns cs =
+tableRowToOpenDocument o ns cs =
inTagsIndented "table:table-row" . vcat <$>
- mapM (tableItemToOpenDocument o tn) (zip ns cs)
+ mapM (tableItemToOpenDocument o "TableRowCell") (zip ns cs)
tableItemToOpenDocument :: PandocMonad m
=> WriterOptions -> String -> (String,[Block])
-> OD m Doc
-tableItemToOpenDocument o tn (n,i) =
- let a = [ ("table:style-name" , tn ++ ".A1" )
+tableItemToOpenDocument o s (n,i) =
+ let a = [ ("table:style-name" , s )
, ("office:value-type", "string" )
]
in inTags True "table:table-cell" a <$>
@@ -584,13 +584,21 @@ tableStyle num wcs =
, ("style:family", "table-column" )] $
selfClosingTag "style:table-column-properties"
[("style:rel-column-width", printf "%d*" (floor $ w * 65535 :: Integer))]
- cellStyle = inTags True "style:style"
- [ ("style:name" , tableId ++ ".A1")
+ headerRowCellStyle = inTags True "style:style"
+ [ ("style:name" , "TableHeaderRowCell")
, ("style:family", "table-cell" )] $
selfClosingTag "style:table-cell-properties"
[ ("fo:border", "none")]
+ rowCellStyle = inTags True "style:style"
+ [ ("style:name" , "TableRowCell")
+ , ("style:family", "table-cell" )] $
+ selfClosingTag "style:table-cell-properties"
+ [ ("fo:border", "none")]
+ cellStyles = if num == 0
+ then headerRowCellStyle $$ rowCellStyle
+ else empty
columnStyles = map colStyle wcs
- in table $$ vcat columnStyles $$ cellStyle
+ in cellStyles $$ table $$ vcat columnStyles
paraStyle :: PandocMonad m => [(String,String)] -> OD m Int
paraStyle attrs = do