git.iko.soy/typeable/pandoc
on master help sign in
Org reader: Fix code for subexpression parsing
5fc2522Albert Krewinkel
src/Text/Pandoc/Readers/Org.hs+4−21
@@ -844,24 +844,12 @@ notAfterForbiddenBorderChar = do
844
844
845-- | Read a sub- or superscript expression
845-- | Read a sub- or superscript expression
846subOrSuperExpr :: OrgParser Inlines
846subOrSuperExpr :: OrgParser Inlines
847−subOrSuperExpr = try $ do
847+subOrSuperExpr = try $
848− choice [ balancedSexp '{' '}'
848+ choice [ id <$> charsInBalanced '{' '}' (noneOf "\n\r")
849− , balancedSexp '(' ')' >>= return . enclosing ('(', ')')
849+ , enclosing ('(', ')') <$> charsInBalanced '(' ')' (noneOf "\n\r")
850 , simpleSubOrSuperString
850 , simpleSubOrSuperString
851 ] >>= parseFromString (mconcat <$> many inline)
851 ] >>= parseFromString (mconcat <$> many inline)
852−
852+ where enclosing (left, right) s = left : s ++ [right]
853−-- | Read a balanced sexp
854−balancedSexp :: Char
855− -> Char
856− -> OrgParser String
857−balancedSexp l r = try $ do
858− char l
859− res <- concat <$> many ( many1 (noneOf ([l, r] ++ "\n\r"))
860− <|> try (string [l, r])
861− <|> enclosing (l, r) <$> balancedSexp l r
862− )
863− char r
864− return res
865
853
866simpleSubOrSuperString :: OrgParser String
854simpleSubOrSuperString :: OrgParser String
867simpleSubOrSuperString = try $
855simpleSubOrSuperString = try $
@@ -869,8 +857,3 @@ simpleSubOrSuperString = try $
869 , mappend <$> option [] ((:[]) <$> oneOf "+-")
857 , mappend <$> option [] ((:[]) <$> oneOf "+-")
870 <*> many1 alphaNum
858 <*> many1 alphaNum
871 ]
859 ]
872−
873−enclosing :: (a, a)
874− -> [a]
875− -> [a]
876−enclosing (left, right) s = left : s ++ [right]