diff options
Diffstat (limited to 'src/Text')
| -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) | 
