ruby-mpd 0.1.8 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +1 -4
- data/lib/ruby-mpd/parser.rb +7 -2
- data/lib/ruby-mpd/playlist.rb +1 -1
- data/lib/ruby-mpd/song.rb +6 -2
- data/ruby-mpd.gemspec +1 -1
- metadata +2 -2
data/README.rdoc
CHANGED
@@ -266,7 +266,4 @@ for a controlled environment needs to be written.
|
|
266
266
|
|
267
267
|
* MPD::Song, MPD::Directory.
|
268
268
|
* Make stickers a mixin for Playlist, Song, Directory...
|
269
|
-
* Namespace queue
|
270
|
-
* Make parsing per-command (because playlist is an integer in the :status command and
|
271
|
-
a string in :listplaylists, and :time is an array in status and integer in songs)
|
272
|
-
* Per command parsing should also skip :directory and :playlist keys inside #songs command.
|
269
|
+
* Namespace queue
|
data/lib/ruby-mpd/parser.rb
CHANGED
@@ -2,6 +2,12 @@ require 'time' # required for Time.iso8601
|
|
2
2
|
|
3
3
|
class MPD
|
4
4
|
# Parser module, being able to parse messages to and from the MPD daemon format.
|
5
|
+
# @todo There are several parser hacks. Time is an array in status and a normal
|
6
|
+
# string in MPD::Song, so we do`@time = options.delete(:time) { [nil] }.first`
|
7
|
+
# to hack the array return. Playlist names are strings, whilst in status it's
|
8
|
+
# and int, so we parse it as an int if it's parsed as non-zero (if it's 0 it's a string)
|
9
|
+
# and to fix numeric name playlists (123.m3u), we convert the name to_s inside
|
10
|
+
# MPD::Playlist too.
|
5
11
|
module Parser
|
6
12
|
private
|
7
13
|
|
@@ -46,7 +52,7 @@ class MPD
|
|
46
52
|
:decoders, :listplaylistinfo]
|
47
53
|
|
48
54
|
# Parses key-value pairs into correct class.
|
49
|
-
def parse_key
|
55
|
+
def parse_key(key, value)
|
50
56
|
if INT_KEYS.include? key
|
51
57
|
value.to_i
|
52
58
|
elsif FLOAT_KEYS.include? key
|
@@ -58,7 +64,6 @@ class MPD
|
|
58
64
|
elsif key == :playlist && !value.to_i.zero?
|
59
65
|
# doc states it's an unsigned int, meaning if we get 0,
|
60
66
|
# then it's a name string.
|
61
|
-
# @todo HAXX! what if playlist name is '123'?
|
62
67
|
value.to_i
|
63
68
|
elsif key == :db_update
|
64
69
|
Time.at(value.to_i)
|
data/lib/ruby-mpd/playlist.rb
CHANGED
@@ -14,7 +14,7 @@ class MPD
|
|
14
14
|
attr_accessor :name
|
15
15
|
|
16
16
|
def initialize(mpd, options)
|
17
|
-
@name = options.is_a?(Hash) ? options[:playlist] : options.to_s
|
17
|
+
@name = options.is_a?(Hash) ? options[:playlist].to_s : options.to_s # convert to_s in case the parser converted to int
|
18
18
|
@mpd = mpd
|
19
19
|
#@last_modified = options[:'last-modified']
|
20
20
|
end
|
data/lib/ruby-mpd/song.rb
CHANGED
@@ -9,7 +9,7 @@ class MPD::Song
|
|
9
9
|
|
10
10
|
def initialize(options)
|
11
11
|
@data = {} # allowed fields are @types + :file
|
12
|
-
@time = options.delete(:time).first #HAXX for array return
|
12
|
+
@time = options.delete(:time) { [nil] }.first #HAXX for array return
|
13
13
|
@file = options.delete(:file)
|
14
14
|
@title = options.delete(:title)
|
15
15
|
@artist = options.delete(:artist)
|
@@ -25,7 +25,11 @@ class MPD::Song
|
|
25
25
|
|
26
26
|
# @return [String] A formatted representation of the song length ("1:02")
|
27
27
|
def length
|
28
|
-
|
28
|
+
if @time.nil?
|
29
|
+
'--:--'
|
30
|
+
else
|
31
|
+
"#{(@time / 60)}:#{"%02d" % (@time % 60)}"
|
32
|
+
end
|
29
33
|
end
|
30
34
|
|
31
35
|
# Pass any unknown calls over to the data hash.
|
data/ruby-mpd.gemspec
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-mpd
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-01-
|
12
|
+
date: 2013-01-29 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: A powerful, modern and feature complete library for the Music Player
|
15
15
|
Daemon.
|