mpc 0.8 → 0.9

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.
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in mpc.gemspec
4
+ gemspec
@@ -0,0 +1,13 @@
1
+ require "bundler"
2
+ require "rake/testtask"
3
+ Bundler::GemHelper.install_tasks
4
+
5
+ task :default => :test
6
+
7
+ desc "Test the library"
8
+ Rake::TestTask.new(:test) do |t|
9
+ t.libs << "lib"
10
+ t.libs << "test"
11
+ t.pattern = "test/**/*_test.rb"
12
+ t.verbose = true
13
+ end
data/lib/mpc.rb CHANGED
@@ -1,226 +1,125 @@
1
+ require "socket"
1
2
  class Mpc
3
+
2
4
  @@regexps = {
3
- "ACK" => /\AACK \[(\d+)\@(\d+)\] \{(.*)\} (.+)\Z/,
4
- "OK" => /\AOK\n\Z/,
5
- "FILE" => /\Afile\:(.*)\Z/,
5
+ "ACK" => /\AACK \[(\d+)\@(\d+)\] \{(.*)\} (.+)\Z/,
6
+ "OK" => /\AOK\n\Z/,
7
+ "FILE" => /\Afile\:(.*)\Z/,
8
+ "CONNECT" => /\AOK MPD (\d+)\.(\d+).(\d+)\n\Z/
6
9
  }
7
10
 
11
+ attr_accessor :host, :port
8
12
  def initialize(host = "127.0.0.1", port = 6600)
9
- @socket = TCPSocket.new(host, port)
13
+ @host = host
14
+ @port = port
15
+ end
16
+
17
+ def connect
18
+ @socket = socket
10
19
  @socket.gets
11
20
  end
12
21
 
13
- def play(song = nil)
14
- song.nil? ? command = "play" : command = "play #{song.to_s}"
15
- puts(command)
22
+ def disconnect
23
+ @socket.close
24
+ @socket = nil
16
25
  end
17
26
 
18
- def pause
19
- puts("pause 1")
27
+ def play
28
+ send_command "play"
20
29
  end
21
30
 
22
- def paused?
23
- status_hash = status
24
- status_hash[:state] == "pause"
31
+ def playing?
32
+ status[:state] == "play"
25
33
  end
26
34
 
27
35
  def stop
28
- puts("stop")
36
+ send_command "stop"
29
37
  end
30
38
 
31
39
  def stopped?
32
- status_hash = status
33
- status_hash[:state] == "stop"
40
+ status[:state] == "stop"
41
+ end
42
+
43
+ def pause
44
+ send_command "pause 1"
45
+ end
46
+
47
+ def paused?
48
+ status[:state] == "pause"
34
49
  end
35
50
 
36
51
  def next
37
- puts("next")
52
+ send_command "next"
38
53
  end
39
54
 
40
55
  def previous
41
- puts("previous")
56
+ send_command "previous"
42
57
  end
43
58
 
44
59
  def random(state = nil)
45
- if state.nil?
46
- random? ? random_state = 0 : random_state = 1
47
- else
48
- random_state = state
49
- end
50
- puts("random #{random_state}")
60
+ state ||= bool_to_int(!random?)
61
+ send_command "random #{state}"
51
62
  end
52
63
 
53
64
  def random?
54
- status_hash = status
55
- status_hash[:random] == "1"
65
+ status[:random] == "1"
56
66
  end
57
67
 
58
68
  def repeat(state = nil)
59
- if state.nil?
60
- repeat? ? repeat_state = 0 : repeat_state = 1
61
- else
62
- repeat_state = state
63
- end
64
- puts("repeat #{repeat_state}")
69
+ state ||= bool_to_int(!repeat?)
70
+ send_command "repeat #{state}"
65
71
  end
66
72
 
67
73
  def repeat?
68
- status_hash = status
69
- status_hash[:repeat] == "1"
74
+ status[:repeat] == "1"
70
75
  end
71
76
 
72
- def set_volume(volume)
73
- begin
74
- unless (0..100).include?(volume)
75
- raise Exception.new("Volume should be between 0 (minimum) and 100 (maximum)")
76
- end
77
- puts("setvol #{volume.to_s}")
78
- end
77
+ def volume(level = nil)
78
+ set_volume(level) if level
79
+ get_volume
79
80
  end
80
81
 
