diff options
author | John MacFarlane <jgm@berkeley.edu> | 2021-05-20 18:45:39 -0700 |
---|---|---|
committer | John MacFarlane <jgm@berkeley.edu> | 2021-05-20 18:45:39 -0700 |
commit | 07d299d353761a7c29aa7e7a51371ad7842ec767 (patch) | |
tree | f4c011833d6a4f4b6faa1835bcdebb66d1e928a8 /src/Text/Pandoc | |
parent | 3a1988b6b2c08fa8a23ae5b6ce355b9b4e0f3dbe (diff) | |
download | pandoc-07d299d353761a7c29aa7e7a51371ad7842ec767.tar.gz |
DocBook reader: ensure that first and last names are separated.
Closes #6541.
Diffstat (limited to 'src/Text/Pandoc')
-rw-r--r-- | src/Text/Pandoc/Readers/DocBook.hs | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/src/Text/Pandoc/Readers/DocBook.hs b/src/Text/Pandoc/Readers/DocBook.hs index 3db459cfd..b01ad3252 100644 --- a/src/Text/Pandoc/Readers/DocBook.hs +++ b/src/Text/Pandoc/Readers/DocBook.hs @@ -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) |