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