81
- def volume
82
- status_hash = status
83
- status_hash[:volume]
84
- end
85
-
86
- def volume_up
87
- set_volume(volume.to_i + 20)
88
- end
89
-
90
- def volume_down
91
- set_volume(volume.to_i - 20)
92
- end
93
-
94
- def seek(time, song = nil)
95
- if song.nil?
96
- song = current_song[:pos]
82
+ def volume_up
83
+ set_volume(volume.to_i + 20)
97
84
  end
98
- puts("seek #{song.to_s} #{time.to_s}")
99
- end
100
85
 
101
- def find(type, what = "")
102
- unless type.match(/\A(title|artist|album|filename)\Z/)
103
- raise Exception.new("Wrong type: #{type}")
86
+ def volume_down
87
+ set_volume(volume.to_i - 20)
104
88
  end
105
- if what == ""
106
- raise Exception.new(" \"What\" can\"t be an empty string")
107
- end
108
- parse_song_list(puts("search #{type} #{what}"))
109
- end
110
-
111
- def current_playlist_songs
112
- parse_song_list(puts("playlistid"))
113
- end
114
-
115
- def list_all_songs
116
- parse_song_list(puts("listallinfo"))
117
- end
118
-
119
- def current_song
120
- parse_song_list(puts("currentsong")).first
121
- end
122
-
123
- def stats
124
- to_hash(puts("stats"))
125
- end
126
89
 
127
- def ping
128
- unless status[:state] == "stop"
129
- output = {:song_time=>current_song[:time],:time=>status[:time].split(":").first,:artist=>current_song[:artist],:title=>current_song[:title],:file=>current_song[:file],:album=>current_song[:album],:id=>current_song[:id]}
130
- else
131
- output = {:song_time=>0,:time=>0,:artist=>nil,:title=>nil,:file=>nil,:album=>nil,:id=>nil}
132
- end
133
- end
90
+ private
134
91
 
135
- def list_playlists
136
- output = Array.new
137
- puts("listplaylists").each do |line|
138
- if line.match(/\Aplaylist\:(.*)\n\Z/)
139
- output << to_hash(line)
140
- end
141
- end
142
- output
143
- end
144
-
145
- def list_playlist_info(name)
146
- parse_song_list(puts("listplaylistinfo #{name}"))
147
- end
148
-
149
- def add_to_playlist(uri, name = nil)
150
- if name.nil?
151
- puts("add \"#{uri}\"")
152
- else
153
- puts("playlistadd \"#{name}\" \"#{uri}\"")
154
- end
155
- end
156
-
157
- def rename_playlist(original_name, name)
158
- puts("rename \"#{original_name}\" \"#{name}\"")
159
- end
160
-
161
- def create_playlist(name)
162
- puts("save \"#{name}\"")
163
- end
164
-
165
- def destroy_playlist(name)
166
- puts("rm \"#{name}\"")
167
- end
168
-
169
- def clear!(name = nil)
170
- if name.nil?
171
- puts("clear")
172
- else
173
- puts("playlistclear \"#{name}\"")
174
- end
175
- end
176
-
177
- def get_paths
178
- song_list(puts("listall"))
179
- end
92
+ def get_volume
93
+ status[:volume]
94
+ end
180
95
 
181
- def list_library
182
- root = Tree::TreeNode.new("/")
183
- # root = Hash.new
184
- get_paths.each do |path|
185
- segments = path.split("/")
186
- if root[segments.first].nil?
187
- root << Tree::TreeNode.new(segments.first,segments.first)
188
- # root[segments.first] = {}
189
- end
190
- last_element = root[segments.first]
191
- first_element = segments.delete_at(0)
192
- segments.each_with_index do |element, index|
193
- if last_element[element].nil?
194
- last_element << Tree::TreeNode.new(element, first_element + "/" + segments[0...index+1].join("/") )
195
- # last_element[element] = {}
196
- end
197
- last_element = last_element[element]
198
- end
199
- end
200
- root
201
- end
96
+ def set_volume(level)
97
+ level = 0 if level < 0
98
+ level = 100 if level > 100
99
+ send_command "setvol #{level.to_s}"
100
+ end
202
101
 
203
- def delete_song(song)
204
- puts("delete #{song.to_s}")
205
- end
102
+ def socket
103
+ TCPSocket.new(@host, @port)
104
+ end
206
105
 
207
- def move_song(from, to)
208
- puts("move #{from.to_s} #{to.to_s}")
209
- end
210
- private
106
+ def gets_from_socket
107
+ @socket.gets
108
+ end
211
109
 
212
- def puts(command)
110
+ def send_command(command)
111
+ raise StandardError unless @socket
213
112
  @socket.puts(command)
