playa 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: f36e30ae12935612846af5c4408fdbb4deff034b
4
- data.tar.gz: 663edcda3ca27598c588e62e74ea308ae0f2437a
3
+ metadata.gz: d88b2e0a2af60ed003e3ca5bc18d95d406be0533
4
+ data.tar.gz: 093d9cc23a42dd2cca5f70c2aa539f16780099e6
5
5
  SHA512:
6
- metadata.gz: b96dbbc538014492715e2a53450adc15c77b250238f6d1ef987c42c8e046d528df19a3d6070b6a8eac915c9dda370f245a1ff0196d47c52aa1b66e2e2d51cf28
7
- data.tar.gz: 85dff0ef33616fc43a2f1572625222c3f96d213798d1d17e4a634278e9ad61bc2f37ac6ac9d31a5cac245e525f3fad5c2354c6db5e588cd9b976905d68173d33
6
+ metadata.gz: 0b4b7213271270d99c25141699aef79a0b4cd4bd9960827b3aaa60821f7faa83dc8a166649bfd4c417a185e409fede898d2a1785543db5672cece17e742fb9b8
7
+ data.tar.gz: 982b686d92fc31bfcb8457adbc49864573a5300ec399eaf6db6ba747197d043e0049832e323519f2a1b7915e540c607caed62e26ac4133c197462ea885fee883
data/lib/playa.rb CHANGED
@@ -11,7 +11,7 @@ module Playa
11
11
  class Application
12
12
  include Vedeu
13
13
 
14
- interface 'playlist' do
14
+ playlist = interface 'playlist' do
15
15
  colour foreground: '#afd700', background: '#000000'
16
16
  cursor false
17
17
  width 60
@@ -19,6 +19,27 @@ module Playa
19
19
  centred true
20
20
  end
21
21
 
22
+ interface 'progress' do
23
+ colour foreground: '#afd700', background: '#005a00'
24
+ cursor false
25
+ width 60
26
+ height 1
27
+ y playlist.geometry.top - 2
28
+ x playlist.geometry.left
29
+ centred false
30
+ delay 0.5
31
+ end
32
+
33
+ interface 'status' do
34
+ colour foreground: '#d70000', background: '#000000'
35
+ cursor false
36
+ width 60
37
+ height 1
38
+ y playlist.geometry.bottom + 1
39
+ x playlist.geometry.left
40
+ centred false
41
+ end
42
+
22
43
  def self.start(args = [])
23
44
  Controller.new(args)
24
45
 
@@ -1,3 +1,7 @@
1
+ require 'playa/playlist_view'
2
+ require 'playa/progress_view'
3
+ require 'playa/status_view'
4
+
1
5
  module Playa
2
6
  class Controller
3
7
  include Vedeu
@@ -6,7 +10,13 @@ module Playa
6
10
  @player = Player.new
7
11
 
8
12
  event :update do
9
- @view = View.render(menu.view)
13
+ PlaylistView.render(menu)
14
+ StatusView.render
15
+ end
16
+
17
+ event :progress_update, 0.5 do
18
+ ProgressView.render(@player)
19
+ trigger(:refresh)
10
20
  end
11
21
 
12
22
  event :select do |track|
@@ -33,8 +43,13 @@ module Playa
33
43
  trigger(:update)
34
44
  end
35
45
 
36
- @args = args
37
- @view = View.render(menu.view)
46
+ @player.events.on(:position_change) { trigger(:progress_update) }
47
+ @player.events.on(:complete) { trigger(:complete) }
48
+
49
+ @args = args
50
+ @playlist_view = PlaylistView.render(menu)
51
+ @status_view = StatusView.render
52
+ @progress_view = ProgressView.render(@player)
38
53
  end
39
54
 
40
55
  private
data/lib/playa/player.rb CHANGED
@@ -49,13 +49,27 @@ module Playa
49
49
  player.position
50
50
  end
51
51
 
52
+ def progress
53
+ if playing?
54
+ counter / @track.duration
55
+ else
56
+ 0
57
+ end
58
+ end
59
+
52
60
  def level
53
61
  player.level
54
62
  end
55
63
 
64
+ def events
65
+ player.events
66
+ end
67
+
56
68
  private
57
69
 
