@@ -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)