Docx reader: fix list number resumption for sublists. Closes #4324.

The first list item of a sublist should not resume numbering
from the number of the last sublist item of the same level,
if that sublist was a sublist of a different list item.

That is, we should not get:

```
1. one
   1. sub one
   2. sub two
2. two
   3. sub one
```
This commit is contained in:
John MacFarlane
2019-11-03 12:54:42 -08:00
parent e906e5ac23
commit 530bfe5f5a
4 changed files with 20 additions and 1 deletions
+8 -1
View File
@@ -640,7 +640,14 @@ bodyPartToBlocks (ListItem pPr numId lvl (Just levelInfo) parparts) = do
, ("text", txt)
, ("start", show start)
]
modify $ \st -> st{ docxListState = M.insert (numId, lvl) start listState}
modify $ \st -> st{ docxListState =
-- expire all the continuation data for lists of level > this one:
-- a new level 1 list item resets continuation for level 2+
let expireKeys = [ (numid', lvl')
| (numid', lvl') <- M.keys listState
, lvl' > lvl
]
in foldr M.delete (M.insert (numId, lvl) start listState) expireKeys }
blks <- bodyPartToBlocks (Paragraph pPr parparts)
return $ divWith ("", ["list-item"], kvs) blks
bodyPartToBlocks (ListItem pPr _ _ _ parparts) =