1 local class = elidragon.class
6 local worldpath = minetest.get_worldpath()
8 function db:constructor(name, initial_data, dir, env)
9 private[self] = {env = env or _G, path = (dir or worldpath) .. "/" .. name .. ".json"}
10 self:load(initial_data or {})
13 function db:load(initial_data)
14 local _self = private[self]
15 local file = _self.env.io.open(_self.path, "r")
16 local data = file and minetest.parse_json(file:read()) or {}
20 for k, v in pairs(data) do
23 for k, v in pairs(initial_data) do
24 if not rawget(self, k) then
31 local _self = private[self]
32 local file = assert(_self.env.io.open(_self.path, "w"))
33 file:write(minetest.write_json(self))
42 minetest.register_on_shutdown(function()
43 for d in pairs(private) do
48 elidragon.db = class(db)