214
- gets
113
+ get_response
215
114
  end
216
115
 
217
- def gets
116
+ def get_response
218
117
  response = ""
219
- while line = @socket.gets do
118
+ while line = gets_from_socket do
220
119
  if @@regexps["OK"].match(line)
221
120
  return response
222
121
  elsif error = @@regexps["ACK"].match(line)
223
- raise Exception.new(line)
122
+ raise ArgumentError.new(line)
224
123
  else
225
124
  response << line
226
125
  end
@@ -228,45 +127,20 @@ class Mpc
228
127
  response
229
128
  end
230
129
 
231
- def status
232
- output = puts("status")
233
- to_hash(output)
234
- end
235
-
236
130
  def to_hash(string)
237
- status_hash = Hash.new
238
- string.each do |line|
239
- key, value = line.chomp.split(": ", 2)
240
- status_hash[key.downcase.to_sym] = value
241
- end
242
- status_hash
243
- end
244
-
245
- def parse_song_list(song_list)
246
- output = Array.new
247
- song_hash = Hash.new
248
- song_list.each do |song|
249
- if song.match(@@regexps["FILE"])
250
- output << song_hash
251
- song_hash = Hash.new
252
- end
253
- song_hash.merge!(to_hash(song))
131
+ output = Hash.new
132
+ string.each_line do |line|
133
+ key, value = line.chomp.split(": ", 2)
134
+ output[key.to_sym] = value
254
135
  end
255
- output << song_hash
256
- output.delete_at(0)
257
136
  output
258
137
  end
259
138
 
260
- def song_list(list)
261
- output = Array.new
262
- list.each do |song|
263
- if song.match(@@regexps["FILE"])
264
- output << song.split(": ",2).second.gsub!("\n","")
265
- end
266
- end
267
- output
139
+ def status
140
+ to_hash(send_command("status"))
268
141
  end
269
142
 
270
- class Exception < StandardError
143
+ def bool_to_int(bool)
144
+ bool == true ? 1 : 0
271
145
  end
272
- end
146
+ end
@@ -0,0 +1,3 @@
1
+ module Mpc
2
+ VERSION = "0.9"
3
+ end
@@ -0,0 +1,25 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "mpc/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "mpc"
7
+ s.version = Mpc::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Michał Krzyżanowski"]
10
+ s.email = ["michal.krzyzanowski+github@gmail.com"]
11
+ s.homepage = ""
12
+ s.summary = %q{MPD client}
13
+ s.description = %q{Ruby MPD client}
14
+
15
+ s.rubyforge_project = "mpc"
16
+
17
+ s.add_dependency("rubytree")
18
+
19
+ s.add_development_dependency("mocha")
20
+
21
+ s.files = `git ls-files`.split("\n")
22
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
23
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
24
+ s.require_paths = ["lib"]
25
+ end
@@ -1,189 +1,35 @@
1
- require "rubygems"
2
- require "mocha"
1
+ require "test_helper"
3
2
 
4
- gem "test-unit"
3
+ class MpcTest < MiniTest::Unit::TestCase
5
4
 
6
- require "test/unit"
7
- require "lib/mpc"
8
- require "tree"
9
-
10
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
11
- $LOAD_PATH.unshift(File.dirname(__FILE__))
12
-
13
- class MpcTest < Test::Unit::TestCase
14
-
15
5
  def setup
6
+ @socket_mock = stub("TCPSocket", :puts => nil, :gets => nil, :close => nil)
16
7
  @mpc = Mpc.new
