@@ -29,9 +29,12 @@ Functions for converting flat docx paragraphs into nested lists.
31module Text.Pandoc.Readers.Docx.Lists ( blocksToBullets
31module Text.Pandoc.Readers.Docx.Lists ( blocksToBullets
32− , blocksToDefinitions) where
32+ , blocksToDefinitions
34import Text.Pandoc.JSON
36import Text.Pandoc.JSON
37+import Text.Pandoc.Generic (bottomUp)
35import Text.Pandoc.Shared (trim)
38import Text.Pandoc.Shared (trim)
36import Control.Monad
39import Control.Monad
37import Data.List
40import Data.List
@@ -159,10 +162,9 @@ flatToBullets elems = flatToBullets' (-1) elems
160blocksToBullets :: [Block] -> [Block]
163blocksToBullets :: [Block] -> [Block]
161blocksToBullets blks =
164blocksToBullets blks =
162− -- bottomUp removeListItemDivs $
165+ bottomUp removeListDivs $
163 flatToBullets $ (handleListParagraphs blks)
166 flatToBullets $ (handleListParagraphs blks)
166plainParaInlines :: Block -> [Inline]
168plainParaInlines :: Block -> [Inline]
167plainParaInlines (Plain ils) = ils
169plainParaInlines (Plain ils) = ils
168plainParaInlines (Para ils) = ils
170plainParaInlines (Para ils) = ils
@@ -199,6 +201,23 @@ blocksToDefinitions' [] acc (b:blks) =
199blocksToDefinitions' defAcc acc (b:blks) =
201blocksToDefinitions' defAcc acc (b:blks) =
200 blocksToDefinitions' [] (b : (DefinitionList (reverse defAcc)) : acc) blks
202 blocksToDefinitions' [] (b : (DefinitionList (reverse defAcc)) : acc) blks
204+removeListDivs' :: Block -> [Block]
205+removeListDivs' (Div (ident, classes, kvs) blks)
206+ | "list-item" `elem` classes =
207+ case delete "list-item" classes of
209+ classes' -> [Div (ident, classes', kvs) $ blks]
210+removeListDivs' (Div (ident, classes, kvs) blks)
211+ | not $ null $ listParagraphDivs `intersect` classes =
212+ case classes \\ listParagraphDivs of
214+ classes' -> [Div (ident, classes', kvs) blks]
215+removeListDivs' blk = [blk]
217+removeListDivs :: [Block] -> [Block]
218+removeListDivs = concatMap removeListDivs'
203blocksToDefinitions :: [Block] -> [Block]
222blocksToDefinitions :: [Block] -> [Block]
204blocksToDefinitions = blocksToDefinitions' [] []
223blocksToDefinitions = blocksToDefinitions' [] []