diff options
-rw-r--r-- | data/pandoc.lua | 66 | ||||
-rw-r--r-- | src/Text/Pandoc/Lua/StackInstances.hs | 99 |
2 files changed, 41 insertions, 124 deletions
diff --git a/data/pandoc.lua b/data/pandoc.lua index eab565ca8..79cf83deb 100644 --- a/data/pandoc.lua +++ b/data/pandoc.lua @@ -565,115 +565,93 @@ M.Superscript = M.Inline:create_constructor( --- Math content is to be displayed on a separate line. -- @see Math -M.DisplayMath = {} -M.DisplayMath.t = "DisplayMath" +M.DisplayMath = "DisplayMath" --- Math content is to be displayed inline within the paragraph -- @see Math -M.InlineMath = {} -M.InlineMath.t = "InlineMath" +M.InlineMath = "InlineMath" --- Double quoted content. -- @see Quoted -M.DoubleQuote = {} -M.DoubleQuote.t = "DoubleQuote" +M.DoubleQuote = "DoubleQuote" --- Single quoted content. -- @see Quoted -M.SingleQuote = {} -M.SingleQuote.t = "SingleQuote" +M.SingleQuote = "SingleQuote" --- Author name is mentioned in the text. -- @see Citation -- @see Cite -M.AuthorInText = {} -M.AuthorInText.t = "AuthorInText" +M.AuthorInText = "AuthorInText" --- Author name is suppressed. -- @see Citation -- @see Cite -M.SuppressAuthor = {} -M.SuppressAuthor.t = "SuppressAuthor" +M.SuppressAuthor = "SuppressAuthor" --- Default citation style is used. -- @see Citation -- @see Cite -M.NormalCitation = {} -M.NormalCitation.t = "NormalCitation" +M.NormalCitation = "NormalCitation" --- Table cells aligned left. -- @see Table -M.AlignLeft = {} -M.AlignLeft.t = "AlignLeft" +M.AlignLeft = "AlignLeft" --- Table cells right-aligned. -- @see Table -M.AlignRight = {} -M.AlignRight.t = "AlignRight" +M.AlignRight = "AlignRight" --- Table cell content is centered. -- @see Table -M.AlignCenter = {} -M.AlignCenter.t = "AlignCenter" +M.AlignCenter = "AlignCenter" --- Table cells are alignment is unaltered. -- @see Table -M.AlignDefault = {} -M.AlignDefault.t = "AlignDefault" +M.AlignDefault = "AlignDefault" --- Default list number delimiters are used. -- @see OrderedList -M.DefaultDelim = {} -M.DefaultDelim.t = "DefaultDelim" +M.DefaultDelim = "DefaultDelim" --- List numbers are delimited by a period. -- @see OrderedList -M.Period = {} -M.Period.t = "Period" +M.Period = "Period" --- List numbers are delimited by a single parenthesis. -- @see OrderedList -M.OneParen = {} -M.OneParen.t = "OneParen" +M.OneParen = "OneParen" --- List numbers are delimited by a double parentheses. -- @see OrderedList -M.TwoParens = {} -M.TwoParens.t = "TwoParens" +M.TwoParens = "TwoParens" --- List are numbered in the default style -- @see OrderedList -M.DefaultStyle = {} -M.DefaultStyle.t = "DefaultStyle" +M.DefaultStyle = "DefaultStyle" --- List items are numbered as examples. -- @see OrderedList -M.Example = {} -M.Example.t = "Example" +M.Example = "Example" --- List are numbered using decimal integers. -- @see OrderedList -M.Decimal = {} -M.Decimal.t = "Decimal" +M.Decimal = "Decimal" --- List are numbered using lower-case roman numerals. -- @see OrderedList -M.LowerRoman = {} -M.LowerRoman.t = "LowerRoman" +M.LowerRoman = "LowerRoman" --- List are numbered using upper-case roman numerals -- @see OrderedList -M.UpperRoman = {} -M.UpperRoman.t = "UpperRoman" +M.UpperRoman = "UpperRoman" --- List are numbered using lower-case alphabetic characters. -- @see OrderedList -M.LowerAlpha = {} -M.LowerAlpha.t = "LowerAlpha" +M.LowerAlpha = "LowerAlpha" --- List are numbered using upper-case alphabetic characters. -- @see OrderedList -M.UpperAlpha = {} -M.UpperAlpha.t = "UpperAlpha" +M.UpperAlpha = "UpperAlpha" ------------------------------------------------------------------------ diff --git a/src/Text/Pandoc/Lua/StackInstances.hs b/src/Text/Pandoc/Lua/StackInstances.hs index 8af7f78c0..796095512 100644 --- a/src/Text/Pandoc/Lua/StackInstances.hs +++ b/src/Text/Pandoc/Lua/StackInstances.hs @@ -34,10 +34,11 @@ module Text.Pandoc.Lua.StackInstances () where import Control.Applicative ( (<|>) ) import Scripting.Lua - ( LTYPE(..), LuaState, StackValue(..), getglobal2, ltype, newtable, objlen ) + ( LTYPE(..), LuaState, StackValue(..), ltype, newtable, objlen ) import Text.Pandoc.Definition import Text.Pandoc.Lua.SharedInstances () import Text.Pandoc.Lua.Util ( addValue, getTable, pushViaConstructor ) +import Text.Pandoc.Shared ( safeRead ) instance StackValue Pandoc where push lua (Pandoc meta blocks) = do @@ -143,19 +144,8 @@ instance StackValue Inline where valuetype _ = TTABLE instance StackValue Alignment where - push lua = \case - AlignLeft -> getglobal2 lua "pandoc.AlignLeft" - AlignRight -> getglobal2 lua "pandoc.AlignRight" - AlignCenter -> getglobal2 lua "pandoc.AlignCenter" - AlignDefault -> getglobal2 lua "pandoc.AlignDefault" - peek lua idx = do - tag <- getTable lua idx "t" - case tag of - Just "AlignLeft" -> return $ Just AlignLeft - Just "AlignRight" -> return $ Just AlignRight - Just "AlignCenter" -> return $ Just AlignCenter - Just "AlignDefault" -> return $ Just AlignDefault - _ -> return Nothing + push lua = push lua . show + peek lua idx = (>>= safeRead) <$> peek lua idx valuetype _ = TSTRING instance StackValue Citation where @@ -172,18 +162,9 @@ instance StackValue Citation where valuetype _ = TTABLE instance StackValue CitationMode where - push lua = \case - AuthorInText -> getglobal2 lua "pandoc.AuthorInText" - NormalCitation -> getglobal2 lua "pandoc.NormalCitation" - SuppressAuthor -> getglobal2 lua "pandoc.SuppressAuthor" - peek lua idx = do - tag <- getTable lua idx "t" - case tag of - Just "AuthorInText" -> return $ Just AuthorInText - Just "NormalCitation" -> return $ Just NormalCitation - Just "SuppressAuthor" -> return $ Just SuppressAuthor - _ -> return Nothing - valuetype _ = TTABLE + push lua = push lua . show + peek lua idx = (>>= safeRead) <$> peek lua idx + valuetype _ = TSTRING instance StackValue Format where push lua (Format f) = push lua f @@ -191,66 +172,24 @@ instance StackValue Format where valuetype _ = TSTRING instance StackValue ListNumberDelim where - push lua = \case - DefaultDelim -> getglobal2 lua "pandoc.DefaultDelim" - Period -> getglobal2 lua "pandoc.Period" - OneParen -> getglobal2 lua "pandoc.OneParen" - TwoParens -> getglobal2 lua "pandoc.TwoParens" - peek lua idx = do - tag <- getTable lua idx "t" - case tag of - Just "DefaultDelim" -> return $ Just DefaultDelim - Just "Period" -> return $ Just Period - Just "OneParen" -> return $ Just OneParen - Just "TwoParens" -> return $ Just TwoParens - _ -> return Nothing - valuetype _ = TTABLE + push lua = push lua . show + peek lua idx = (>>= safeRead) <$> peek lua idx + valuetype _ = TSTRING instance StackValue ListNumberStyle where - push lua = \case - DefaultStyle -> getglobal2 lua "pandoc.DefaultStyle" - LowerRoman -> getglobal2 lua "pandoc.LowerRoman" - UpperRoman -> getglobal2 lua "pandoc.UpperRoman" - LowerAlpha -> getglobal2 lua "pandoc.LowerAlpha" - UpperAlpha -> getglobal2 lua "pandoc.UpperAlpha" - Decimal -> getglobal2 lua "pandoc.Decimal" - Example -> getglobal2 lua "pandoc.Example" - peek lua idx = do - tag <- getTable lua idx "t" - case tag of - Just "DefaultStyle" -> return $ Just DefaultStyle - Just "LowerRoman" -> return $ Just LowerRoman - Just "UpperRoman" -> return $ Just UpperRoman - Just "LowerAlpha" -> return $ Just LowerAlpha - Just "UpperAlpha" -> return $ Just UpperAlpha - Just "Decimal" -> return $ Just Decimal - Just "Example" -> return $ Just Example - _ -> return Nothing - valuetype _ = TTABLE + push lua = push lua . show + peek lua idx = (>>= safeRead) <$> peek lua idx + valuetype _ = TSTRING instance StackValue MathType where - push lua = \case - InlineMath -> getglobal2 lua "pandoc.InlineMath" - DisplayMath -> getglobal2 lua "pandoc.DisplayMath" - peek lua idx = do - res <- getTable lua idx "t" - case res of - Just "InlineMath" -> return $ Just InlineMath - Just "DisplayMath" -> return $ Just DisplayMath - _ -> return Nothing - valuetype _ = TTABLE + push lua = push lua . show + peek lua idx = (>>= safeRead) <$> peek lua idx + valuetype _ = TSTRING instance StackValue QuoteType where - push lua = \case - SingleQuote -> getglobal2 lua "pandoc.SingleQuote" - DoubleQuote -> getglobal2 lua "pandoc.DoubleQuote" - peek lua idx = do - res <- getTable lua idx "t" - case res of - Just "SingleQuote" -> return $ Just SingleQuote - Just "DoubleQuote" -> return $ Just DoubleQuote - _ -> return Nothing - valuetype _ = TTABLE + push lua = push lua . show + peek lua idx = (>>= safeRead) <$> peek lua idx + valuetype _ = TSTRING -- | Return the value at the given index as inline if possible. peekInline :: LuaState -> Int -> IO (Maybe Inline) |