class Eternity::TrackFlatter

Public Class Methods

flatten(changes) click to toggle source
# File lib/eternity/track_flatter.rb, line 5
def flatten(changes)
  send "flatten_#{changes.first['action']}_#{changes.last['action']}", changes
end

Private Class Methods

expand(change) click to toggle source
# File lib/eternity/track_flatter.rb, line 47
def expand(change)
  return change.dup if change.key? 'data'
  change.dup.tap do |ch|
    sha1 = ch.delete 'blob'
    ch['data'] = Blob.read(:data, sha1) if sha1
  end
end
flatten_delete_delete(changes) click to toggle source
# File lib/eternity/track_flatter.rb, line 43
def flatten_delete_delete(changes)
  expand changes.last
end
flatten_delete_insert(changes) click to toggle source
# File lib/eternity/track_flatter.rb, line 35
def flatten_delete_insert(changes)
  {'action' => UPDATE, 'data' => expand(changes.last)['data']}
end
flatten_delete_update(changes) click to toggle source
# File lib/eternity/track_flatter.rb, line 39
def flatten_delete_update(changes)
  {'action' => UPDATE, 'data' => expand(changes.last)['data']}
end
flatten_insert_delete(changes) click to toggle source
# File lib/eternity/track_flatter.rb, line 19
def flatten_insert_delete(changes)
  nil
end
flatten_insert_insert(changes) click to toggle source
# File lib/eternity/track_flatter.rb, line 11
def flatten_insert_insert(changes)
  expand changes.last
end
flatten_insert_update(changes) click to toggle source
# File lib/eternity/track_flatter.rb, line 15
def flatten_insert_update(changes)
  {'action' => INSERT, 'data' => expand(changes.last)['data']}
end
flatten_update_delete(changes) click to toggle source
# File lib/eternity/track_flatter.rb, line 31
def flatten_update_delete(changes)
  expand changes.last
end
flatten_update_insert(changes) click to toggle source
# File lib/eternity/track_flatter.rb, line 23
def flatten_update_insert(changes)
  {'action' => UPDATE, 'data' => expand(changes.last)['data']}
end
flatten_update_update(changes) click to toggle source
# File lib/eternity/track_flatter.rb, line 27
def flatten_update_update(changes)
  expand changes.last
end