@@ -132,15 +132,19 @@ litChar = escapedChar'
132-- | Parse a sequence of inline elements between square brackets,
132-- | Parse a sequence of inline elements between square brackets,
133-- including inlines between balanced pairs of square brackets.
133-- including inlines between balanced pairs of square brackets.
134inlinesInBalancedBrackets :: Parser [Char] ParserState (F Inlines)
134inlinesInBalancedBrackets :: Parser [Char] ParserState (F Inlines)
135−inlinesInBalancedBrackets = try $ do
135+inlinesInBalancedBrackets = charsInBalancedBrackets >>=
136+ parseFromString (trimInlinesF . mconcat <$> many inline)
138+charsInBalancedBrackets :: Parser [Char] ParserState [Char]
139+charsInBalancedBrackets = do
137− result <- manyTill ( (do lookAhead $ try $ do x <- inline
141+ result <- manyTill ( many1 (noneOf "`[]\n")
138− guard (runF x def == B.str "[")
142+ <|> (snd <$> withRaw code)
139− bal <- inlinesInBalancedBrackets
143+ <|> ((\xs -> '[' : xs ++ "]") <$> charsInBalancedBrackets)
140− return $ (\x -> B.str "[" <> x <> B.str "]") <$> bal)
144+ <|> count 1 (satisfy (/='\n'))
141− <|> inline)
145+ <|> (newline >> notFollowedBy blankline >> return "\n")
142− (char ']')
146+ ) (char ']')
143− return $ mconcat result
147+ return $ concat result
146-- document structure
150-- document structure