{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
module Text.Pandoc.Lua.Marshal.WriterOptions
( peekWriterOptions
, pushWriterOptions
) where
import Control.Applicative (optional)
import Data.Default (def)
import HsLua as Lua
import HsLua.Aeson (peekViaJSON, pushViaJSON)
import Text.Pandoc.Lua.Marshal.List (pushPandocList)
import Text.Pandoc.Lua.Marshal.Template (peekTemplate, pushTemplate)
import Text.Pandoc.Options (WriterOptions (..))
peekWriterOptions :: LuaError e => Peeker e WriterOptions
peekWriterOptions :: Peeker e WriterOptions
peekWriterOptions = Name -> Peek e WriterOptions -> Peek e WriterOptions
forall e a. Name -> Peek e a -> Peek e a
retrieving Name
"WriterOptions" (Peek e WriterOptions -> Peek e WriterOptions)
-> Peeker e WriterOptions -> Peeker e WriterOptions
forall b c a. (b -> c) -> (a -> b) -> a -> c
. \StackIndex
idx ->
LuaE e Type -> Peek e Type
forall e a. LuaE e a -> Peek e a
liftLua (StackIndex -> LuaE e Type
forall e. StackIndex -> LuaE e Type
ltype StackIndex
idx) Peek e Type
-> (Type -> Peek e WriterOptions) -> Peek e WriterOptions
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Type
TypeUserdata -> UDTypeWithList e (DocumentedFunction e) WriterOptions Void
-> Peeker e WriterOptions
forall e fn a itemtype.
LuaError e =>
UDTypeWithList e fn a itemtype -> Peeker e a
peekUD UDTypeWithList e (DocumentedFunction e) WriterOptions Void
forall e. LuaError e => DocumentedType e WriterOptions
typeWriterOptions StackIndex
idx
Type
TypeTable -> Peeker e WriterOptions
forall e. LuaError e => Peeker e WriterOptions
peekWriterOptionsTable StackIndex
idx
Type
_ -> ByteString -> Peek e WriterOptions
forall a e. ByteString -> Peek e a
failPeek (ByteString -> Peek e WriterOptions)
-> Peek e ByteString -> Peek e WriterOptions
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<
Name -> StackIndex -> Peek e ByteString
forall e. Name -> StackIndex -> Peek e ByteString
typeMismatchMessage Name
"WriterOptions userdata or table" StackIndex
idx
pushWriterOptions :: LuaError e => Pusher e WriterOptions
pushWriterOptions :: Pusher e WriterOptions
pushWriterOptions = UDTypeWithList e (DocumentedFunction e) WriterOptions Void
-> Pusher e WriterOptions
forall e fn a itemtype.
LuaError e =>
UDTypeWithList e fn a itemtype -> a -> LuaE e ()
pushUD UDTypeWithList e (DocumentedFunction e) WriterOptions Void
forall e. LuaError e => DocumentedType e WriterOptions
typeWriterOptions
typeWriterOptions :: LuaError e => DocumentedType e WriterOptions
typeWriterOptions :: DocumentedType e WriterOptions
typeWriterOptions = Name
-> [(Operation, DocumentedFunction e)]
-> [Member e (DocumentedFunction e) WriterOptions]
-> DocumentedType e WriterOptions
forall e a.
LuaError e =>
Name
-> [(Operation, DocumentedFunction e)]
-> [Member e (DocumentedFunction e) a]
-> DocumentedType e a
deftype Name
"WriterOptions"
[ Operation
-> DocumentedFunction e -> (Operation, DocumentedFunction e)
forall e.
Operation
-> DocumentedFunction e -> (Operation, DocumentedFunction e)
operation Operation
Tostring (DocumentedFunction e -> (Operation, DocumentedFunction e))
-> DocumentedFunction e -> (Operation, DocumentedFunction e)
forall a b. (a -> b) -> a -> b
$ (WriterOptions -> LuaE e String)
-> HsFnPrecursor e (WriterOptions -> LuaE e String)
forall a e. a -> HsFnPrecursor e a
lambda
### liftPure show
HsFnPrecursor e (WriterOptions -> LuaE e String)
-> Parameter e WriterOptions -> HsFnPrecursor e (LuaE e String)
forall e a b.
HsFnPrecursor e (a -> b) -> Parameter e a -> HsFnPrecursor e b
<#> DocumentedType e WriterOptions
-> Text -> Text -> Parameter e WriterOptions
forall e a itemtype.
LuaError e =>
DocumentedTypeWithList e a itemtype
-> Text -> Text -> Parameter e a
udparam DocumentedType e WriterOptions
forall e. LuaError e => DocumentedType e WriterOptions
typeWriterOptions Text
"opts" Text
"options to print in native format"
HsFnPrecursor e (LuaE e String)
-> FunctionResults e String -> DocumentedFunction e
forall e a.
HsFnPrecursor e (LuaE e a)
-> FunctionResults e a -> DocumentedFunction e
=#> Pusher e String -> Text -> Text -> FunctionResults e String
forall e a. Pusher e a -> Text -> Text -> FunctionResults e a
functionResult Pusher e String
forall e. String -> LuaE e ()
pushString Text
"string" Text
"Haskell representation"
]
[ Name
-> Text
-> (Pusher e CiteMethod, WriterOptions -> CiteMethod)
-> (Peeker e CiteMethod,
WriterOptions -> CiteMethod -> WriterOptions)
-> Member e (DocumentedFunction e) WriterOptions
forall e b a fn.
LuaError e =>
Name
-> Text
-> (Pusher e b, a -> b)
-> (Peeker e b, a -> b -> a)
-> Member e fn a
property Name
"cite_method"
Text
"How to print cites"
(Pusher e CiteMethod
forall a e. (ToJSON a, LuaError e) => Pusher e a
pushViaJSON, WriterOptions -> CiteMethod
writerCiteMethod)
(Peeker e CiteMethod
forall a e. (FromJSON a, LuaError e) => Peeker e a
peekViaJSON, \WriterOptions
opts CiteMethod
x -> WriterOptions
opts{ writerCiteMethod :: CiteMethod
writerCiteMethod = CiteMethod
x })
, Name
-> Text
-> (Pusher e Int, WriterOptions -> Int)
-> (Peeker e Int, WriterOptions -> Int -> WriterOptions)
-> Member e (DocumentedFunction e) WriterOptions
forall e b a fn.
LuaError e =>
Name
-> Text
-> (Pusher e b, a -> b)
-> (Peeker e b, a -> b -> a)
-> Member e fn a
property Name
"columns"
Text
"Characters in a line (for text wrapping)"
(Pusher e Int
forall a e. (Integral a, Show a) => a -> LuaE e ()
pushIntegral, WriterOptions -> Int
writerColumns)
(Peeker e Int
forall a e. (Integral a, Read a) => Peeker e a
peekIntegral, \WriterOptions
opts Int
x -> WriterOptions
opts{ writerColumns :: Int
writerColumns = Int
x })
, Name
-> Text
-> (Pusher e Int, WriterOptions -> Int)
-> (Peeker e Int, WriterOptions -> Int -> WriterOptions)
-> Member e (DocumentedFunction e) WriterOptions
forall e b a fn.
LuaError e =>
Name
-> Text
-> (Pusher e b, a -> b)
-> (Peeker e b, a -> b -> a)
-> Member e fn a
property Name
"dpi"
Text
"DPI for pixel to/from inch/cm conversions"
(Pusher e Int
forall a e. (Integral a, Show a) => a -> LuaE e ()
pushIntegral, WriterOptions -> Int
writerDpi)
(Peeker e Int
forall a e. (Integral a, Read a) => Peeker e a
peekIntegral, \WriterOptions
opts Int
x -> WriterOptions
opts{ writerDpi :: Int
writerDpi = Int
x })
, Name
-> Text
-> (Pusher e ObfuscationMethod, WriterOptions -> ObfuscationMethod)
-> (Peeker e ObfuscationMethod,
WriterOptions -> ObfuscationMethod -> WriterOptions)
-> Member e (DocumentedFunction e) WriterOptions
forall e b a fn.
LuaError e =>
Name
-> Text
-> (Pusher e b, a -> b)
-> (Peeker e b, a -> b -> a)
-> Member e fn a
property Name
"email_obfuscation"
Text
"How to obfuscate emails"
(Pusher e ObfuscationMethod
forall a e. (ToJSON a, LuaError e) => Pusher e a
pushViaJSON, WriterOptions -> ObfuscationMethod
writerEmailObfuscation)
(Peeker e ObfuscationMethod
forall a e. (FromJSON a, LuaError e) => Peeker e a
peekViaJSON, \WriterOptions
opts ObfuscationMethod
x -> WriterOptions
opts{ writerEmailObfuscation :: ObfuscationMethod
writerEmailObfuscation = ObfuscationMethod
x })
, Name
-> Text
-> (Pusher e Int, WriterOptions -> Int)
-> (Peeker e Int, WriterOptions -> Int -> WriterOptions)
-> Member e (DocumentedFunction e) WriterOptions
forall e b a fn.
LuaError e =>
Name
-> Text
-> (Pusher e b, a -> b)
-> (Peeker e b, a -> b -> a)
-> Member e fn a
property Name
"epub_chapter_level"
Text
"Header level for chapters (separate files)"
(Pusher e Int
forall a e. (Integral a, Show a) => a -> LuaE e ()
pushIntegral, WriterOptions -> Int
writerEpubChapterLevel)
(Peeker e Int
forall a e. (Integral a, Read a) => Peeker e a
peekIntegral, \WriterOptions
opts Int
x -> WriterOptions
opts{ writerEpubChapterLevel :: Int
writerEpubChapterLevel = Int
x })
, Name
-> Text
-> (Pusher e [String], WriterOptions -> [String])
-> (Peeker e [String], WriterOptions -> [String] -> WriterOptions)
-> Member e (DocumentedFunction e) WriterOptions
forall e b a fn.
LuaError e =>
Name
-> Text
-> (Pusher e b, a -> b)
-> (Peeker e b, a -> b -> a)
-> Member e fn a
property Name
"epub_fonts"
Text
"Paths to fonts to embed"
(Pusher e String -> Pusher e [String]
forall e a. LuaError e => Pusher e a -> Pusher e [a]
pushPandocList Pusher e String
forall e. String -> LuaE e ()
pushString, WriterOptions -> [String]
writerEpubFonts)
(Peeker e String -> Peeker e [String]
forall a e. LuaError e => Peeker e a -> Peeker e [a]
peekList Peeker e String
forall e. Peeker e String
peekString, \WriterOptions
opts [String]
x -> WriterOptions
opts{ writerEpubFonts :: [String]
writerEpubFonts = [String]
x })
, Name
-> Text
-> (Pusher e (Maybe Text), WriterOptions -> Maybe Text)
-> (Peeker e (Maybe Text),
WriterOptions -> Maybe Text -> WriterOptions)
-> Member e (DocumentedFunction e) WriterOptions
forall e b a fn.
LuaError e =>
Name
-> Text
-> (Pusher e b, a -> b)
-> (Peeker e b, a -> b -> a)
-> Member e fn a
property Name
"epub_metadata"
Text
"Metadata to include in EPUB"
(LuaE e () -> (Text -> LuaE e ()) -> Pusher e (Maybe Text)
forall b a. b -> (a -> b) -> Maybe a -> b
maybe LuaE e ()
forall e. LuaE e ()
pushnil Text -> LuaE e ()
forall e. Pusher e Text
pushText, WriterOptions -> Maybe Text
writerEpubMetadata)
(Peek e Text -> Peek e (Maybe Text)
forall (f :: * -> *) a. Alternative f => f a -> f (Maybe a)
optional (Peek e Text -> Peek e (Maybe Text))
-> (StackIndex -> Peek e Text) -> Peeker e (Maybe Text)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. StackIndex -> Peek e Text
forall e. Peeker e Text
peekText, \WriterOptions
opts Maybe Text
x -> WriterOptions
opts{ writerEpubMetadata :: Maybe Text
writerEpubMetadata = Maybe Text
x })
, Name
-> Text
-> (Text -> LuaE e (), WriterOptions -> Text)
-> (StackIndex -> Peek e Text,
WriterOptions -> Text -> WriterOptions)
-> Member e (DocumentedFunction e) WriterOptions
forall e b a fn.
LuaError e =>
Name
-> Text
-> (Pusher e b, a -> b)
-> (Peeker e b, a -> b -> a)
-> Member e fn a
property Name
"epub_subdirectory"
Text
"Subdir for epub in OCF"
(Text -> LuaE e ()
forall e. Pusher e Text
pushText, WriterOptions -> Text
writerEpubSubdirectory)
(StackIndex -> Peek e Text
forall e. Peeker e Text
peekText, \WriterOptions
opts Text
x -> WriterOptions
opts{ writerEpubSubdirectory :: Text
writerEpubSubdirectory = Text
x })
, Name
-> Text
-> (Pusher e Extensions, WriterOptions -> Extensions)
-> (Peeker e Extensions,
WriterOptions -> Extensions -> WriterOptions)
-> Member e (DocumentedFunction e) WriterOptions
forall e b a fn.
LuaError e =>
Name
-> Text
-> (Pusher e b, a -> b)
-> (Peeker e b, a -> b -> a)
-> Member e fn a
property Name
"extensions"
Text
"Markdown extensions that can be used"
(Pusher e Extensions
forall a e. (ToJSON a, LuaError e) => Pusher e a
pushViaJSON, WriterOptions -> Extensions
writerExtensions)
(Peeker e Extensions
forall a e. (FromJSON a, LuaError e) => Peeker e a
peekViaJSON, \WriterOptions
opts Extensions
x -> WriterOptions
opts{ writerExtensions :: Extensions
writerExtensions = Extensions
x })
, Name
-> Text
-> (Pusher e (Maybe Style), WriterOptions -> Maybe Style)
-> (Peeker e (Maybe Style),
WriterOptions -> Maybe Style -> WriterOptions)
-> Member e (DocumentedFunction e) WriterOptions
forall e b a fn.
LuaError e =>
Name
-> Text
-> (Pusher e b, a -> b)
-> (Peeker e b, a -> b -> a)
-> Member e fn a
property Name
"highlight_style"
Text
"Style to use for highlighting (nil = no highlighting)"
(LuaE e () -> (Style -> LuaE e ()) -> Pusher e (Maybe Style)
forall b a. b -> (a -> b) -> Maybe a -> b
maybe LuaE e ()
forall e. LuaE e ()
pushnil Style -> LuaE e ()
forall a e. (ToJSON a, LuaError e) => Pusher e a
pushViaJSON, WriterOptions -> Maybe Style
writerHighlightStyle)
(Peek e Style -> Peek e (Maybe Style)
forall (f :: * -> *) a. Alternative f => f a -> f (Maybe a)
optional (Peek e Style -> Peek e (Maybe Style))
-> (StackIndex -> Peek e Style) -> Peeker e (Maybe Style)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. StackIndex -> Peek e Style
forall a e. (FromJSON a, LuaError e) => Peeker e a
peekViaJSON, \WriterOptions
opts Maybe Style
x -> WriterOptions
opts{ writerHighlightStyle :: Maybe Style
writerHighlightStyle = Maybe Style
x })
, Name
-> Text
-> (Pusher e HTMLMathMethod, WriterOptions -> HTMLMathMethod)
-> (Peeker e HTMLMathMethod,
WriterOptions -> HTMLMathMethod -> WriterOptions)
-> Member e (DocumentedFunction e) WriterOptions
forall e b a fn.
LuaError e =>
Name
-> Text
-> (Pusher e b, a -> b)
-> (Peeker e b, a -> b -> a)
-> Member e fn a
property Name
"html_math_method"
Text
"How to print math in HTML"
(Pusher e HTMLMathMethod
forall a e. (ToJSON a, LuaError e) => Pusher e a
pushViaJSON, WriterOptions -> HTMLMathMethod
writerHTMLMathMethod)
(Peeker e HTMLMathMethod
forall a e. (FromJSON a, LuaError e) => Peeker e a
peekViaJSON, \WriterOptions
opts HTMLMathMethod
x -> WriterOptions
opts{ writerHTMLMathMethod :: HTMLMathMethod
writerHTMLMathMethod = HTMLMathMethod
x })
, Name
-> Text
-> (Pusher e Bool, WriterOptions -> Bool)
-> (Peeker e Bool, WriterOptions -> Bool -> WriterOptions)
-> Member e (DocumentedFunction e) WriterOptions
forall e b a fn.
LuaError e =>
Name
-> Text
-> (Pusher e b, a -> b)
-> (Peeker e b, a -> b -> a)
-> Member e fn a
property Name
"html_q_tags"
Text
"Use @<q>@ tags for quotes in HTML"
(Pusher e Bool
forall e. Pusher e Bool
pushBool, WriterOptions -> Bool
writerHtmlQTags)
(Peeker e Bool
forall e. Peeker e Bool
peekBool, \WriterOptions
opts Bool
x -> WriterOptions
opts{ writerHtmlQTags :: Bool
writerHtmlQTags = Bool
x })
, Name
-> Text
-> (Text -> LuaE e (), WriterOptions -> Text)
-> (StackIndex -> Peek e Text,
WriterOptions -> Text -> WriterOptions)
-> Member e (DocumentedFunction e) WriterOptions
forall e b a fn.
LuaError e =>
Name
-> Text
-> (Pusher e b, a -> b)
-> (Peeker e b, a -> b -> a)
-> Member e fn a
property Name
"identifier_prefix"
Text
"Prefix for section & note ids in HTML and for footnote marks in markdown"
(Text -> LuaE e ()
forall e. Pusher e Text
pushText, WriterOptions -> Text
writerIdentifierPrefix)
(StackIndex -> Peek e Text
forall e. Peeker e Text
peekText, \WriterOptions
opts Text
x -> WriterOptions
opts{ writerIdentifierPrefix :: Text
writerIdentifierPrefix = Text
x })
, Name
-> Text
-> (Pusher e Bool, WriterOptions -> Bool)
-> (Peeker e Bool, WriterOptions -> Bool -> WriterOptions)
-> Member e (DocumentedFunction e) WriterOptions
forall e b a fn.
LuaError e =>
Name
-> Text
-> (Pusher e b, a -> b)
-> (Peeker e b, a -> b -> a)
-> Member e fn a
property Name
"incremental"
Text
"True if lists should be incremental"
(Pusher e Bool
forall e. Pusher e Bool
pushBool, WriterOptions -> Bool
writerIncremental)
(Peeker e Bool
forall e. Peeker e Bool
peekBool, \WriterOptions
opts Bool
x -> WriterOptions
opts{ writerIncremental :: Bool
writerIncremental = Bool
x })
, Name
-> Text
-> (Pusher e Bool, WriterOptions -> Bool)
-> (Peeker e Bool, WriterOptions -> Bool -> WriterOptions)
-> Member e (DocumentedFunction e) WriterOptions
forall e b a fn.
LuaError e =>
Name
-> Text
-> (Pusher e b, a -> b)
-> (Peeker e b, a -> b -> a)
-> Member e fn a
property Name
"listings"
Text
"Use listings package for code"
(Pusher e Bool
forall e. Pusher e Bool
pushBool, WriterOptions -> Bool
writerListings)
(Peeker e Bool
forall e. Peeker e Bool
peekBool, \WriterOptions
opts Bool
x -> WriterOptions
opts{ writerListings :: Bool
writerListings = Bool
x })
, Name
-> Text
-> (Pusher e [Int], WriterOptions -> [Int])
-> (Peeker e [Int], WriterOptions -> [Int] -> WriterOptions)
-> Member e (DocumentedFunction e) WriterOptions
forall e b a fn.
LuaError e =>
Name
-> Text
-> (Pusher e b, a -> b)
-> (Peeker e b, a -> b -> a)
-> Member e fn a
property Name
"number_offset"
Text
"Starting number for section, subsection, ..."
(Pusher e Int -> Pusher e [Int]
forall e a. LuaError e => Pusher e a -> Pusher e [a]
pushPandocList Pusher e Int
forall a e. (Integral a, Show a) => a -> LuaE e ()
pushIntegral, WriterOptions -> [Int]
writerNumberOffset)
(Peeker e Int -> Peeker e [Int]
forall a e. LuaError e => Peeker e a -> Peeker e [a]
peekList Peeker e Int
forall a e. (Integral a, Read a) => Peeker e a
peekIntegral, \WriterOptions
opts [Int]
x -> WriterOptions
opts{ writerNumberOffset :: [Int]
writerNumberOffset = [Int]
x })
, Name
-> Text
-> (Pusher e Bool, WriterOptions -> Bool)
-> (Peeker e Bool, WriterOptions -> Bool -> WriterOptions)
-> Member e (DocumentedFunction e) WriterOptions
forall e b a fn.
LuaError e =>
Name
-> Text
-> (Pusher e b, a -> b)
-> (Peeker e b, a -> b -> a)
-> Member e fn a
property Name
"number_sections"
Text
"Number sections in LaTeX"
(Pusher e Bool
forall e. Pusher e Bool
pushBool, WriterOptions -> Bool
writerNumberSections)
(Peeker e Bool
forall e. Peeker e Bool
peekBool, \WriterOptions
opts Bool
x -> WriterOptions
opts{ writerNumberSections :: Bool
writerNumberSections = Bool
x })
, Name
-> Text
-> (Pusher e Bool, WriterOptions -> Bool)
-> (Peeker e Bool, WriterOptions -> Bool -> WriterOptions)
-> Member e (DocumentedFunction e) WriterOptions
forall e b a fn.
LuaError e =>
Name
-> Text
-> (Pusher e b, a -> b)
-> (Peeker e b, a -> b -> a)
-> Member e fn a
property Name
"prefer_ascii"
Text
"Prefer ASCII representations of characters when possible"
(Pusher e Bool
forall e. Pusher e Bool
pushBool, WriterOptions -> Bool
writerPreferAscii)
(Peeker e Bool
forall e. Peeker e Bool
peekBool, \WriterOptions
opts Bool
x -> WriterOptions
opts{ writerPreferAscii :: Bool
writerPreferAscii = Bool
x })
, Name
-> Text
-> (Pusher e (Maybe String), WriterOptions -> Maybe String)
-> (Peeker e (Maybe String),
WriterOptions -> Maybe String -> WriterOptions)
-> Member e (DocumentedFunction e) WriterOptions
forall e b a fn.
LuaError e =>
Name
-> Text
-> (Pusher e b, a -> b)
-> (Peeker e b, a -> b -> a)
-> Member e fn a
property Name
"reference_doc"
Text
"Path to reference document if specified"
(LuaE e () -> Pusher e String -> Pusher e (Maybe String)
forall b a. b -> (a -> b) -> Maybe a -> b
maybe LuaE e ()
forall e. LuaE e ()
pushnil Pusher e String
forall e. String -> LuaE e ()
pushString, WriterOptions -> Maybe String
writerReferenceDoc)
(Peek e String -> Peek e (Maybe String)
forall (f :: * -> *) a. Alternative f => f a -> f (Maybe a)
optional (Peek e String -> Peek e (Maybe String))
-> Peeker e String -> Peeker e (Maybe String)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Peeker e String
forall e. Peeker e String
peekString, \WriterOptions
opts Maybe String
x -> WriterOptions
opts{ writerReferenceDoc :: Maybe String
writerReferenceDoc = Maybe String
x })
, Name
-> Text
-> (Pusher e Bool, WriterOptions -> Bool)
-> (Peeker e Bool, WriterOptions -> Bool -> WriterOptions)
-> Member e (DocumentedFunction e) WriterOptions
forall e b a fn.
LuaError e =>
Name
-> Text
-> (Pusher e b, a -> b)
-> (Peeker e b, a -> b -> a)
-> Member e fn a
property Name
"reference_links"
Text
"Use reference links in writing markdown, rst"
(Pusher e Bool
forall e. Pusher e Bool
pushBool, WriterOptions -> Bool
writerReferenceLinks)
(Peeker e Bool
forall e. Peeker e Bool
peekBool, \WriterOptions
opts Bool
x -> WriterOptions
opts{ writerReferenceLinks :: Bool
writerReferenceLinks = Bool
x })
, Name
-> Text
-> (Pusher e ReferenceLocation, WriterOptions -> ReferenceLocation)
-> (Peeker e ReferenceLocation,
WriterOptions -> ReferenceLocation -> WriterOptions)
-> Member e (DocumentedFunction e) WriterOptions
forall e b a fn.
LuaError e =>
Name
-> Text
-> (Pusher e b, a -> b)
-> (Peeker e b, a -> b -> a)
-> Member e fn a
property Name
"reference_location"
Text
"Location of footnotes and references for writing markdown"
(Pusher e ReferenceLocation
forall a e. (ToJSON a, LuaError e) => Pusher e a
pushViaJSON, WriterOptions -> ReferenceLocation
writerReferenceLocation)
(Peeker e ReferenceLocation
forall a e. (FromJSON a, LuaError e) => Peeker e a
peekViaJSON, \WriterOptions
opts ReferenceLocation
x -> WriterOptions
opts{ writerReferenceLocation :: ReferenceLocation
writerReferenceLocation = ReferenceLocation
x })
, Name
-> Text
-> (Pusher e Bool, WriterOptions -> Bool)
-> (Peeker e Bool, WriterOptions -> Bool -> WriterOptions)
-> Member e (DocumentedFunction e) WriterOptions
forall e b a fn.
LuaError e =>
Name
-> Text
-> (Pusher e b, a -> b)
-> (Peeker e b, a -> b -> a)
-> Member e fn a
property Name
"section_divs"
Text
"Put sections in div tags in HTML"
(Pusher e Bool
forall e. Pusher e Bool
pushBool, WriterOptions -> Bool
writerSectionDivs)
(Peeker e Bool
forall e. Peeker e Bool
peekBool, \WriterOptions
opts Bool
x -> WriterOptions
opts{ writerSectionDivs :: Bool
writerSectionDivs = Bool
x })
, Name
-> Text
-> (Pusher e Bool, WriterOptions -> Bool)
-> (Peeker e Bool, WriterOptions -> Bool -> WriterOptions)
-> Member e (DocumentedFunction e) WriterOptions
forall e b a fn.
LuaError e =>
Name
-> Text
-> (Pusher e b, a -> b)
-> (Peeker e b, a -> b -> a)
-> Member e fn a
property Name
"setext_headers"
Text
"Use setext headers for levels 1-2 in markdown"
(Pusher e Bool
forall e. Pusher e Bool
pushBool, WriterOptions -> Bool
writerSetextHeaders)
(Peeker e Bool
forall e. Peeker e Bool
peekBool, \WriterOptions
opts Bool
x -> WriterOptions
opts{ writerSetextHeaders :: Bool
writerSetextHeaders = Bool
x })
, Name
-> Text
-> (Pusher e (Maybe Int), WriterOptions -> Maybe Int)
-> (Peeker e (Maybe Int),
WriterOptions -> Maybe Int -> WriterOptions)
-> Member e (DocumentedFunction e) WriterOptions
forall e b a fn.
LuaError e =>
Name
-> Text
-> (Pusher e b, a -> b)
-> (Peeker e b, a -> b -> a)
-> Member e fn a
property Name
"slide_level"
Text
"Force header level of slides"
(LuaE e () -> Pusher e Int -> Pusher e (Maybe Int)
forall b a. b -> (a -> b) -> Maybe a -> b
maybe LuaE e ()
forall e. LuaE e ()
pushnil Pusher e Int
forall a e. (Integral a, Show a) => a -> LuaE e ()
pushIntegral, WriterOptions -> Maybe Int
writerSlideLevel)
(Peek e Int -> Peek e (Maybe Int)
forall (f :: * -> *) a. Alternative f => f a -> f (Maybe a)
optional (Peek e Int -> Peek e (Maybe Int))
-> Peeker e Int -> Peeker e (Maybe Int)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Peeker e Int
forall a e. (Integral a, Read a) => Peeker e a
peekIntegral, \WriterOptions
opts Maybe Int
x -> WriterOptions
opts{ writerSlideLevel :: Maybe Int
writerSlideLevel = Maybe Int
x })
, Name
-> Text
-> (Pusher e Int, WriterOptions -> Int)
-> (Peeker e Int, WriterOptions -> Int -> WriterOptions)
-> Member e (DocumentedFunction e) WriterOptions
forall e b a fn.
LuaError e =>
Name
-> Text
-> (Pusher e b, a -> b)
-> (Peeker e b, a -> b -> a)
-> Member e fn a
property Name
"tab_stop"
Text
"Tabstop for conversion btw spaces and tabs"
(Pusher e Int
forall a e. (Integral a, Show a) => a -> LuaE e ()
pushIntegral, WriterOptions -> Int
writerTabStop)
(Peeker e Int
forall a e. (Integral a, Read a) => Peeker e a
peekIntegral, \WriterOptions
opts Int
x -> WriterOptions
opts{ writerTabStop :: Int
writerTabStop = Int
x })
, Name
-> Text
-> (Pusher e Bool, WriterOptions -> Bool)
-> (Peeker e Bool, WriterOptions -> Bool -> WriterOptions)
-> Member e (DocumentedFunction e) WriterOptions
forall e b a fn.
LuaError e =>
Name
-> Text
-> (Pusher e b, a -> b)
-> (Peeker e b, a -> b -> a)
-> Member e fn a
property Name
"table_of_contents"
Text
"Include table of contents"
(Pusher e Bool
forall e. Pusher e Bool
pushBool, WriterOptions -> Bool
writerTableOfContents)
(Peeker e Bool
forall e. Peeker e Bool
peekBool, \WriterOptions
opts Bool
x -> WriterOptions
opts{ writerTableOfContents :: Bool
writerTableOfContents = Bool
x })
, Name
-> Text
-> (Pusher e (Maybe (Template Text)),
WriterOptions -> Maybe (Template Text))
-> (Peeker e (Maybe (Template Text)),
WriterOptions -> Maybe (Template Text) -> WriterOptions)
-> Member e (DocumentedFunction e) WriterOptions
forall e b a fn.
LuaError e =>
Name
-> Text
-> (Pusher e b, a -> b)
-> (Peeker e b, a -> b -> a)
-> Member e fn a
property Name
"template"
Text
"Template to use"
(LuaE e ()
-> (Template Text -> LuaE e ()) -> Pusher e (Maybe (Template Text))
forall b a. b -> (a -> b) -> Maybe a -> b
maybe LuaE e ()
forall e. LuaE e ()
pushnil Template Text -> LuaE e ()
forall e. LuaError e => Pusher e (Template Text)
pushTemplate, WriterOptions -> Maybe (Template Text)
writerTemplate)
(Peek e (Template Text) -> Peek e (Maybe (Template Text))
forall (f :: * -> *) a. Alternative f => f a -> f (Maybe a)
optional (Peek e (Template Text) -> Peek e (Maybe (Template Text)))
-> (StackIndex -> Peek e (Template Text))
-> Peeker e (Maybe (Template Text))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. StackIndex -> Peek e (Template Text)
forall e. LuaError e => Peeker e (Template Text)
peekTemplate, \WriterOptions
opts Maybe (Template Text)
x -> WriterOptions
opts{ writerTemplate :: Maybe (Template Text)
writerTemplate = Maybe (Template Text)
x })
, Name
-> Text
-> (Pusher e Int, WriterOptions -> Int)
-> (Peeker e Int, WriterOptions -> Int -> WriterOptions)
-> Member e (DocumentedFunction e) WriterOptions
forall e b a fn.
LuaError e =>
Name
-> Text
-> (Pusher e b, a -> b)
-> (Peeker e b, a -> b -> a)
-> Member e fn a
property Name
"toc_depth"
Text
"Number of levels to include in TOC"
(Pusher e Int
forall a e. (Integral a, Show a) => a -> LuaE e ()
pushIntegral, WriterOptions -> Int
writerTOCDepth)
(Peeker e Int
forall a e. (Integral a, Read a) => Peeker e a
peekIntegral, \WriterOptions
opts Int
x -> WriterOptions
opts{ writerTOCDepth :: Int
writerTOCDepth = Int
x })
, Name
-> Text
-> (Pusher e TopLevelDivision, WriterOptions -> TopLevelDivision)
-> (Peeker e TopLevelDivision,
WriterOptions -> TopLevelDivision -> WriterOptions)
-> Member e (DocumentedFunction e) WriterOptions
forall e b a fn.
LuaError e =>
Name
-> Text
-> (Pusher e b, a -> b)
-> (Peeker e b, a -> b -> a)
-> Member e fn a
property Name
"top_level_division"
Text
"Type of top-level divisions"
(Pusher e TopLevelDivision
forall a e. (ToJSON a, LuaError e) => Pusher e a
pushViaJSON, WriterOptions -> TopLevelDivision
writerTopLevelDivision)
(Peeker e TopLevelDivision
forall a e. (FromJSON a, LuaError e) => Peeker e a
peekViaJSON, \WriterOptions
opts TopLevelDivision
x -> WriterOptions
opts{ writerTopLevelDivision :: TopLevelDivision
writerTopLevelDivision = TopLevelDivision
x })
, Name
-> Text
-> (Pusher e (Context Text), WriterOptions -> Context Text)
-> (Peeker e (Context Text),
WriterOptions -> Context Text -> WriterOptions)
-> Member e (DocumentedFunction e) WriterOptions
forall e b a fn.
LuaError e =>
Name
-> Text
-> (Pusher e b, a -> b)
-> (Peeker e b, a -> b -> a)
-> Member e fn a
property Name
"variables"
Text
"Variables to set in template"
(Pusher e (Context Text)
forall a e. (ToJSON a, LuaError e) => Pusher e a
pushViaJSON, WriterOptions -> Context Text
writerVariables)
(Peeker e (Context Text)
forall a e. (FromJSON a, LuaError e) => Peeker e a
peekViaJSON, \WriterOptions
opts Context Text
x -> WriterOptions
opts{ writerVariables :: Context Text
writerVariables = Context Text
x })
, Name
-> Text
-> (Pusher e WrapOption, WriterOptions -> WrapOption)
-> (Peeker e WrapOption,
WriterOptions -> WrapOption -> WriterOptions)
-> Member e (DocumentedFunction e) WriterOptions
forall e b a fn.
LuaError e =>
Name
-> Text
-> (Pusher e b, a -> b)
-> (Peeker e b, a -> b -> a)
-> Member e fn a
property Name
"wrap_text"
Text
"Option for wrapping text"
(Pusher e WrapOption
forall a e. (ToJSON a, LuaError e) => Pusher e a
pushViaJSON, WriterOptions -> WrapOption
writerWrapText)
(Peeker e WrapOption
forall a e. (FromJSON a, LuaError e) => Peeker e a
peekViaJSON, \WriterOptions
opts WrapOption
x -> WriterOptions
opts{ writerWrapText :: WrapOption
writerWrapText = WrapOption
x })
]
peekWriterOptionsTable :: LuaError e => Peeker e WriterOptions
peekWriterOptionsTable :: Peeker e WriterOptions
peekWriterOptionsTable StackIndex
idx = Name -> Peek e WriterOptions -> Peek e WriterOptions
forall e a. Name -> Peek e a -> Peek e a
retrieving Name
"WriterOptions (table)" (Peek e WriterOptions -> Peek e WriterOptions)
-> Peek e WriterOptions -> Peek e WriterOptions
forall a b. (a -> b) -> a -> b
$ do
LuaE e () -> Peek e ()
forall e a. LuaE e a -> Peek e a
liftLua (LuaE e () -> Peek e ()) -> LuaE e () -> Peek e ()
forall a b. (a -> b) -> a -> b
$ do
StackIndex
absidx <- StackIndex -> LuaE e StackIndex
forall e. StackIndex -> LuaE e StackIndex
absindex StackIndex
idx
UDTypeWithList e (DocumentedFunction e) WriterOptions Void
-> WriterOptions -> LuaE e ()
forall e fn a itemtype.
LuaError e =>
UDTypeWithList e fn a itemtype -> a -> LuaE e ()
pushUD UDTypeWithList e (DocumentedFunction e) WriterOptions Void
forall e. LuaError e => DocumentedType e WriterOptions
typeWriterOptions WriterOptions
forall a. Default a => a
def
let setFields :: LuaE e ()
setFields = do
StackIndex -> LuaE e Bool
forall e. LuaError e => StackIndex -> LuaE e Bool
next StackIndex
absidx LuaE e Bool -> (Bool -> LuaE e ()) -> LuaE e ()
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
Bool
False -> () -> LuaE e ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()
Bool
True -> do
StackIndex -> LuaE e ()
forall e. StackIndex -> LuaE e ()
pushvalue (CInt -> StackIndex
nth CInt
2) LuaE e () -> LuaE e () -> LuaE e ()
forall (f :: * -> *) a b. Applicative f => f a -> f b -> f b
*> StackIndex -> LuaE e ()
forall e. StackIndex -> LuaE e ()
insert (CInt -> StackIndex
nth CInt
2)
StackIndex -> LuaE e ()
forall e. LuaError e => StackIndex -> LuaE e ()
settable (CInt -> StackIndex
nth CInt
4)
LuaE e ()
setFields
LuaE e ()
forall e. LuaE e ()
pushnil
LuaE e ()
setFields
UDTypeWithList e (DocumentedFunction e) WriterOptions Void
-> Peeker e WriterOptions
forall e fn a itemtype.
LuaError e =>
UDTypeWithList e fn a itemtype -> Peeker e a
peekUD UDTypeWithList e (DocumentedFunction e) WriterOptions Void
forall e. LuaError e => DocumentedType e WriterOptions
typeWriterOptions StackIndex
top Peek e WriterOptions -> LuaE e () -> Peek e WriterOptions
forall e a b. Peek e a -> LuaE e b -> Peek e a
`lastly` Int -> LuaE e ()
forall e. Int -> LuaE e ()
pop Int
1
instance Pushable WriterOptions where
push :: WriterOptions -> LuaE e ()
push = WriterOptions -> LuaE e ()
forall e. LuaError e => WriterOptions -> LuaE e ()
pushWriterOptions