mirror of
https://github.com/jgm/pandoc.git
synced 2026-08-25 17:56:32 +00:00
DocBook reader: Implement table cell alignment (#6698)
This commit is contained in:
@@ -943,11 +943,6 @@ parseBlock (Elem e) =
|
||||
$ filterChildren isRow b
|
||||
Nothing -> mapM (parseRow colnames)
|
||||
$ filterChildren isRow e'
|
||||
let toAlignment c = case findAttr (unqual "align") c of
|
||||
Just "left" -> AlignLeft
|
||||
Just "right" -> AlignRight
|
||||
Just "center" -> AlignCenter
|
||||
_ -> AlignDefault
|
||||
let toWidth c = do
|
||||
w <- findAttr (unqual "colwidth") c
|
||||
n <- safeRead $ "0" <> T.filter (\x ->
|
||||
@@ -1005,6 +1000,14 @@ parseBlock (Elem e) =
|
||||
-- we also attach the label as a class, so it can be styled properly
|
||||
return $ divWith (attrValue "id" e,[label],[]) (title <> b)
|
||||
|
||||
toAlignment :: Element -> Alignment
|
||||
toAlignment c = case findAttr (unqual "align") c of
|
||||
Just "left" -> AlignLeft
|
||||
Just "right" -> AlignRight
|
||||
Just "center" -> AlignCenter
|
||||
_ -> AlignDefault
|
||||
|
||||
|
||||
parseMixed :: PandocMonad m => (Inlines -> Blocks) -> [Content] -> DB m Blocks
|
||||
parseMixed container conts = do
|
||||
let (ils,rest) = break isBlockElement conts
|
||||
@@ -1036,7 +1039,9 @@ parseEntry cn el = do
|
||||
case (mStrt, mEnd) of
|
||||
(Just start, Just end) -> colDistance start end
|
||||
_ -> 1
|
||||
(fmap (cell AlignDefault 1 (toColSpan el)) . parseMixed plain . elContent) el
|
||||
let colSpan = toColSpan el
|
||||
let align = toAlignment el
|
||||
(fmap (cell align 1 colSpan) . (parseMixed plain) . elContent) el
|
||||
|
||||
getInlines :: PandocMonad m => Element -> DB m Inlines
|
||||
getInlines e' = trimInlines . mconcat <$>
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
```
|
||||
% pandoc -f docbook -t native --quiet
|
||||
<informaltable frame="all" rowsep="1" colsep="1">
|
||||
<tgroup cols="16">
|
||||
<tbody>
|
||||
<row>
|
||||
<entry align="center" valign="top"><simpara>1</simpara></entry>
|
||||
<entry align="left" valign="top"><simpara>2</simpara></entry>
|
||||
<entry align="right" valign="top"><simpara>3</simpara></entry>
|
||||
<entry align="justify" valign="top"><simpara>4</simpara></entry>
|
||||
</row>
|
||||
</tbody>
|
||||
</tgroup>
|
||||
</informaltable>
|
||||
^D
|
||||
[Table ("",[],[]) (Caption Nothing
|
||||
[])
|
||||
[(AlignDefault,ColWidthDefault)
|
||||
,(AlignDefault,ColWidthDefault)
|
||||
,(AlignDefault,ColWidthDefault)
|
||||
,(AlignDefault,ColWidthDefault)]
|
||||
(TableHead ("",[],[])
|
||||
[])
|
||||
[(TableBody ("",[],[]) (RowHeadColumns 0)
|
||||
[]
|
||||
[Row ("",[],[])
|
||||
[Cell ("",[],[]) AlignCenter (RowSpan 1) (ColSpan 1)
|
||||
[Para [Str "1"]]
|
||||
,Cell ("",[],[]) AlignLeft (RowSpan 1) (ColSpan 1)
|
||||
[Para [Str "2"]]
|
||||
,Cell ("",[],[]) AlignRight (RowSpan 1) (ColSpan 1)
|
||||
[Para [Str "3"]]
|
||||
,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
|
||||
[Para [Str "4"]]]])]
|
||||
(TableFoot ("",[],[])
|
||||
[])]
|
||||
```
|
||||
@@ -72,47 +72,47 @@
|
||||
[(TableBody ("",[],[]) (RowHeadColumns 0)
|
||||
[]
|
||||
[Row ("",[],[])
|
||||
[Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 8)
|
||||
[Cell ("",[],[]) AlignCenter (RowSpan 1) (ColSpan 8)
|
||||
[Para [Strong [Str "Octet",Space,Str "no.",Space,Str "1"]]]
|
||||
,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 8)
|
||||
,Cell ("",[],[]) AlignCenter (RowSpan 1) (ColSpan 8)
|
||||
[Para [Strong [Str "Octet",Space,Str "no.",Space,Str "2"]]]]
|
||||
,Row ("",[],[])
|
||||
[Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
|
||||
[Cell ("",[],[]) AlignCenter (RowSpan 1) (ColSpan 1)
|
||||
[Para [Str "16"]]
|
||||
,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
|
||||
,Cell ("",[],[]) AlignCenter (RowSpan 1) (ColSpan 1)
|
||||
[Para [Str "15"]]
|
||||
,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
|
||||
,Cell ("",[],[]) AlignCenter (RowSpan 1) (ColSpan 1)
|
||||
[Para [Str "14"]]
|
||||
,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
|
||||
,Cell ("",[],[]) AlignCenter (RowSpan 1) (ColSpan 1)
|
||||
[Para [Str "13"]]
|
||||
,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
|
||||
,Cell ("",[],[]) AlignCenter (RowSpan 1) (ColSpan 1)
|
||||
[Para [Str "12"]]
|
||||
,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
|
||||
,Cell ("",[],[]) AlignCenter (RowSpan 1) (ColSpan 1)
|
||||
[Para [Str "11"]]
|
||||
,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
|
||||
,Cell ("",[],[]) AlignCenter (RowSpan 1) (ColSpan 1)
|
||||
[Para [Str "10"]]
|
||||
,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
|
||||
,Cell ("",[],[]) AlignCenter (RowSpan 1) (ColSpan 1)
|
||||
[Para [Str "9"]]
|
||||
,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
|
||||
,Cell ("",[],[]) AlignCenter (RowSpan 1) (ColSpan 1)
|
||||
[Para [Str "8"]]
|
||||
,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
|
||||
,Cell ("",[],[]) AlignCenter (RowSpan 1) (ColSpan 1)
|
||||
[Para [Str "7"]]
|
||||
,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
|
||||
,Cell ("",[],[]) AlignCenter (RowSpan 1) (ColSpan 1)
|
||||
[Para [Str "6"]]
|
||||
,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
|
||||
,Cell ("",[],[]) AlignCenter (RowSpan 1) (ColSpan 1)
|
||||
[Para [Str "5"]]
|
||||
,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
|
||||
,Cell ("",[],[]) AlignCenter (RowSpan 1) (ColSpan 1)
|
||||
[Para [Str "4"]]
|
||||
,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
|
||||
,Cell ("",[],[]) AlignCenter (RowSpan 1) (ColSpan 1)
|
||||
[Para [Str "3"]]
|
||||
,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
|
||||
,Cell ("",[],[]) AlignCenter (RowSpan 1) (ColSpan 1)
|
||||
[Para [Str "2"]]
|
||||
,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
|
||||
,Cell ("",[],[]) AlignCenter (RowSpan 1) (ColSpan 1)
|
||||
[Para [Str "1"]]]
|
||||
,Row ("",[],[])
|
||||
[Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 8)
|
||||
[Cell ("",[],[]) AlignCenter (RowSpan 1) (ColSpan 8)
|
||||
[Para [Str "Code",Space,Str "A"]]
|
||||
,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 8)
|
||||
,Cell ("",[],[]) AlignCenter (RowSpan 1) (ColSpan 8)
|
||||
[Para [Str "Code",Space,Str "B"]]]])]
|
||||
(TableFoot ("",[],[])
|
||||
[])]
|
||||
@@ -142,47 +142,47 @@
|
||||
[(TableBody ("",[],[]) (RowHeadColumns 0)
|
||||
[]
|
||||
[Row ("",[],[])
|
||||
[Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 8)
|
||||
[Cell ("",[],[]) AlignCenter (RowSpan 1) (ColSpan 8)
|
||||
[Para [Strong [Str "Octet",Space,Str "no.",Space,Str "1"]]]
|
||||
,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 8)
|
||||
,Cell ("",[],[]) AlignCenter (RowSpan 1) (ColSpan 8)
|
||||
[Para [Strong [Str "Octet",Space,Str "no.",Space,Str "2"]]]]
|
||||
,Row ("",[],[])
|
||||
[Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
|
||||
[Cell ("",[],[]) AlignCenter (RowSpan 1) (ColSpan 1)
|
||||
[Para [Str "16"]]
|
||||
,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
|
||||
,Cell ("",[],[]) AlignCenter (RowSpan 1) (ColSpan 1)
|
||||
[Para [Str "15"]]
|
||||
,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
|
||||
,Cell ("",[],[]) AlignCenter (RowSpan 1) (ColSpan 1)
|
||||
[Para [Str "14"]]
|
||||
,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
|
||||
,Cell ("",[],[]) AlignCenter (RowSpan 1) (ColSpan 1)
|
||||
[Para [Str "13"]]
|
||||
,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
|
||||
,Cell ("",[],[]) AlignCenter (RowSpan 1) (ColSpan 1)
|
||||
[Para [Str "12"]]
|
||||
,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
|
||||
,Cell ("",[],[]) AlignCenter (RowSpan 1) (ColSpan 1)
|
||||
[Para [Str "11"]]
|
||||
,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
|
||||
,Cell ("",[],[]) AlignCenter (RowSpan 1) (ColSpan 1)
|
||||
[Para [Str "10"]]
|
||||
,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
|
||||
,Cell ("",[],[]) AlignCenter (RowSpan 1) (ColSpan 1)
|
||||
[Para [Str "9"]]
|
||||
,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
|
||||
,Cell ("",[],[]) AlignCenter (RowSpan 1) (ColSpan 1)
|
||||
[Para [Str "8"]]
|
||||
,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
|
||||
,Cell ("",[],[]) AlignCenter (RowSpan 1) (ColSpan 1)
|
||||
[Para [Str "7"]]
|
||||
,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
|
||||
,Cell ("",[],[]) AlignCenter (RowSpan 1) (ColSpan 1)
|
||||
[Para [Str "6"]]
|
||||
,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
|
||||
,Cell ("",[],[]) AlignCenter (RowSpan 1) (ColSpan 1)
|
||||
[Para [Str "5"]]
|
||||
,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
|
||||
,Cell ("",[],[]) AlignCenter (RowSpan 1) (ColSpan 1)
|
||||
[Para [Str "4"]]
|
||||
,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
|
||||
,Cell ("",[],[]) AlignCenter (RowSpan 1) (ColSpan 1)
|
||||
[Para [Str "3"]]
|
||||
,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
|
||||
,Cell ("",[],[]) AlignCenter (RowSpan 1) (ColSpan 1)
|
||||
[Para [Str "2"]]
|
||||
,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 1)
|
||||
,Cell ("",[],[]) AlignCenter (RowSpan 1) (ColSpan 1)
|
||||
[Para [Str "1"]]]
|
||||
,Row ("",[],[])
|
||||
[Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 8)
|
||||
[Cell ("",[],[]) AlignCenter (RowSpan 1) (ColSpan 8)
|
||||
[Para [Str "Code",Space,Str "A"]]
|
||||
,Cell ("",[],[]) AlignDefault (RowSpan 1) (ColSpan 8)
|
||||
,Cell ("",[],[]) AlignCenter (RowSpan 1) (ColSpan 8)
|
||||
[Para [Str "Code",Space,Str "B"]]]])]
|
||||
(TableFoot ("",[],[])
|
||||
[])]
|
||||
|
||||
Reference in New Issue
Block a user