diff options
author | John MacFarlane <jgm@berkeley.edu> | 2014-07-10 14:37:10 -0700 |
---|---|---|
committer | John MacFarlane <jgm@berkeley.edu> | 2014-07-10 14:37:10 -0700 |
commit | ee522be94f0691de3e81a7343c278fd4c948d20a (patch) | |
tree | c7bf4660defc5a204fd8d787e08b5c63e52407c7 /src/Text/Pandoc | |
parent | ff86702a955fcb66c3b74f4e84d87c21e06255c2 (diff) | |
download | pandoc-ee522be94f0691de3e81a7343c278fd4c948d20a.tar.gz |
Markdown reader: Slight rewrite of enclosure/emphOrStrong code.
Semantics should be the same.
Diffstat (limited to 'src/Text/Pandoc')
-rw-r--r-- | src/Text/Pandoc/Readers/Markdown.hs | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/Text/Pandoc/Readers/Markdown.hs b/src/Text/Pandoc/Readers/Markdown.hs index 80d6698de..51c260996 100644 --- a/src/Text/Pandoc/Readers/Markdown.hs +++ b/src/Text/Pandoc/Readers/Markdown.hs @@ -1436,9 +1436,15 @@ math = (return . B.displayMath <$> (mathDisplay >>= applyMacros')) enclosure :: Char -> MarkdownParser (F Inlines) enclosure c = do + -- we can't start an enclosure with _ if after a string and + -- the intraword_underscores extension is enabled: + guardDisabled Ext_intraword_underscores + <|> guard (c == '*') + <|> (guard =<< notAfterString) cs <- many1 (char c) (return (B.str cs) <>) <$> whitespace - <|> case length cs of + <|> do + case length cs of 3 -> three c 2 -> two c mempty 1 -> one c mempty @@ -1477,11 +1483,7 @@ one c prefix' = do <|> return (return (B.str [c]) <> (prefix' <> contents)) strongOrEmph :: MarkdownParser (F Inlines) -strongOrEmph = enclosure '*' <|> (checkIntraword >> enclosure '_') - where checkIntraword = do - exts <- getOption readerExtensions - when (Ext_intraword_underscores `Set.member` exts) $ do - guard =<< notAfterString +strongOrEmph = enclosure '*' <|> enclosure '_' -- | Parses a list of inlines between start and end delimiters. inlinesBetween :: (Show b) |