@@ -16,8 +16,9 @@ You should have received a copy of the GNU General Public License
16along with this program; if not, write to the Free Software
16along with this program; if not, write to the Free Software
17Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19−{-# LANGUAGE FlexibleInstances #-}
19+{-# LANGUAGE FlexibleInstances #-}
20−{-# LANGUAGE LambdaCase #-}
20+{-# LANGUAGE LambdaCase #-}
21+{-# LANGUAGE ScopedTypeVariables #-}
21{-# OPTIONS_GHC -fno-warn-orphans #-}
22{-# OPTIONS_GHC -fno-warn-orphans #-}
23 Module : Text.Pandoc.Lua.StackInstances
24 Module : Text.Pandoc.Lua.StackInstances
@@ -34,13 +35,18 @@ module Text.Pandoc.Lua.StackInstances () where
35import Control.Applicative ((<|>))
36import Control.Applicative ((<|>))
36import Control.Monad (when)
37import Control.Monad (when)
38+import Data.Data (showConstr, toConstr)
39+import Data.Foldable (forM_)
37import Foreign.Lua (FromLuaStack (peek), Lua, LuaInteger, LuaNumber, StackIndex,
40import Foreign.Lua (FromLuaStack (peek), Lua, LuaInteger, LuaNumber, StackIndex,
38 ToLuaStack (push), Type (..), throwLuaError, tryLua)
41 ToLuaStack (push), Type (..), throwLuaError, tryLua)
39import Text.Pandoc.Definition
42import Text.Pandoc.Definition
43+import Text.Pandoc.Extensions (Extensions)
40import Text.Pandoc.Lua.Util (adjustIndexBy, getTable, pushViaConstructor)
44import Text.Pandoc.Lua.Util (adjustIndexBy, getTable, pushViaConstructor)
45+import Text.Pandoc.Options (ReaderOptions (..), TrackChanges)
41import Text.Pandoc.Shared (Element (Blk, Sec), safeRead)
46import Text.Pandoc.Shared (Element (Blk, Sec), safeRead)
43import qualified Foreign.Lua as Lua
48import qualified Foreign.Lua as Lua
49+import qualified Data.Set as Set
44import qualified Text.Pandoc.Lua.Util as LuaUtil
50import qualified Text.Pandoc.Lua.Util as LuaUtil
46instance ToLuaStack Pandoc where
52instance ToLuaStack Pandoc where
@@ -332,3 +338,43 @@ instance ToLuaStack Element where
332 Lua.push "__index"
338 Lua.push "__index"
333 Lua.pushvalue (-2)
339 Lua.pushvalue (-2)
334 Lua.rawset (-3)
340 Lua.rawset (-3)
346+instance ToLuaStack Extensions where
347+ push exts = push (show exts)
349+instance ToLuaStack TrackChanges where
350+ push = push . showConstr . toConstr
352+instance ToLuaStack a => ToLuaStack (Set.Set a) where
355+ forM_ set (`LuaUtil.addValue` True)
357+instance ToLuaStack ReaderOptions where
360+ (extensions :: Extensions)
361+ (standalone :: Bool)
364+ (indentedCodeClasses :: [String])
365+ (abbreviations :: Set.Set String)
366+ (defaultImageExtension :: String)
367+ (trackChanges :: TrackChanges)
368+ (stripComments :: Bool)
371+ LuaUtil.addValue "extensions" extensions
372+ LuaUtil.addValue "standalone" standalone
373+ LuaUtil.addValue "columns" columns
374+ LuaUtil.addValue "tabStop" tabStop
375+ LuaUtil.addValue "indentedCodeClasses" indentedCodeClasses
376+ LuaUtil.addValue "abbreviations" abbreviations
377+ LuaUtil.addValue "defaultImageExtension" defaultImageExtension
378+ LuaUtil.addValue "trackChanges" trackChanges
379+ LuaUtil.addValue "stripComments" stripComments