git.iko.soy/typeable/pandoc
on master help sign in
HTML reader: pay attention to lang attributes on body.

These (as well as lang attributes on html) should update lang in metadata. See #6938.

commitfcd065818901e57f01aca4c919f6102f9a047ba0 authorJohn MacFarlane <jgm@berkeley.edu> dateThu 10 Dec 2020, 15:51 (6 years ago) parent0a502e5
1 file changed+6−3
src/Text/Pandoc/Readers/HTML.hs+6−3
src/Text/Pandoc/Readers/HTML.hs+6−3
@@ -25,7 +25,6 @@ module Text.Pandoc.Readers.HTML ( readHtml
2525 ) where
2626
2727import Control.Applicative ((<|>))
28−import Control.Arrow (first)
2928import Control.Monad (guard, msum, mzero, unless, void)
3029import Control.Monad.Except (throwError)
3130import Control.Monad.Reader (ask, asks, lift, local, runReaderT)
@@ -121,14 +120,18 @@ setInPlain :: PandocMonad m => HTMLParser m s a -> HTMLParser m s a
121120setInPlain = local (\s -> s {inPlain = True})
122121
123122pHtml :: PandocMonad m => TagParser m Blocks
124−pHtml = try $ do
123+pHtml = do
125124 (TagOpen "html" attr) <- lookAhead pAny
126125 for_ (lookup "lang" attr <|> lookup "xml:lang" attr) $
127126 updateState . B.setMeta "lang" . B.text
128127 pInTags "html" block
129128
130129pBody :: PandocMonad m => TagParser m Blocks
131−pBody = pInTags "body" block
130+pBody = do
131+ (TagOpen "body" attr) <- lookAhead pAny
132+ for_ (lookup "lang" attr <|> lookup "xml:lang" attr) $
133+ updateState . B.setMeta "lang" . B.text
134+ pInTags "body" block
132135
133136pHead :: PandocMonad m => TagParser m Blocks
134137pHead = pInTags "head" $ pTitle <|> pMetaTag <|> pBaseTag <|> (mempty <$ pAny)