{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-}
module Text.Pandoc.Lua.Marshal.TableParts
( peekColSpec
, pushColSpec
, peekRow
, peekRowFuzzy
, pushRow
, peekTableBody
, peekTableBodyFuzzy
, pushTableBody
, peekTableFoot
, pushTableFoot
, peekTableHead
, pushTableHead
, mkRow
, mkTableBody
, mkTableFoot
, mkTableHead
) where
import Control.Applicative (optional)
import Control.Monad ((<$!>))
import HsLua
import Text.Pandoc.Lua.Marshal.Alignment (peekAlignment, pushAlignment)
import Text.Pandoc.Lua.Marshal.Row
import Text.Pandoc.Lua.Marshal.TableBody
import Text.Pandoc.Lua.Marshal.TableFoot
import Text.Pandoc.Lua.Marshal.TableHead
import Text.Pandoc.Definition
pushColSpec :: LuaError e => Pusher e ColSpec
pushColSpec :: forall e. LuaError e => Pusher e ColSpec
pushColSpec = Pusher e Alignment -> Pusher e ColWidth -> ColSpec -> LuaE e ()
forall e a b.
LuaError e =>
Pusher e a -> Pusher e b -> (a, b) -> LuaE e ()
pushPair Pusher e Alignment
forall e. Pusher e Alignment
pushAlignment Pusher e ColWidth
forall e. LuaError e => Pusher e ColWidth
pushColWidth
peekColSpec :: LuaError e => Peeker e ColSpec
peekColSpec :: forall e. LuaError e => Peeker e ColSpec
peekColSpec = Peeker e Alignment -> Peeker e ColWidth -> Peeker e ColSpec
forall e a b.
LuaError e =>
Peeker e a -> Peeker e b -> Peeker e (a, b)
peekPair Peeker e Alignment
forall e. Peeker e Alignment
peekAlignment Peeker e ColWidth
forall e. Peeker e ColWidth
peekColWidth
peekColWidth :: Peeker e ColWidth
peekColWidth :: forall e. Peeker e ColWidth
peekColWidth = Name -> Peek e ColWidth -> Peek e ColWidth
forall e a. Name -> Peek e a -> Peek e a
retrieving Name
"ColWidth" (Peek e ColWidth -> Peek e ColWidth)
-> (StackIndex -> Peek e ColWidth) -> StackIndex -> Peek e ColWidth
forall b c a. (b -> c) -> (a -> b) -> a -> c
. \StackIndex
idx -> do
ColWidth -> (Double -> ColWidth) -> Maybe Double -> ColWidth
forall b a. b -> (a -> b) -> Maybe a -> b
maybe ColWidth
ColWidthDefault Double -> ColWidth
ColWidth (Maybe Double -> ColWidth)
-> Peek e (Maybe Double) -> Peek e ColWidth
forall (m :: * -> *) a b. Monad m => (a -> b) -> m a -> m b
<$!> Peek e Double -> Peek e (Maybe Double)
forall (f :: * -> *) a. Alternative f => f a -> f (Maybe a)
optional (Peeker e Double
forall a e. (RealFloat a, Read a) => Peeker e a
peekRealFloat StackIndex
idx)
pushColWidth :: LuaError e => Pusher e ColWidth
pushColWidth :: forall e. LuaError e => Pusher e ColWidth
pushColWidth = \case
(ColWidth Double
w) -> Double -> LuaE e ()
forall a e. (Pushable a, LuaError e) => a -> LuaE e ()
forall e. LuaError e => Double -> LuaE e ()
push Double
w
ColWidth
ColWidthDefault -> LuaE e ()
forall e. LuaE e ()
pushnil