mmplayer 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
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