DocBook reader: ensure that first and last names are separated.

Closes #6541.
This commit is contained in:
John MacFarlane 2021-05-20 18:45:39 -07:00
parent 3a1988b6b2
commit 07d299d353
2 changed files with 41 additions and 6 deletions

View file

@ -600,16 +600,24 @@ addMetadataFromElement e = do
Nothing -> return ()
Just z -> addMetaField "author" z
addMetaField "subtitle" e
addMetaField "author" e
addAuthor e
addMetaField "date" e
addMetaField "release" e
addMetaField "releaseinfo" e
return mempty
where addMetaField fieldname elt =
case filterChildren (named fieldname) elt of
[] -> return ()
[z] -> getInlines z >>= addMeta fieldname
zs -> mapM getInlines zs >>= addMeta fieldname
where
addAuthor elt =
case filterChildren (named "author") elt of
[] -> return ()
[z] -> fromAuthor z >>= addMeta "author"
zs -> mapM fromAuthor zs >>= addMeta "author"
fromAuthor elt =
mconcat . intersperse space <$> mapM getInlines (elChildren elt)
addMetaField fieldname elt =
case filterChildren (named fieldname) elt of
[] -> return ()
[z] -> getInlines z >>= addMeta fieldname
zs -> mapM getInlines zs >>= addMeta fieldname
addMeta :: PandocMonad m => ToMetaValue a => Text -> a -> DB m ()
addMeta field val = modify (setMeta field val)

27
test/command/6541.md Normal file
View file

@ -0,0 +1,27 @@
```
% pandoc -f docbook -t markdown -s
<?xml version="1.0"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<book>
<bookinfo>
<title>Title</title>
<author>
<firstname>Firstname</firstname><surname>Lastname</surname>
</author>
<releaseinfo>1.17</releaseinfo>
</bookinfo>
<para>Text.</para>
</book>
^D
---
author: Firstname Lastname
releaseinfo: 1.17
title: Title
---
Text.
```