17
- TCPSocket.any_instance.stubs(:puts).returns(nil)
18
- end
19
-
20
- test "gets raises an exception on ACK response" do
21
- TCPSocket.any_instance.stubs(:gets).returns("ACK [5@0] {} unknown command \"asd\"\n")
22
- assert_raise(Mpc::Exception) do
23
- @mpc.send(:puts,'asd')
24
- end
25
- end
26
-
27
- test "gets outputs empty string on OK response " do
28
- TCPSocket.any_instance.stubs(:gets).returns("OK\n")
29
- assert_equal("",@mpc.stop )
30
- end
31
-
32
- test "status outputs propper hash" do
33
- @mpc.stubs(:gets).returns("volume: -1\nrepeat: 0\nrandom: 0\nsingle: 0\nconsume: 0\nplaylist: 43\nplaylistlength: 41\nxfade: 0\nstate: stop\nsong: 17\nsongid: 17\nnextsong: 18\nnextsongid: 18\n")
34
- assert_equal({:songid=>"17", :state=>"stop", :single=>"0", :volume=>"-1", :nextsong=>"18", :consume=>"0", :nextsongid=>"18", :playlist=>"43", :repeat=>"0", :song=>"17", :playlistlength=>"41", :random=>"0", :xfade=>"0"},@mpc.send(:status) )
35
- end
36
-
37
- test "random without state should send request with opposite value" do
38
- @mpc.stubs(:status).returns({:songid=>"17", :state=>"stop", :single=>"0", :volume=>"-1", :nextsong=>"18", :consume=>"0", :nextsongid=>"18", :playlist=>"43", :repeat=>"0", :song=>"17", :playlistlength=>"41", :random=>"0", :xfade=>"0"})
39
- @mpc.expects(:puts).with('random 1')
40
- @mpc.random
41
- end
42
-
43
- test "random with state should send request with given value" do
44
- @mpc.stubs(:status).returns({:songid=>"17", :state=>"stop", :single=>"0", :volume=>"-1", :nextsong=>"18", :consume=>"0", :nextsongid=>"18", :playlist=>"43", :repeat=>"0", :song=>"17", :playlistlength=>"41", :random=>"0", :xfade=>"0"})
45
- @mpc.expects(:puts).with('random 0')
46
- @mpc.random(0)
47
- end
48
-
49
- test "repeat without state should send request with opposite value" do
50
- @mpc.stubs(:status).returns({:songid=>"17", :state=>"stop", :single=>"0", :volume=>"-1", :nextsong=>"18", :consume=>"0", :nextsongid=>"18", :playlist=>"43", :repeat=>"0", :song=>"17", :playlistlength=>"41", :random=>"0", :xfade=>"0"})
51
- @mpc.expects(:puts).with('repeat 1')
52
- @mpc.repeat
53
- end
54
-
55
- test "repeat with state should send request with given value" do
56
- @mpc.stubs(:status).returns({:songid=>"17", :state=>"stop", :single=>"0", :volume=>"-1", :nextsong=>"18", :consume=>"0", :nextsongid=>"18", :playlist=>"43", :repeat=>"0", :song=>"17", :playlistlength=>"41", :random=>"0", :xfade=>"0"})
57
- @mpc.expects(:puts).with('repeat 0')
58
- @mpc.repeat(0)
59
- end
60
-
61
- test "set_volume with volume in propper range should not raise exception" do
62
- @mpc.expects(:puts).with('setvol 100')
63
- @mpc.set_volume(100)
64
- end
65
-
66
- test "setvol with volume out of range should raise exception" do
67
- assert_raise(Mpc::Exception) do
68
- @mpc.set_volume(200)
69
- end
70
- end
71
-
72
- test "seek without song_position seeks current song" do
73
- @mpc.stubs(:current_song).returns({:date=>"2008", :track=>"4", :album=>"One Kind Favor", :genre=>"Blues", :time=>"190", :file=>"Kuba's Music/B.B. King - One Kind Favor/04. B.B. King - How Many More Years.mp3", :pos=>"3", :title=>"How Many More Years", :id=>"3", :albumartist=>"B.B. King", :artist=>"B.B. King"})
74
- @mpc.expects(:puts).with('seek 3 130')
75
- @mpc.seek(130)
76
- end
77
-
78
- test "seek with song_position seeks given song" do
79
- @mpc.stubs(:current_song).returns({:date=>"2008", :track=>"4", :album=>"One Kind Favor", :genre=>"Blues", :time=>"190", :file=>"Kuba's Music/B.B. King - One Kind Favor/04. B.B. King - How Many More Years.mp3", :pos=>"3", :title=>"How Many More Years", :id=>"3", :albumartist=>"B.B. King", :artist=>"B.B. King"})
80
- @mpc.expects(:puts).with('seek 11 20')
81
- @mpc.seek(20,11)
82
- end
83
-
84
- test "find with wrong type should raise exception" do
85
- assert_raise(Mpc::Exception) do
86
- @mpc.find('wrong_type')
87
- end
88
- end
89
-
90
- test "find with correct type but with empty string should raise exception" do
91
- assert_raise(Mpc::Exception) do
92
- @mpc.find('artist',"")
93
- end
94
- end
95
-
96
- test "find with correct type and with string should return hash with songs" do
97
-
8
+ @mpc.stubs(:socket).returns(@socket_mock)
9
+ @mpc.connect
98
10
  end
99
11
 
