@@ -51,7 +51,7 @@ import Data.Char (isAlphaNum, isDigit, isLetter)
5151import Data.Default (Default (..), def)
5252import Data.Foldable (for_)
5353import Data.List (intercalate, isPrefixOf)
54−import Data.List.Split (wordsBy)
54+import Data.List.Split (wordsBy, splitWhen)
5555import qualified Data.Map as M
5656import Data.Maybe (fromMaybe, isJust, isNothing)
5757import Data.Monoid (First (..), (<>))
@@ -66,6 +66,7 @@ import qualified Text.Pandoc.Builder as B
6666import Text.Pandoc.Class (PandocMonad (..))
6767import Text.Pandoc.CSS (foldOrElse, pickStyleAttrProps)
6868import Text.Pandoc.Definition
69+import Text.Pandoc.Extensions (Extension(..))
6970import Text.Pandoc.Error
7071import Text.Pandoc.Logging
7172import Text.Pandoc.Options (
@@ -191,6 +192,7 @@ block = do
191192 , pHtml
192193 , pHead
193194 , pBody
195+ , pLineBlock
194196 , pDiv
195197 , pPlain
196198 , pFigure
@@ -377,6 +379,16 @@ pRawTag = do
377379 then return mempty
378380 else return $ renderTags' [tag]
379381
382+pLineBlock :: PandocMonad m => TagParser m Blocks
383+pLineBlock = try $ do
384+ guardEnabled Ext_line_blocks
385+ _ <- pSatisfy $ tagOpen (=="div") (== [("class","line-block")])
386+ ils <- trimInlines . mconcat <$> manyTill inline (pSatisfy (tagClose (=="div")))
387+ let lns = map B.fromList $
388+ splitWhen (== LineBreak) $ filter (/= SoftBreak) $
389+ B.toList ils
390+ return $ B.lineBlock lns
391+
380392pDiv :: PandocMonad m => TagParser m Blocks
381393pDiv = try $ do
382394 guardEnabled Ext_native_divs