git.iko.soy/typeable/pandoc
on master help sign in
Muse reader: move duplicate code into "headingStart" function
1630a73Alexander Krotov
src/Text/Pandoc/Readers/Muse.hs+10−9
@@ -361,15 +361,20 @@ separator = try $ do
361 eol
361 eol
362 return $ return B.horizontalRule
362 return $ return B.horizontalRule
363
363
364−-- | Parse a single-line heading.
365−emacsHeading :: PandocMonad m => MuseParser m (F Blocks)
364+headingStart :: PandocMonad m => MuseParser m (String, Int)
366−emacsHeading = try $ do
365+headingStart = do
367− guardDisabled Ext_amuse
368 anchorId <- option "" $ try (parseAnchor <* manyTill spaceChar eol)
366 anchorId <- option "" $ try (parseAnchor <* manyTill spaceChar eol)
369 getPosition >>= \pos -> guard (sourceColumn pos == 1)
367 getPosition >>= \pos -> guard (sourceColumn pos == 1)
370 level <- fmap length $ many1 $ char '*'
368 level <- fmap length $ many1 $ char '*'
371 guard $ level <= 5
369 guard $ level <= 5
372 spaceChar
370 spaceChar
371+ return (anchorId, level)
372+
373+-- | Parse a single-line heading.
374+emacsHeading :: PandocMonad m => MuseParser m (F Blocks)
375+emacsHeading = try $ do
376+ guardDisabled Ext_amuse
377+ (anchorId, level) <- headingStart
373 content <- trimInlinesF . mconcat <$> manyTill inline eol
378 content <- trimInlinesF . mconcat <$> manyTill inline eol
374 attr <- registerHeader (anchorId, [], []) (runF content def)
379 attr <- registerHeader (anchorId, [], []) (runF content def)
375 return $ B.headerWith attr level <$> content
380 return $ B.headerWith attr level <$> content
@@ -381,11 +386,7 @@ amuseHeadingUntil :: PandocMonad m
381 -> MuseParser m (F Blocks, a)
386 -> MuseParser m (F Blocks, a)
382amuseHeadingUntil end = try $ do
387amuseHeadingUntil end = try $ do
383 guardEnabled Ext_amuse
388 guardEnabled Ext_amuse
384− anchorId <- option "" $ try (parseAnchor <* manyTill spaceChar eol)
389+ (anchorId, level) <- headingStart
385− getPosition >>= \pos -> guard (sourceColumn pos == 1)
386− level <- fmap length $ many1 $ char '*'
387− guard $ level <= 5
388− spaceChar
389 (content, e) <- paraContentsUntil end
390 (content, e) <- paraContentsUntil end
390 attr <- registerHeader (anchorId, [], []) (runF content def)
391 attr <- registerHeader (anchorId, [], []) (runF content def)
391 return (B.headerWith attr level <$> content, e)
392 return (B.headerWith attr level <$> content, e)