58
70
  def open(track)
71
+ @track = track
72
+
59
73
  player.load(track.filename)
60
74
  end
61
75
 
@@ -0,0 +1,19 @@
1
+ require 'playa/view'
2
+
3
+ module Playa
4
+ class PlaylistView < View
5
+ private
6
+
7
+ def output
8
+ [ 'playlist', playlist ]
9
+ end
10
+
11
+ def type
12
+ :menu
13
+ end
14
+
15
+ def playlist
16
+ object.view.map { |sel, cur, item| [ sel, cur, item.title ] }
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,23 @@
1
+ require 'playa/view'
2
+
3
+ module Playa
4
+ class ProgressView < View
5
+ private
6
+
7
+ def output
8
+ { 'progress' => [ progress ] }
9
+ end
10
+
11
+ def type
12
+ :raw
13
+ end
14
+
15
+ def progress
16
+ '|' * (object.progress * view_width).ceil
17
+ end
18
+
19
+ def view_width
20
+ @_width ||= Vedeu.view('progress').width
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,19 @@
1
+ require 'playa/view'
2
+
3
+ module Playa
4
+ class StatusView < View
5
+ private
6
+
7
+ def output
8
+ { 'status' => status }
9
+ end
10
+
11
+ def type
12
+ :raw
13
+ end
14
+
15
+ def status
16
+ [ "\u{25B2} Previous \u{25BC} Next \u{21B2} Select \u{2395} Pause Q Quit" ]
17
+ end
18
+ end
19
+ end
data/lib/playa/view.rb CHANGED
@@ -1,27 +1,27 @@
1
1
  module Playa
2
2
  class View
3
- def self.render(menu)
4
- new(menu).render
3
+ def self.render(object = nil)
4
+ new(object).render
5
5
  end
6
6
 
7
- def initialize(menu)
8
- @menu = menu
7
+ def initialize(object = nil)
8
+ @object = object
9
9
  end
10
10
 
11
11
  def render
12
- Vedeu::Parser.parse([ interface, playlist ])
12
+ Vedeu::View.render(type, output)
13
13
  end
14
14
 
15
15
  private
16
16
 
17
- attr_reader :menu
17
+ attr_reader :object
18
18
 
19
- def playlist
20
- menu.map { |sel, cur, item| [ sel, cur, item.title ] }
19
+ def output
20
+ fail NotImplemented, 'Implement #output on your subclass of Playa::View.'
21
21
  end
22
22
 
23
- def interface
24
- 'playlist'
23
+ def type
24
+ fail NotImplemented, 'Implement #type on your subclass of Playa::View.'
25
25
  end
26
26
  end
27
27
  end
File without changes
@@ -0,0 +1,3 @@
1
+ <%- colour(foreground: '#a5f500', background: '#000000') do -%>
2
+ <%- menu.item -%>
3
+ <%- end -%>
data/playa.gemspec CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = 'playa'
7
- spec.version = '0.0.6'
7
+ spec.version = '0.0.7'
8
8
  spec.authors = ['Gavin Laking']
9
9
  spec.email = ['gavinlaking@gmail.com']
10
10
  spec.summary = 'Plays mp3s from a directory.'
@@ -22,11 +22,12 @@ Gem::Specification.new do |spec|
22
22
  spec.add_development_dependency 'guard-minitest', '2.3.1'
23
23
  spec.add_development_dependency 'minitest', '5.4.0'
24
24
  spec.add_development_dependency 'minitest-reporters', '1.0.5'
25
+ spec.add_development_dependency 'mocha', '1.1.0'
25
26
  spec.add_development_dependency 'pry', '0.10.0'
26
27
  spec.add_development_dependency 'rake', '10.3.2'
27
28
  spec.add_development_dependency 'simplecov', '0.9.0'
28
29
 
29
30
  spec.add_dependency 'audite', '0.3.0'
30
31
  spec.add_dependency 'ruby-mp3info', '0.8.4'
31
- spec.add_dependency 'vedeu', '0.1.0'
32
+ spec.add_dependency 'vedeu', '0.1.2'
32
33
  end
@@ -3,10 +3,70 @@ require 'playa/player'
3
3
 
4
4
  module Playa
5
5
  describe Player do