100
- test "list_library should return tree" do
101
- @mpc.stubs(:get_paths).returns(["Abra Dab/Miasto Jest Nasze/ABRADAB - Bezposrednio.mp3",
102
- "Abra Dab/Miasto Jest Nasze/miasto jest nasze (3).mp3",
103
- "iTunes/iTunes Music/02. Aaliyah/Romeo must die/06 Are You Feelin Me.mp3",
104
- "iTunes/iTunes Music/07. Dave Bing ft. Lil' Mo/Romeo must die/12 Someone Gonna Die Tonight.mp3"])
105
- @root = Tree::TreeNode.new('/')
106
- @first_node = Tree::TreeNode.new('Abra Dab')
107
-
108
- @folder = Tree::TreeNode.new('Miasto Jest Nasze')
109
- @folder << Tree::TreeNode.new('ABRADAB - Bezposrednio.mp3')
110
- @folder << Tree::TreeNode.new('miasto jest nasze (3).mp3')
111
-
112
- @first_node << @folder
113
- @root << @first_node
114
-
115
- @second_node = Tree::TreeNode.new('iTunes')
116
- @folder = Tree::TreeNode.new('iTunes Music')
117
- @first_subfolder = Tree::TreeNode.new('02. Aaliyah')
118
- @element = Tree::TreeNode.new('Romeo must die')
119
- @mp3 = Tree::TreeNode.new('06 Are You Feelin Me.mp3')
120
- @element << @mp3
121
- @first_subfolder << @element
122
- @second_subfolder = Tree::TreeNode.new("07. Dave Bing ft Lil' Mo")
123
- @element = Tree::TreeNode.new('Romeo must die')
124
- @mp3 = Tree::TreeNode.new('12 Someone Gonna Die Tonight.mp3')
125
- @element << @mp3
126
- @second_subfolder << @element
127
-
128
- @folder << @first_subfolder
129
- @folder << @second_subfolder
130
- @second_node << @folder
131
- @root << @second_node
132
-
133
- assert_equal(@root.to_s,@mpc.list_library.to_s)
12
+ def test_library_raises_error_if_there_is_no_connection
13
+ @mpc.disconnect
14
+ assert_raises(StandardError){
15
+ @mpc.play
16
+ }
134
17
  end
135
18
 
136
- test "move_song should send move command" do
137
- @mpc.expects(:puts).with("move 1 3")
138
- @mpc.move_song(1,3)
19
+ def test_gets_raises_an_exception_on_ACK_response
20
+ @mpc.stubs(:gets_from_socket).returns("ACK [5@0] {} unknown command \"asd\"\n")
21
+ assert_raises(ArgumentError){
22
+ @mpc.send(:send_command, "asd")
23
+ }
139
24
  end
140
25
 
141
- test "list_playlists should return array with playlists" do
142
- @mpc.stubs(:puts).returns("playlist: asd\nLast-Modified: 2010-08-02T08:39:28Z\nplaylist: foo\nLast-Modified: 2010-08-11T07:35:43Z\nplaylist: nowa\nLast-Modified: 2010-08-02T07:39:52Z\n")
143
- expected_output = Array.new
144
- expected_output << {:playlist => "asd"}
145
- expected_output << {:playlist => "foo"}
146
- expected_output << {:playlist => "nowa"}
147
- assert_equal(expected_output,@mpc.list_playlists)
26
+ def test_gets_outputs_empty_string_on_OK_response
27
+ @mpc.stubs(:gets_from_socket).returns("OK\n")
28
+ assert_equal("", @mpc.stop )
148
29
  end
149
30
 
