martin-eden / lua_table_serializer

Serialize lua table (even with cycles) to lua code that reconstructs it.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

-- Lua table serializer

details = {
  intention = 'Serialize data to machine-and-human readable format.',
  requirements = {'Lua 5.3'},
  license = 'GPLv3',
  priorities = {
    fast = 0,
    simple = 0.4,
    flexible = 0.6,
  },
  handles = {
    cycles = true,
    metatables = false,
    threads = false,
    userdata = false,
    functions = false,
  },
  installation = {
    '$ git clone https://github.com/martin-eden/lua_table_serializer',
    '$ cd lua_table_serializer',
  },
  usage =
    function(t)
      t = t or _G
      require('workshop.base')
      local table_to_str = request('!.formats.lua_table_code.save')
      print(table_to_str(t))
    end,

  additional_modes = {
    minimal = {
      intention = 'Serialize table data without whitespaces.',
      usage =
        function(t)
          t = t or _G
          --[[
            1. Clone <lua_table.save.interface> object.
            2. Override <install_node_handlers> function in it.
            3. Provide changed object to generic table serializer, <.c_table_serializer>.
          ]]
          -- (1)
          local terser = new(request('!.formats.lua_table.save.interface'))
          -- (2)
          terser.install_node_handlers =
            request('!.formats.lua_table.save.install_node_handlers.minimal')
          -- (3)
          local table_to_str_orig = request('!.formats.lua_table_code.save')
          local table_to_str =
            function(t)
              return table_to_str_orig(t, {c_table_serializer = terser})
            end
          -- test
          print(table_to_str(t))
        end,
    },
  },
}

About

Serialize lua table (even with cycles) to lua code that reconstructs it.

License:GNU General Public License v3.0


Languages

Language:Lua 100.0%