mmplayer 0.0.6 → 0.0.7

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: a7696f764235df86a1aa44baa06e9aac9f3d2aa3
4
- data.tar.gz: 79bb9a6de61e332396a1ca14fba2f7bcf5e7c153
3
+ metadata.gz: 3d59002ee9d5711a811c980108d0e29c41b19811
4
+ data.tar.gz: 66a9b65bfb2b421e4fdcba73a04eec30123610af
5
5
  SHA512:
6
- metadata.gz: 83026c50689a282c33c8463ec018159cc4f984d6e6cc51308dbe7440210e7452f3096e76f5a361b601666458c22885740b290a35d729f84ca8478bfb445dc66d
7
- data.tar.gz: 2b84b86a16ee4a02ac0290575697967c5f1cb7e387ef6998d4478cd9e708f80c25822dbcf9f62907a07c2b5f5cc69a72c67fc86938fe46cf4381a34f1bebeb81
6
+ metadata.gz: a6b900ed7f38488e1f8705a0f4facdf0cf0dc6d44b0fae68c4fb2d06cb5b55b262637890d0c737640b7ca345df1d882a01cbfe1f5b505b44a619db4a2e8461cd
7
+ data.tar.gz: 9d8b70983896579a071930a32dc9a4de903694383fb7d30cdb4efcf144125ec6dd2ef2d0bab7c78851e6310102f9f1e98333dd3d2bca22c1519b04bf66992014
@@ -24,7 +24,7 @@ require "mmplayer/player"
24
24
 
25
25
  module MMPlayer
26
26
 
27
- VERSION = "0.0.6"
27
+ VERSION = "0.0.7"
28
28
 
29
29
  # Shortcut to Context constructor
30
30
  def self.new(*args, &block)
@@ -10,8 +10,11 @@ module MMPlayer
10
10
  @flags += " #{options[:flags]}" unless options[:flags].nil?
11
11
  @messenger = Messenger.new
12
12
  @callback = {}
13
- @is_playing = false
14
- @is_eof_handled = true
13
+ @playback_state = {
14
+ :eof => false,
15
+ :play => false,
16
+ :pause => false
17
+ }
15
18
  @player_threads = []
16
19
  end
17
20
 
@@ -37,15 +40,27 @@ module MMPlayer
37
40
  !@player.nil?
38
41
  end
39
42
 
43
+ # Is the player paused?
44
+ # @return [Boolean]
45
+ def paused?
46
+ @playback_state[:pause]
47
+ end
48
+ alias_method :pause?, :paused?
49
+
50
+ # Toggles pause
51
+ # @return [Boolean]
52
+ def pause
53
+ @playback_state[:pause] = !@playback_state[:pause]
54
+ @player.pause
55
+ @playback_state[:pause]
56
+ end
57
+
40
58
  # Handle events while the player is running
41
59
  # @return [Boolean]
42
60
  def playback_loop
43
61
  loop do
44
- if @is_playing && !@is_eof_handled && get_player_output.size < 1
45
- handle_eof
46
- else
47
- sleep(0.05)
48
- end
62
+ handle_eof if eof?
63
+ sleep(0.05)
49
64
  end
50
65
  true
51
66
  end
@@ -100,6 +115,12 @@ module MMPlayer
100
115
 
101
116
  private
102
117
 
118
+ # Has the end of a media file been reached?
119
+ # @return [Boolean]
120
+ def eof?
121
+ @playback_state[:play] && !@playback_state[:eof] && !@playback_state[:pause] && get_player_output.size < 1
122
+ end
123
+
103
124
  # Get player output from stdout
104
125
  def get_player_output
105
126
  @player.stdout.gets.inspect.strip.gsub(/(\\n|[\\"])/, '').strip
@@ -107,8 +128,8 @@ module MMPlayer
107
128
 
108
129
  # Handle the end of playback for a single media file
109
130
  def handle_eof
110
- @is_eof_handled = true
111
- @is_playing = false
131
+ @playback_state[:eof] = true
132
+ @playback_state[:play] = false
112
133
  STDOUT.flush
113
134
  @callback[:end_of_file].call unless @callback[:end_of_file].nil?
114
135
  true
@@ -117,8 +138,8 @@ module MMPlayer
117
138
  # Handle the beginning of playback for a single media file
118
139
  def handle_start
119
140
  loop until get_player_output.size > 1
120
- @is_playing = true
121
- @is_eof_handled = false
141
+ @playback_state[:play] = true
142
+ @playback_state[:eof] = false
122
143
  end
123
144
 
124
145
  # Get progress percentage from the MPlayer report
@@ -5,17 +5,13 @@ class MMPlayer::PlayerTest < Minitest::Test
5
5
  context "Player" do
6
6
 
7
7
  setup do
8
- # Stub out MPlayer completely
9
- class MPlayer
10
- def get(*args)
11
- "0.1\n"
12
- end
13
-
14
- def load_file(something)
15
- end
16
- end
17
8
  @player = MMPlayer::Player.new
18
- @mplayer = MPlayer.new
9
+ @mplayer = Object.new
10
+ @mplayer.stubs(:load_file).returns(true)
11
+ out = Object.new
12
+ out.stubs(:gets).returns("")
13
+ @mplayer.stubs(:stdout).returns(out)
14
+ @mplayer.stubs(:get).returns("0.1\n")
19
15
  @player.stubs(:ensure_player).returns(@mplayer)
20
16
  @player.instance_variable_set("@player", @mplayer)
21
17
  @player.instance_variable_set("@player_threads", [Thread.new {}])
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mmplayer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ari Russo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-07 00:00:00.000000000 Z
11
+ date: 2015-05-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest