aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlbert Krewinkel <albert@zeitkraut.de>2018-07-23 22:05:41 +0200
committerAlbert Krewinkel <albert@zeitkraut.de>2018-07-23 22:05:41 +0200
commit4e899eb9c886df2200551f69a3f593ab5258f2e2 (patch)
treea69843f3eb020d46eeecc91ef7da31800f9b68b3
parenta85877424bde7365a0cbb4ca99f9569110de92b4 (diff)
downloadpandoc-4e899eb9c886df2200551f69a3f593ab5258f2e2.tar.gz
Org reader: fix parsers relying on parseFromString
Emphasis was not parsed when it followed directly after some block types (e.g., lists). The org reader uses a wrapper for the `parseFromString` function to handle org-specific state. The last position of a character allowed before emphasis was reset incorrectly in this wrapper. Emphasized text was not recognized when placed directly behind a block which the reader parses using `parseFromString`. Fixes: #4784
-rw-r--r--src/Text/Pandoc/Readers/Org/Parsing.hs7
-rw-r--r--test/Tests/Readers/Org/Block/List.hs11
2 files changed, 14 insertions, 4 deletions
diff --git a/src/Text/Pandoc/Readers/Org/Parsing.hs b/src/Text/Pandoc/Readers/Org/Parsing.hs
index e014de65e..b37b36624 100644
--- a/src/Text/Pandoc/Readers/Org/Parsing.hs
+++ b/src/Text/Pandoc/Readers/Org/Parsing.hs
@@ -137,14 +137,13 @@ anyLine =
<* updateLastPreCharPos
<* updateLastForbiddenCharPos
--- The version Text.Pandoc.Parsing cannot be used, as we need additional parts
--- of the state saved and restored.
+-- | Like @'Text.Pandoc.Parsing'@, but resets the position of the last character
+-- allowed before emphasised text.
parseFromString :: Monad m => OrgParser m a -> String -> OrgParser m a
parseFromString parser str' = do
- oldLastPreCharPos <- orgStateLastPreCharPos <$> getState
updateState $ \s -> s{ orgStateLastPreCharPos = Nothing }
result <- P.parseFromString parser str'
- updateState $ \s -> s{ orgStateLastPreCharPos = oldLastPreCharPos }
+ updateState $ \s -> s { orgStateLastPreCharPos = Nothing }
return result
-- | Skip one or more tab or space characters.
diff --git a/test/Tests/Readers/Org/Block/List.hs b/test/Tests/Readers/Org/Block/List.hs
index f273b684d..bdab01404 100644
--- a/test/Tests/Readers/Org/Block/List.hs
+++ b/test/Tests/Readers/Org/Block/List.hs
@@ -243,4 +243,15 @@ tests =
mconcat [ para "CLOSED: [2015-10-19 Mon 15:03]"
, bulletList [ plain "Note taken on [2015-10-19 Mon 13:24]" ]
]
+
+ , "Markup after header and list" =:
+ T.unlines [ "* headline"
+ , "- list"
+ , ""
+ , "~variable name~"
+ ] =?>
+ mconcat [ headerWith ("headline", [], []) 1 "headline"
+ , bulletList [ plain "list" ]
+ , para (code "variable name")
+ ]
]