@@ -359,9 +359,32 @@ instance Pushable ReaderOptions where
359 LuaUtil.addField "extensions" extensions
359 LuaUtil.addField "extensions" extensions
360 LuaUtil.addField "standalone" standalone
360 LuaUtil.addField "standalone" standalone
361 LuaUtil.addField "columns" columns
361 LuaUtil.addField "columns" columns
362− LuaUtil.addField "tabStop" tabStop
362+ LuaUtil.addField "tab_stop" tabStop
363− LuaUtil.addField "indentedCodeClasses" indentedCodeClasses
363+ LuaUtil.addField "indented_code_classes" indentedCodeClasses
364 LuaUtil.addField "abbreviations" abbreviations
364 LuaUtil.addField "abbreviations" abbreviations
365− LuaUtil.addField "defaultImageExtension" defaultImageExtension
365+ LuaUtil.addField "default_image_extension" defaultImageExtension
366− LuaUtil.addField "trackChanges" trackChanges
366+ LuaUtil.addField "track_changes" trackChanges
367− LuaUtil.addField "stripComments" stripComments
367+ LuaUtil.addField "strip_comments" stripComments
370+ let indexReaderOptions :: AnyValue -> AnyValue -> Lua Lua.NumResults
371+ indexReaderOptions _tbl (AnyValue key) = do
372+ Lua.ltype key >>= \case
373+ Lua.TypeString -> Lua.peek key >>= \case
374+ "defaultImageExtension" -> Lua.push defaultImageExtension
375+ "indentedCodeClasses" -> Lua.push indentedCodeClasses
376+ "stripComments" -> Lua.push stripComments
377+ "tabStop" -> Lua.push tabStop
378+ "trackChanges" -> Lua.push trackChanges
383+ LuaUtil.addFunction "__index" indexReaderOptions
384+ Lua.setmetatable (Lua.nthFromTop 2)
386+-- | Dummy type to allow values of arbitrary Lua type.
387+newtype AnyValue = AnyValue StackIndex
389+instance Peekable AnyValue where
390+ peek = return . AnyValue