git.iko.soy/typeable/pandoc
on master help sign in
HTML reader: handle multiple meta tags with same name.

Put them in a list in the metadata so they are all preserved, rather than (as before) throwing out all but one..

commita02c26d9f46aceda695bd357cdcd85d705aaf14c authorJohn MacFarlane <jgm@berkeley.edu> dateFri 29 Jan 2016, 11:51 (11 years ago) parent76983c3
1 file changed+6−2
src/Text/Pandoc/Readers/HTML.hs+6−2
src/Text/Pandoc/Readers/HTML.hs+6−2
@@ -43,7 +43,7 @@ import Text.HTML.TagSoup.Match
4343import Text.Pandoc.Definition
4444import qualified Text.Pandoc.Builder as B
4545import Text.Pandoc.Builder (Blocks, Inlines, trimInlines, HasMeta(..))
46−import Text.Pandoc.Shared ( extractSpaces, renderTags'
46+import Text.Pandoc.Shared ( extractSpaces, renderTags', addMetaField
4747 , escapeURI, safeRead, mapLeft )
4848import Text.Pandoc.Options (ReaderOptions(readerParseRaw, readerTrace)
4949 , Extension (Ext_epub_html_exts,
@@ -137,7 +137,11 @@ pHead = pInTags "head" $ pTitle <|> pMetaTag <|> pBaseTag <|> (mempty <$ pAnyTag
137137 then return mempty
138138 else do
139139 let content = fromAttrib "content" mt
140− updateState $ B.setMeta name (B.text content)
140+ updateState $ \s ->
141+ let ps = parserState s in
142+ s{ parserState = ps{
143+ stateMeta = addMetaField name (B.text content)
144+ (stateMeta ps) } }
141145 return mempty
142146 pBaseTag = do
143147 bt <- pSatisfy (~== TagOpen "base" [])