Merge pull request #1700 from tarleb/org-emphasis-fix
Org reader: fix rules for emphasis recognition
This commit is contained in:
commit
31713d572a
2 changed files with 13 additions and 5 deletions
|
@ -952,7 +952,7 @@ parseInlines = trimInlinesF . mconcat <$> many1 inline
|
||||||
|
|
||||||
-- treat these as potentially non-text when parsing inline:
|
-- treat these as potentially non-text when parsing inline:
|
||||||
specialChars :: [Char]
|
specialChars :: [Char]
|
||||||
specialChars = "\"$'()*+-./:<=>[\\]^_{|}~"
|
specialChars = "\"$'()*+-,./:<=>[\\]^_{|}~"
|
||||||
|
|
||||||
|
|
||||||
whitespace :: OrgParser (F Inlines)
|
whitespace :: OrgParser (F Inlines)
|
||||||
|
@ -1230,10 +1230,10 @@ displayMath = return . B.displayMath <$> choice [ rawMathBetween "\\[" "\\]"
|
||||||
]
|
]
|
||||||
symbol :: OrgParser (F Inlines)
|
symbol :: OrgParser (F Inlines)
|
||||||
symbol = return . B.str . (: "") <$> (oneOf specialChars >>= updatePositions)
|
symbol = return . B.str . (: "") <$> (oneOf specialChars >>= updatePositions)
|
||||||
where updatePositions c
|
where updatePositions c = do
|
||||||
| c `elem` emphasisPreChars = c <$ updateLastPreCharPos
|
when (c `elem` emphasisPreChars) updateLastPreCharPos
|
||||||
| c `elem` emphasisForbiddenBorderChars = c <$ updateLastForbiddenCharPos
|
when (c `elem` emphasisForbiddenBorderChars) updateLastForbiddenCharPos
|
||||||
| otherwise = return c
|
return c
|
||||||
|
|
||||||
emphasisBetween :: Char
|
emphasisBetween :: Char
|
||||||
-> OrgParser (F Inlines)
|
-> OrgParser (F Inlines)
|
||||||
|
|
|
@ -126,6 +126,14 @@ tests =
|
||||||
, (emph "b") <> "."
|
, (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" =:
|
, "Markup should work properly after a blank line" =:
|
||||||
unlines ["foo", "", "/bar/"] =?>
|
unlines ["foo", "", "/bar/"] =?>
|
||||||
(para $ text "foo") <> (para $ emph $ text "bar")
|
(para $ text "foo") <> (para $ emph $ text "bar")
|
||||||
|
|
Loading…
Reference in a new issue