Class: Webmidi::Middleware::Debounce
- Defined in:
- lib/webmidi/middleware/timing_gate.rb
Instance Method Summary collapse
- #call(message) ⇒ Object
-
#initialize(app, interval:, key: nil, **options) ⇒ Debounce
constructor
A new instance of Debounce.
Constructor Details
#initialize(app, interval:, key: nil, **options) ⇒ Debounce
Returns a new instance of Debounce.
6 7 8 9 10 11 12 |
# File 'lib/webmidi/middleware/timing_gate.rb', line 6 def initialize(app, interval:, key: nil, **) super(app, **) validate_interval!(interval) @interval = interval @key = key || ->() { .to_bytes } @last_seen = {} end |
Instance Method Details
#call(message) ⇒ Object
14 15 16 17 18 19 20 21 22 |
# File 'lib/webmidi/middleware/timing_gate.rb', line 14 def call() key = @key.call() now = . last = @last_seen[key] return nil if last && (now - last) < @interval @last_seen[key] = now @app.call() end |