aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn MacFarlane <jgm@berkeley.edu>2014-10-18 13:19:42 -0700
committerJohn MacFarlane <jgm@berkeley.edu>2014-10-18 13:19:42 -0700
commit31713d572a606a487d36c4a4d673b9797cf4a0db (patch)
tree6c04eeb4c53b0551d64253dc3782f87e4c1f7833
parenta1b5997af499252cde722a6250657f21e960a50a (diff)
parentd571bec454e9f0822c2c71eeee2f8bfc6eb34c3c (diff)
downloadpandoc-31713d572a606a487d36c4a4d673b9797cf4a0db.tar.gz
Merge pull request #1700 from tarleb/org-emphasis-fix
Org reader: fix rules for emphasis recognition
-rw-r--r--src/Text/Pandoc/Readers/Org.hs10
-rw-r--r--tests/Tests/Readers/Org.hs8
2 files changed, 13 insertions, 5 deletions
diff --git a/src/Text/Pandoc/Readers/Org.hs b/src/Text/Pandoc/Readers/Org.hs
index 483f49905..67470eff9 100644
--- a/src/Text/Pandoc/Readers/Org.hs
+++ b/src/Text/Pandoc/Readers/Org.hs
@@ -952,7 +952,7 @@ parseInlines = trimInlinesF . mconcat <$> many1 inline
-- treat these as potentially non-text when parsing inline:
specialChars :: [Char]
-specialChars = "\"$'()*+-./:<=>[\\]^_{|}~"
+specialChars = "\"$'()*+-,./:<=>[\\]^_{|}~"
whitespace :: OrgParser (F Inlines)
@@ -1230,10 +1230,10 @@ displayMath = return . B.displayMath <$> choice [ rawMathBetween "\\[" "\\]"
]
symbol :: OrgParser (F Inlines)
symbol = return . B.str . (: "") <$> (oneOf specialChars >>= updatePositions)
- where updatePositions c
- | c `elem` emphasisPreChars = c <$ updateLastPreCharPos
- | c `elem` emphasisForbiddenBorderChars = c <$ updateLastForbiddenCharPos
- | otherwise = return c
+ where updatePositions c = do
+ when (c `elem` emphasisPreChars) updateLastPreCharPos
+ when (c `elem` emphasisForbiddenBorderChars) updateLastForbiddenCharPos
+ return c
emphasisBetween :: Char
-> OrgParser (F Inlines)
diff --git a/tests/Tests/Readers/Org.hs b/tests/Tests/Readers/Org.hs
index b37825ad5..f893e5aa2 100644
--- a/tests/Tests/Readers/Org.hs
+++ b/tests/Tests/Readers/Org.hs
@@ -126,6 +126,14 @@ tests =
, (emph "b") <> "."
])
+ , "Quotes are forbidden border chars" =:
+ "/'nope/ *nope\"*" =?>
+ para ("/'nope/" <> space <> "*nope\"*")
+
+ , "Commata are forbidden border chars" =:
+ "/nada,/" =?>
+ para "/nada,/"
+
, "Markup should work properly after a blank line" =:
unlines ["foo", "", "/bar/"] =?>
(para $ text "foo") <> (para $ emph $ text "bar")