lib/undo.rb in undo-0.0.3 vs lib/undo.rb in undo-0.1.0

- old
+ new

@@ -1,24 +1,44 @@ require "undo/version" require "undo/config" +require "undo/wrapper" module Undo - require "undo/model" - def self.configure(&block) block_given? ? block.call(config) : config end - def self.config - @config ||= Undo::Config.new + def self.store(object, options = {}) + config.with(options) do |config| + uuid(object, options).tap do |uuid| + config.storage.put uuid, config.serializer.serialize(object) + end + end end - def self.wrap(object, *args) - Model.new object, *args + def self.restore(uuid, options = {}) + config.with(options) do |config| + config.serializer.deserialize config.storage.fetch(uuid) + end end - def self.restore(uuid, options = {}) + def self.wrap(object, options = {}) config.with(options) do |config| - config.serializer.deserialize config.storage.fetch uuid + Wrapper.new( + object, + uuid(object, options), + mutator_methods: config.mutator_methods + ) end end + + private + def self.uuid(object, options = {}) + options[:uuid] || config.uuid_generator.call(object) + end + + def self.config + @config ||= Undo::Config.new + end + + private_class_method :uuid, :config end