@@ -1,6 +1,7 @@
1{-# LANGUAGE FlexibleInstances #-}
1{-# LANGUAGE FlexibleInstances #-}
2{-# LANGUAGE LambdaCase #-}
2{-# LANGUAGE LambdaCase #-}
3{-# LANGUAGE NoImplicitPrelude #-}
3{-# LANGUAGE NoImplicitPrelude #-}
4+{-# LANGUAGE OverloadedStrings #-}
5 Module : Text.Pandoc.Lua.Util
6 Module : Text.Pandoc.Lua.Util
6 Copyright : © 2012–2019 John MacFarlane,
7 Copyright : © 2012–2019 John MacFarlane,
@@ -31,9 +32,9 @@ import Control.Monad (unless, when)
31import Foreign.Lua ( Lua, NumArgs, NumResults, Peekable, Pushable, StackIndex
32import Foreign.Lua ( Lua, NumArgs, NumResults, Peekable, Pushable, StackIndex
32 , Status, ToHaskellFunction )
33 , Status, ToHaskellFunction )
33import Text.Pandoc.Class (readDataFile, runIOorExplode, setUserDataDir)
34import Text.Pandoc.Class (readDataFile, runIOorExplode, setUserDataDir)
35import qualified Foreign.Lua as Lua
35import qualified Foreign.Lua as Lua
36import qualified Text.Pandoc.UTF8 as UTF8
36import qualified Text.Pandoc.UTF8 as UTF8
37+import Data.Text (Text)
38-- | Get value behind key from table at given index.
39-- | Get value behind key from table at given index.
39rawField :: Peekable a => StackIndex -> String -> Lua a
40rawField :: Peekable a => StackIndex -> String -> Lua a
@@ -104,7 +105,7 @@ getTag :: StackIndex -> Lua String
104getTag idx = do
105getTag idx = do
105 -- push metatable or just the table
106 -- push metatable or just the table
106 Lua.getmetatable idx >>= \hasMT -> unless hasMT (Lua.pushvalue idx)
107 Lua.getmetatable idx >>= \hasMT -> unless hasMT (Lua.pushvalue idx)
107− Lua.push "tag"
108+ Lua.push ("tag" :: Text)
108 Lua.rawget (Lua.nthFromTop 2)
109 Lua.rawget (Lua.nthFromTop 2)
109 Lua.tostring Lua.stackTop <* Lua.pop 2 >>= \case
110 Lua.tostring Lua.stackTop <* Lua.pop 2 >>= \case
110 Nothing -> Lua.throwException "untagged value"
111 Nothing -> Lua.throwException "untagged value"