class EV::EventSource

Public Class Methods

new(events) click to toggle source
# File lib/ev/event_source.rb, line 3
def initialize(events)
  events.each { |event| apply_without_changes(event) }
end

Public Instance Methods

changes() click to toggle source
# File lib/ev/event_source.rb, line 11
def changes
  return [] unless @changes
  @changes.dup
end
commit() click to toggle source
# File lib/ev/event_source.rb, line 24
def commit
  @changes.clear if @changes
end
dirty?() click to toggle source
# File lib/ev/event_source.rb, line 20
def dirty?
  changes.size > 0
end
initial_version() click to toggle source
# File lib/ev/event_source.rb, line 16
def initial_version
  version - changes.size
end
version() click to toggle source
# File lib/ev/event_source.rb, line 7
def version
  @version || 0
end

Protected Instance Methods

apply(event) click to toggle source
# File lib/ev/event_source.rb, line 34
def apply(event)
  apply_without_changes(event)
  @changes ||= []
  @changes << event
end
handle(event) click to toggle source
# File lib/ev/event_source.rb, line 30
def handle(event)
  raise NotImplementedError
end

Private Instance Methods

apply_without_changes(event) click to toggle source
# File lib/ev/event_source.rb, line 42
def apply_without_changes(event)
  handle(event)
  @version = version.next
end