@@ -42,6 +42,7 @@ import Text.Pandoc.Lua.Util (addFunction, popValue)
4242import qualified Data.Digest.Pure.SHA as SHA
4343import qualified Data.ByteString.Lazy as BSL
4444import qualified Foreign.Lua as Lua
45+import qualified Text.Pandoc.Builder as B
4546import qualified Text.Pandoc.Filter.JSON as JSONFilter
4647import qualified Text.Pandoc.Shared as Shared
4748
@@ -49,6 +50,7 @@ import qualified Text.Pandoc.Shared as Shared
4950pushModule :: Maybe FilePath -> Lua NumResults
5051pushModule mbDatadir = do
5152 Lua.newtable
53+ addFunction "blocks_to_inlines" blocksToInlines
5254 addFunction "hierarchicalize" hierarchicalize
5355 addFunction "normalize_date" normalizeDate
5456 addFunction "run_json_filter" (runJSONFilter mbDatadir)
@@ -57,6 +59,14 @@ pushModule mbDatadir = do
5759 addFunction "to_roman_numeral" toRomanNumeral
5860 return 1
5961
62+-- | Squashes a list of blocks into inlines.
63+blocksToInlines :: [Block] -> Lua.Optional [Inline] -> Lua [Inline]
64+blocksToInlines blks optSep = do
65+ let sep = case Lua.fromOptional optSep of
66+ Just x -> B.fromList x
67+ Nothing -> Shared.defaultBlocksSeparator
68+ return $ B.toList (Shared.blocksToInlinesWithSep sep blks)
69+
6070-- | Convert list of Pandoc blocks into (hierarchical) list of Elements.
6171hierarchicalize :: [Block] -> Lua [Shared.Element]
6272hierarchicalize = return . Shared.hierarchicalize