150
- test "ping method should return hash with informations about song" do
151
- @mpc.stubs(:current_song).returns({
152
- :date=> "2001",
153
- :id=> "23",
154
- :title=> "ToNieMy",
155
- :file=> "Paktofonika - Kinematografia/ToNieMy.mp3",
156
- :time=> "227",
157
- :album=> "Kinematografia",
158
- :track=> "6",
159
- :pos=> "5",
160
- :genre=> "Hip-Hop",
161
- :artist=> "Paktofonika"} )
162
- @mpc.stubs(:status).returns({
163
- :bitrate=> "128",
164
- :song=> "5",
165
- :volume=> "-1",
166
- :audio=> "44100:24:2",
167
- :consume=> "0",
168
- :repeat=> "0",
169
- :nextsong=> "6",
170
- :time=> "102:227",
171
- :playlist=> "54",
172
- :state=> "play",
173
- :playlistlength=> "23",
174
- :nextsongid=> "24",
175
- :xfade=> "0",
176
- :random=> "0",
177
- :songid=> "23",
178
- :single=> "0"})
179
- expected_output = {
180
- :title=>"ToNieMy",
181
- :file=>"Paktofonika - Kinematografia/ToNieMy.mp3",
182
- :artist=>"Paktofonika",
183
- :album=>"Kinematografia",
184
- :song_time=>"227",
185
- :id=>"23",
186
- :time=>"102"}
187
- assert_equal(expected_output,@mpc.ping)
31
+ def test_status_outputs_propper_hash
32
+ @mpc.stubs(:get_response).returns("volume: -1\nrepeat: 0\nrandom: 0\nsingle: 0\nconsume: 0\nplaylist: 43\nplaylistlength: 41\nxfade: 0\nstate: stop\nsong: 17\nsongid: 17\nnextsong: 18\nnextsongid: 18\n")
33
+ assert_equal({:songid=>"17", :state=>"stop", :single=>"0", :volume=>"-1", :nextsong=>"18", :consume=>"0", :nextsongid=>"18", :playlist=>"43", :repeat=>"0", :song=>"17", :playlistlength=>"41", :random=>"0", :xfade=>"0"}, @mpc.send(:status) )
188
34
  end
189
35
  end
@@ -0,0 +1,4 @@
1
+ require "minitest/unit"
2
+ require "minitest/autorun"
3
+ require "mocha"
4
+ require "mpc"
metadata CHANGED
@@ -1,12 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mpc
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 8
9
- version: "0.8"
4
+ prerelease:
5
+ version: "0.9"
10
6
  platform: ruby
11
7
  authors:
12
8
  - "Micha\xC5\x82 Krzy\xC5\xBCanowski"
@@ -14,7 +10,7 @@ autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
12
 
17
- date: 2010-08-12 00:00:00 +02:00
13
+ date: 2011-08-04 00:00:00 +02:00
18
14
  default_executable:
19
15
  dependencies:
20
16
  - !ruby/object:Gem::Dependency
@@ -25,14 +21,23 @@ dependencies:
25
21
  requirements:
26
22
  - - ">="
27
23
  - !ruby/object:Gem::Version
28
- hash: 3
29
- segments:
30
- - 0
31
24
  version: "0"
32
25
  type: :runtime
33
26
  version_requirements: *id001
34
- description: Ruby MPD client gem
35
- email: michal.krzyzanowski+mpc@gmail.com
27
+ - !ruby/object:Gem::Dependency
28
+ name: mocha
29
+ prerelease: false
30
+ requirement: &id002 !ruby/object:Gem::Requirement
31
+ none: false
32
+ requirements:
33
+ - - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: "0"
36
+ type: :development
37
+ version_requirements: *id002
38
+ description: Ruby MPD client
39
+ email:
40
+ - michal.krzyzanowski+github@gmail.com
36
41
  executables: []
37
42
 
38
43
  extensions: []
@@ -40,10 +45,16 @@ extensions: []
40
45
  extra_rdoc_files: []
41
46
 
42
47
  files:
48
+ - .gitignore
49
+ - Gemfile
50
+ - Rakefile
43
51
  - lib/mpc.rb
52
+ - lib/mpc/version.rb
53
+ - mpc.gemspec
44
54
  - test/mpc_test.rb
55
+ - test/test_helper.rb
45
56
  has_rdoc: true
46
- homepage:
57
+ homepage: ""
47
58
  licenses: []
48
59
 
49
60
  post_install_message:
@@ -56,25 +67,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
56
67
  requirements:
57
68
  - - ">="
58
69
  - !ruby/object:Gem::Version
59
- hash: 3
60
- segments:
61
- - 0
62
70
  version: "0"
63
71
  required_rubygems_version: !ruby/object:Gem::Requirement
64
72
  none: false
65
73
  requirements:
66
74
  - - ">="
67
75
  - !ruby/object:Gem::Version
68
- hash: 3
69
- segments:
70
- - 0
71
76
  version: "0"
72
77
  requirements: []
73
78
 
74
- rubyforge_project:
75
- rubygems_version: 1.3.7
79
+ rubyforge_project: mpc
80
+ rubygems_version: 1.5.0
76
81
  signing_key:
77
82
  specification_version: 3
78
- summary: MPD client gem
83
+ summary: MPD client
79
84
  test_files:
80
85
  - test/mpc_test.rb
86
+ - test/test_helper.rb