Skip to content

Instantly share code, notes, and snippets.

@tomjn
Created August 8, 2018 19:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tomjn/3fcd21193c54fa20a7fdbf3c11b78164 to your computer and use it in GitHub Desktop.
Save tomjn/3fcd21193c54fa20a7fdbf3c11b78164 to your computer and use it in GitHub Desktop.
DataStore = {
data = {},
subscribers = {}
}
function DataStore:new (o)
o = o or {} -- create object if user does not provide one
setmetatable(o, self)
self.__index = self
return o
end
function DataStore:get( key )
return self.data[key]
end
function DataStore:set( key, value )
oldvalue = self.data[key]
self.data[key] = value
if self.subscribers[key] then
for i,v in ipairs(self.subscribers[key]) do
v(oldvalue, value)
end
end
end
function DataStore:subscribe( key, callback )
s = self.subscribers[key] or {}
table.insert(s, callback)
self.subscribers[key] = s
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment