mmplayer 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 22ba4c7203b98702ef6771a78b984d725e563b53
4
- data.tar.gz: 677cc0a18786f01cbb6de3d832e5d86f41628818
3
+ metadata.gz: a60391f734494cf22b9e343379660079567721e8
4
+ data.tar.gz: 4d75bfe1d744172b82fc9866ef9e4af6735d68e4
5
5
  SHA512:
6
- metadata.gz: 4348a42a44f4d0a9b0a9619bc06fef9d8464cb166d725a1a81dd9f3bbe999265e04e90891b2e3da2cc39ef324b4e3bd290b12639c33e370e8e3179332c0bcbea
7
- data.tar.gz: 4f87d5c157d78f51bceaf11cf1a210534261245f0178904daa391bc9c9800f947efe2e5ec669ed9105536444192473dc449e512df244e78a6951b972cdbe2f28
6
+ metadata.gz: 64d867081ec9fb0b087076da7981aa978b7cc7ca704f01f7c6c8b4d0fa440c40383ecdc93171370e87ba91d0282d4bb6325aa7669c69118d60124c0bc1013054
7
+ data.tar.gz: 18ca9e448f75dc6d2d97cb071060ea5e49af680a991bb184cb55b9e752454f2a1a45d0073986b97e60182f9afc1d2688b20e87648a8d447a6589e26cbb563943
data/lib/mmplayer.rb CHANGED
@@ -24,7 +24,7 @@ require "mmplayer/player"
24
24
 
25
25
  module MMPlayer
26
26
 
27
- VERSION = "0.0.4"
27
+ VERSION = "0.0.5"
28
28
 
29
29
  # Shortcut to Context constructor
30
30
  def self.new(*args, &block)
@@ -49,22 +49,16 @@ module MMPlayer
49
49
  # @param [MIDIMessage] message
50
50
  # @return [Boolean, nil]
51
51
  def note_message(message)
52
- callback = callback = @callback[:note][message.note] || @callback[:note][nil]
53
- unless callback.nil?
54
- callback.call(message.velocity)
55
- true
56
- end
52
+ call_callback(:note, message.note, message.velocity) |
53
+ call_catch_all_callback(:note, message)
57
54
  end
58
55
 
59
56
  # Find and call a cc received callback if it exists
60
57
  # @param [MIDIMessage] message
61
58
  # @return [Boolean, nil]
62
59
  def cc_message(message)
63
- callback = @callback[:cc][message.index] || @callback[:cc][nil]
64
- unless callback.nil?
65
- callback.call(message.value)
66
- true
67
- end
60
+ call_callback(:cc, message.index, message.value) |
61
+ call_catch_all_callback(:cc, message)
68
62
  end
69
63
 
70
64
  # Find and call a system message callback if it exists
@@ -72,10 +66,7 @@ module MMPlayer
72
66
  # @return [Boolean, nil]
73
67
  def system_message(message)
74
68
  name = message.name.downcase.to_sym
75
- unless (callback = @callback[:system][name]).nil?
76
- callback.call
77
- true
78
- end
69
+ call_callback(:system, name)
79
70
  end
80
71
 
81
72
  # Find and call a channel message callback if it exists for the given message and channel
@@ -91,6 +82,28 @@ module MMPlayer
91
82
  end
92
83
  end
93
84
 
85
+ private
86
+
87
+ # Execute the catch-all callback for the given type if it exists
88
+ # @param [Symbol] type
89
+ # @param [MIDIMessage] message
90
+ # @return [Boolean]
91
+ def call_catch_all_callback(type, message)
92
+ call_callback(type, nil, message)
93
+ end
94
+
95
+ # Execute the callback for the given type and key and pass it the given args
96
+ # @param [Symbol] type
97
+ # @param [Object] key
98
+ # @param [*Object] arguments
99
+ # @return [Boolean]
100
+ def call_callback(type, key, *arguments)
101
+ unless (callback = @callback[type][key]).nil?
102
+ callback.call(*arguments)
103
+ true
104
+ end
105
+ end
106
+
94
107
  end
95
108
 
96
109
  end
@@ -33,10 +33,14 @@ class MMPlayer::MessageHandlerTest < Minitest::Test
33
33
  @var2 = nil
34
34
  @catchall = proc { |vel| @var2 = vel }
35
35
  @handler.add_callback(:note, nil, &@catchall)
36
- @catchall.expects(:call).never
36
+ @catchall.expects(:call).once
37
37
  end
38
38
 
39
- should "call specific callback" do
39
+ teardown do
40
+ @catchall.unstub(:call)
41
+ end
42
+
43
+ should "call both callbacks" do
40
44
  assert @handler.send(:note_message, @message)
41
45
  end
42
46
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mmplayer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ari Russo