Sha256: bd8519be432cf45ebb9fa9e3470795624dcc92a07a403cfc877f6378c022ffd8

Contents?: true

Size: 561 Bytes

Versions: 5

Compression:

Stored size: 561 Bytes

Contents

class ActiveShepherd::DeepReverseChanges < Struct.new(:changes)
  def reverse
    changer = ->(h) {
      unless h.is_a?(Hash)
        binding.pry
      end
      h.each_with_object({}) do |(k,v), new_hash|
        if v.is_a?(Array) && v.size == 2
          new_hash[k] = [v.last, v.first]
        elsif v.is_a?(Hash)
          new_hash[k] = changer.call(v)
        elsif :_create == k.to_sym
          new_hash[:_destroy] = v
        elsif :_destroy == k.to_sym
          new_hash[:_create] = v
        end
      end
    }

    changer.call(changes)
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
activeshepherd-0.8.4 lib/active_shepherd/deep_reverse_changes.rb
activeshepherd-0.8.3 lib/active_shepherd/deep_reverse_changes.rb
activeshepherd-0.8.2 lib/active_shepherd/deep_reverse_changes.rb
activeshepherd-0.8.1 lib/active_shepherd/deep_reverse_changes.rb
activeshepherd-0.8.0 lib/active_shepherd/deep_reverse_changes.rb