Readers¶
Inlet has built-in support for three input file languages: JSON, Lua, and YAML. Due to language features, not all readers support all Inlet features. Below is a table that lists supported features:
JSON | Lua | YAML | |
---|---|---|---|
Primitive Types | bool, double, int, string | bool, double, int, string | bool, double, int, string |
Dictionaries | X | X | X |
Arrays | X | X | X |
Non-contiguous Arrays | X | ||
Mixed-typed key Arrays | X | ||
Callback Functions | X |
Extra Lua Functionality¶
The LuaReader class has the ability to access the entire Lua State via the protected member function
LuaReader::solState()
. This allows you fully utilize the Sol library, documented in
Sol’s documentation. This is an advanced feature
and not recommended unless there is a good reason. We provide an example on how to create a derived
reader class here:
// Header required here because `axom::sol::state` is only forward declared in LuaReader.hpp.
#include "axom/sol.hpp"
class SolStateReader : public axom::inlet::LuaReader
{
public:
using LuaReader::solState;
};
Inlet opens four Lua libraries by default: base
, math
, string
, package
. All libraries are documented
in Sol’s open_library documentation.
For example, you can add the io
library by doing this:
// Create Inlet Reader that supports Lua input files
auto reader = std::make_unique<SolStateReader>();
// Load extra io Lua library
reader->solState()->open_libraries(axom::sol::lib::io);
// Parse example input string
reader->parseString(input);