Skip to content

Instantly share code, notes, and snippets.

@s-shin
Last active February 18, 2016 04:47
Show Gist options
  • Select an option

  • Save s-shin/3ffacde6cd136cbe5e60 to your computer and use it in GitHub Desktop.

Select an option

Save s-shin/3ffacde6cd136cbe5e60 to your computer and use it in GitHub Desktop.
_ = require "lodash"
class BrainWrapper
constructor: (@brain, @key, @initialData, @migrator = _.identity) ->
get: (path = null, defaultValue = null) ->
data = @_get()
if path then _.get(data, path, defaultValue) else data
set: (path, value) ->
data = @_get()
_.set(data, path, value)
@update data
update: (data) ->
@brain.set @key, data
_get: () ->
data = @brain.get(@key) || @initialData
unless data.version >= @initialData.version
data = @migrator(data)
data.version = @initialData.version
@update(data)
data
module.exports = BrainWrapper
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment