class Fusuma::Plugin::Buffers::TapBuffer

manage events and generate command

Constants

DEFAULT_SECONDS_TO_KEEP
DEFAULT_SOURCE

Public Instance Methods

begin?(event) click to toggle source
# File lib/fusuma/plugin/buffers/tap_buffer.rb, line 79
def begin?(event)
  event.record.status == 'begin'
end
buffer(event) click to toggle source

@param event [Event] @return [NilClass, TapBuffer]

# File lib/fusuma/plugin/buffers/tap_buffer.rb, line 24
def buffer(event)
  return unless event&.tag == source

  # NOTE: need to set `begin` event at first of buffer
  clear && return unless bufferable?(event)

  @events.push(event)
  self
end
bufferable?(event) click to toggle source
# File lib/fusuma/plugin/buffers/tap_buffer.rb, line 43
def bufferable?(event)
  case event.record.status
  when 'end'
    true
  when 'begin'
    if empty?
      true
    else
      false
    end
  when 'keep', 'touch', 'hold', 'release', 'move'
    if empty?
      false
    else
      true
    end
  else
    raise "Unexpected status: #{event.record.status}"
  end
end
clear_expired(*) click to toggle source

clear old events

# File lib/fusuma/plugin/buffers/tap_buffer.rb, line 18
def clear_expired(*)
  clear if @events.any? { |e| ended?(e) }
end
config_param_types() click to toggle source
# File lib/fusuma/plugin/buffers/tap_buffer.rb, line 11
def config_param_types
  {
    'source': [String]
  }
end
empty?() click to toggle source
# File lib/fusuma/plugin/buffers/tap_buffer.rb, line 39
def empty?
  @events.empty?
end
ended?(event) click to toggle source
# File lib/fusuma/plugin/buffers/tap_buffer.rb, line 75
def ended?(event)
  event.record.status == 'end'
end
finger() click to toggle source

return [Integer]

# File lib/fusuma/plugin/buffers/tap_buffer.rb, line 35
def finger
  @events.map { |e| e.record.finger }.max
end
present?() click to toggle source
# File lib/fusuma/plugin/buffers/tap_buffer.rb, line 64
def present?
  !empty?
end
select_by_events() { |event| ... } click to toggle source
# File lib/fusuma/plugin/buffers/tap_buffer.rb, line 68
def select_by_events
  return enum_for(:select) unless block_given?

  events = @events.select { |event| yield event }
  self.class.new events
end