aboutsummaryrefslogtreecommitdiff
path: root/src/Text/Pandoc/Lua/Module/Types.hs
blob: fdc63cd99747a9518a094b62aef20739467bb1ae (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
{- |
   Module      : Text.Pandoc.Lua.Module.Types
   Copyright   : © 2019 Albert Krewinkel
   License     : GNU GPL, version 2 or above

   Maintainer  : Albert Krewinkel <tarleb+pandoc@moltkeplatz.de>
   Stability   : alpha

Pandoc data type constructors.
-}
module Text.Pandoc.Lua.Module.Types
  ( pushModule
  ) where

import Prelude
import Data.Version (Version)
import Foreign.Lua (Lua, NumResults)
import Text.Pandoc.Definition
import Text.Pandoc.Lua.Marshaling.AST (LuaAttr, LuaListAttributes)
import Text.Pandoc.Lua.Marshaling.Version ()
import Text.Pandoc.Lua.Util (addFunction)
import Text.Pandoc.Shared (Element (..))

import qualified Foreign.Lua as Lua

-- | Push the pandoc.system module on the Lua stack.
pushModule :: Lua NumResults
pushModule = do
  Lua.newtable
  addFunction "Version" (return :: Version -> Lua Version)
  pushCloneTable
  Lua.setfield (Lua.nthFromTop 2) "clone"
  return 1

pushCloneTable :: Lua NumResults
pushCloneTable = do
  Lua.newtable
  addFunction "Attr" cloneAttr
  addFunction "Block" cloneBlock
  addFunction "Citation" cloneCitation
  addFunction "Element" cloneElement
  addFunction "Inline" cloneInline
  addFunction "Meta" cloneMeta
  addFunction "MetaValue" cloneMetaValue
  addFunction "ListAttributes" cloneListAttributes
  addFunction "Pandoc" clonePandoc
  return 1

cloneAttr :: LuaAttr -> Lua LuaAttr
cloneAttr = return

cloneBlock :: Block -> Lua Block
cloneBlock = return

cloneCitation :: Citation -> Lua Citation
cloneCitation = return

cloneElement :: Element -> Lua Element
cloneElement = return

cloneInline :: Inline -> Lua Inline
cloneInline = return

cloneListAttributes :: LuaListAttributes -> Lua LuaListAttributes
cloneListAttributes = return

cloneMeta :: Meta -> Lua Meta
cloneMeta = return

cloneMetaValue :: MetaValue -> Lua MetaValue
cloneMetaValue = return

clonePandoc :: Pandoc -> Lua Pandoc
clonePandoc = return