aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlbert Krewinkel <albert@zeitkraut.de>2021-11-23 18:30:48 +0100
committerGitHub <noreply@github.com>2021-11-23 09:30:48 -0800
commit0c0945b93c2ae502c0629d93e9ad520dbe17c625 (patch)
tree1d25f22f55678fab4bfca042e849528151b32560 /src
parenta039f024f2c0e2d9e6d1ae7710cf96debcbc5e43 (diff)
downloadpandoc-0c0945b93c2ae502c0629d93e9ad520dbe17c625.tar.gz
Lua: split strings into words when treating them as Inline list (#7712)
Using a Lua string where a list of inlines is expected will cause the string to be split into words, replacing spaces and tabs into `pandoc.Space()` elements and newlines into `pandoc.SoftBreak()`. The previous behavior was to treat the string `s` as `{pandoc.Str(s)}`. The old behavior can be recovered by wrapping the string into a table `{s}`.
Diffstat (limited to 'src')
-rw-r--r--src/Text/Pandoc/Lua/Marshaling/AST.hs11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/Text/Pandoc/Lua/Marshaling/AST.hs b/src/Text/Pandoc/Lua/Marshaling/AST.hs
index 568b610cc..31d040c83 100644
--- a/src/Text/Pandoc/Lua/Marshaling/AST.hs
+++ b/src/Text/Pandoc/Lua/Marshaling/AST.hs
@@ -67,6 +67,7 @@ import Text.Pandoc.Lua.Marshaling.ListAttributes
(peekListAttributes, pushListAttributes)
import qualified HsLua as Lua
+import qualified Text.Pandoc.Builder as B
import qualified Text.Pandoc.Lua.Util as LuaUtil
instance Pushable Pandoc where
@@ -796,10 +797,12 @@ peekInlineFuzzy = retrieving "Inline" . choice
-- | Try extra-hard to return the value at the given index as a list of
-- inlines.
peekInlinesFuzzy :: LuaError e => Peeker e [Inline]
-peekInlinesFuzzy = choice
- [ peekList peekInlineFuzzy
- , fmap pure . peekInlineFuzzy
- ]
+peekInlinesFuzzy idx = liftLua (ltype idx) >>= \case
+ TypeString -> B.toList . B.text <$> peekText idx
+ _ -> choice
+ [ peekList peekInlineFuzzy
+ , fmap pure . peekInlineFuzzy
+ ] idx
-- | Try extra hard to retrieve a Block value from the stack. Treats bar
-- Inline elements as if they were wrapped in 'Plain'.