6
+ let(:player) { Player.new }
7
+ let(:track) { stub(filename: 'test/support/parkwalk.mp3') }
8
+
6
9
  describe '#initialize' do
7
10
  it 'returns an instance of itself' do
8
11
  Player.new.must_be_instance_of(Player)
9
12
  end
10
13
  end
14
+
15
+ describe '#play' do
16
+ it 'returns an instance of Portaudio' do
17
+ player.play.must_be_instance_of(Portaudio)
18
+ end
19
+ end
20
+
21
+ describe '#stop' do
22
+ it 'returns nil when nothing is playing' do
23
+ player.stop.must_be_instance_of(NilClass)
24
+ end
25
+ end
26
+
27
+ describe '#rewind' do
28
+ it '' do
29
+ skip # spf
30
+ player.rewind.must_be_instance_of(NilClass)
31
+ end
32
+ end
33
+
34
+ describe '#forward' do
35
+ it '' do
36
+ skip # spf
37
+ player.forward.must_be_instance_of(NilClass)
38
+ end
39
+ end
40
+
41
+ describe '#toggle' do
42
+ it '' do
43
+ player.toggle.must_be_instance_of(Portaudio)
44
+ end
45
+ end
46
+
47
+ describe '#playing?' do
48
+ it 'returns false when nothing is playing' do
49
+ player.playing?.must_be_instance_of(FalseClass)
50
+ end
51
+
52
+ it 'returns true when a track is playing' do
53
+ skip
54
+ player.playing?.must_be_instance_of(TrueClass)
55
+ end
56
+ end
57
+
58
+ describe '#counter' do
59
+ it '' do
60
+ skip
61
+ player.counter.must_be_instance_of(NilClass)
62
+ end
63
+ end
64
+
65
+ describe '#level' do
66
+ it 'returns the volume level of the audio currently under ' \
67
+ 'the play head' do
68
+ player.level.must_be_instance_of(Float)
69
+ end
70
+ end
11
71
  end
12
72
  end
data/test/test_helper.rb CHANGED
@@ -10,6 +10,8 @@ end unless ENV['no_simplecov']
10
10
 
11
11
  require 'playa'
12
12
 
13
+ require 'mocha/setup'
14
+
13
15
  GC.disable
14
16
 
15
17
  # commented out by default (makes tests slower)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: playa
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
  - Gavin Laking
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-27 00:00:00.000000000 Z
11
+ date: 2014-08-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -80,6 +80,20 @@ dependencies:
80
80
  - - '='
81
81
  - !ruby/object:Gem::Version
82
82
  version: 1.0.5
83
+ - !ruby/object:Gem::Dependency
84
+ name: mocha
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '='
88
+ - !ruby/object:Gem::Version
89
+ version: 1.1.0
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '='
95
+ - !ruby/object:Gem::Version
96
+ version: 1.1.0
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: pry
85
99
  requirement: !ruby/object:Gem::Requirement
@@ -156,14 +170,14 @@ dependencies:
156
170
  requirements:
157
171
  - - '='
158
172
  - !ruby/object:Gem::Version
159
- version: 0.1.0
173
+ version: 0.1.2
160
174
  type: :runtime
161
175
  prerelease: false
162
176
  version_requirements: !ruby/object:Gem::Requirement
163
177
  requirements:
164
178
  - - '='
165
179
  - !ruby/object:Gem::Version
166
- version: 0.1.0
180
+ version: 0.1.2
167
181
  description: An example app using Vedeu.
168
182
  email:
169
183
  - gavinlaking@gmail.com
@@ -184,9 +198,14 @@ files:
184
198
  - lib/playa.rb
185
199
  - lib/playa/controller.rb
186
200
  - lib/playa/player.rb
201
+ - lib/playa/playlist_view.rb
202
+ - lib/playa/progress_view.rb
203
+ - lib/playa/status_view.rb
187
204
  - lib/playa/track.rb
188
205
  - lib/playa/track_collection.rb
189
206
  - lib/playa/view.rb
207
+ - lib/playa/views/playlist.erb
208
+ - lib/playa/views/status.erb
190
209
  - playa.gemspec
191
210
  - test/lib/playa/controller_test.rb
192
211
  - test/lib/playa/player_test.rb