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 +4 -4
- data/lib/playa.rb +22 -1
- data/lib/playa/controller.rb +18 -3
- data/lib/playa/player.rb +14 -0
- data/lib/playa/playlist_view.rb +19 -0
- data/lib/playa/progress_view.rb +23 -0
- data/lib/playa/status_view.rb +19 -0
- data/lib/playa/view.rb +10 -10
- data/lib/playa/views/playlist.erb +0 -0
- data/lib/playa/views/status.erb +3 -0
- data/playa.gemspec +3 -2
- data/test/lib/playa/player_test.rb +60 -0
- data/test/test_helper.rb +2 -0
- metadata +23 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d88b2e0a2af60ed003e3ca5bc18d95d406be0533
|
4
|
+
data.tar.gz: 093d9cc23a42dd2cca5f70c2aa539f16780099e6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
|
data/lib/playa/controller.rb
CHANGED
@@ -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
|
-
|
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
|
-
@
|
37
|
-
@
|
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(
|
4
|
-
new(
|
3
|
+
def self.render(object = nil)
|
4
|
+
new(object).render
|
5
5
|
end
|
6
6
|
|
7
|
-
def initialize(
|
8
|
-
@
|
7
|
+
def initialize(object = nil)
|
8
|
+
@object = object
|
9
9
|
end
|
10
10
|
|
11
11
|
def render
|
12
|
-
Vedeu::
|
12
|
+
Vedeu::View.render(type, output)
|
13
13
|
end
|
14
14
|
|
15
15
|
private
|
16
16
|
|
17
|
-
attr_reader :
|
17
|
+
attr_reader :object
|
18
18
|
|
19
|
-
def
|
20
|
-
|
19
|
+
def output
|
20
|
+
fail NotImplemented, 'Implement #output on your subclass of Playa::View.'
|
21
21
|
end
|
22
22
|
|
23
|
-
def
|
24
|
-
'
|
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
|
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.
|
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.
|
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
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.
|
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-
|
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.
|
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.
|
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
|