hallon 0.10.1 → 0.11.0

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.
data/.travis.yml CHANGED
@@ -1,4 +1,3 @@
1
1
  rvm:
2
2
  - 1.9.2
3
3
  - 1.9.3
4
-
data/CHANGELOG CHANGED
@@ -1,7 +1,20 @@
1
1
  Hallon’s Changelog
2
2
  ==================
3
3
 
4
- v10.0.0
4
+ v0.11.0
5
+ ------------------
6
+ [ Added ]
7
+ - Playlist#can_move?
8
+ - Base.from(pointer)
9
+
10
+ [ Changed ]
11
+ - Playlist#move no longer takes a dry_run parameter
12
+
13
+ [ Fixed ]
14
+ - Player#music_delivery callback ignoring consumed frames
15
+ - Session#wait_for minimum timeout time from 0 to 10 ms
16
+
17
+ v0.10.1 (actually v0.10.0)
5
18
  ------------------
6
19
  [ Added ]
7
20
  - Add PlaylistContainer::Folder#rename
data/Rakefile CHANGED
@@ -60,6 +60,7 @@ task 'spotify:coverage' do
60
60
  covered = Set.new(methods)
61
61
  warning = []
62
62
  ignored = [
63
+ 'attach_function', # spotify overloads this
63
64
  'session_release', # segfaults on libspotify <= 9
64
65
  'session_userdata', # wont support this
65
66
  'link_as_track', # using link_as_track_and_offset instead
@@ -82,7 +83,7 @@ task 'spotify:coverage' do
82
83
  # Direct calls
83
84
  handlers[Sexp.new(:const, :Spotify)] = Hash.new(proc do |_, meth, _|
84
85
  if auto_gc.include?("#{meth}!")
85
- warning << meth
86
+ warning << [$file, meth]
86
87
  end
87
88
 
88
89
  result = [meth]
@@ -102,6 +103,7 @@ task 'spotify:coverage' do
102
103
  # DSL Methods
103
104
  no_receiver = handlers[nil] = Hash.new(silencer)
104
105
  no_receiver[:from_link] = no_receiver[:to_link] = proc do |recv, meth, (_, name)|
106
+ next unless name.respond_to?(:value)
105
107
  prefix = meth == :to_link ? "link_create" : "link"
106
108
  method = "%s_%s" % [prefix, name.value]
107
109
  [method, "#{method}!"]
@@ -110,7 +112,8 @@ task 'spotify:coverage' do
110
112
  fails = {}
111
113
  FileList['lib/**/*.rb'].each do |file|
112
114
  begin
113
- ast = RubyParser.new.parse File.read(file)
115
+ $file = file
116
+ ast = Ruby19Parser.new.parse File.read(file)
114
117
  ast.each_of_type(:call) do |_, recv, meth, args, *rest|
115
118
  name = handlers[recv][meth].call(recv, meth, args)
116
119
  covered.subtract Array(name).map(&:to_s)
@@ -144,8 +147,8 @@ task 'spotify:coverage' do
144
147
 
145
148
  unless warning.empty?
146
149
  puts "Warnings (use auto-gc methods instead!):"
147
- warning.each do |method|
148
- puts " #{method}"
150
+ warning.each do |file, method|
151
+ puts " #{file}: #{method}"
149
152
  end
150
153
  puts
151
154
  end
data/lib/hallon/album.rb CHANGED
@@ -74,7 +74,7 @@ module Hallon
74
74
  # @return [Artist, nil] album artist.
75
75
  def artist
76
76
  artist = Spotify.album_artist!(pointer)
77
- Artist.new(artist) unless artist.null?
77
+ Artist.from(artist)
78
78
  end
79
79
 
80
80
  # Retrieves album cover art as an {Image} or a {Link}.
@@ -87,7 +87,7 @@ module Hallon
87
87
  Image.new cover.read_string(20) unless cover.null?
88
88
  else
89
89
  cover = Spotify.link_create_from_album_cover!(pointer)
90
- Link.new cover unless cover.null?
90
+ Link.from(cover)
91
91
  end
92
92
  end
93
93
 
@@ -47,13 +47,13 @@ module Hallon
47
47
  # @return [Artist, nil] artist performing this album.
48
48
  def artist
49
49
  artist = Spotify.albumbrowse_artist!(pointer)
50
- Artist.new(artist) unless artist.null?
50
+ Artist.from(artist)
51
51
  end
52
52
 
53
53
  # @return [Album, nil] album this object is browsing.
54
54
  def album
55
55
  album = Spotify.albumbrowse_album!(pointer)
56
- Album.new(album) unless album.null?
56
+ Album.from(album)
57
57
  end
58
58
 
59
59
  # @note If the object is not loaded, the result is undefined.
data/lib/hallon/artist.rb CHANGED
@@ -52,7 +52,7 @@ module Hallon
52
52
  Image.new portrait.read_bytes(20) unless portrait.null?
53
53
  else
54
54
  portrait = Spotify.link_create_from_artist_portrait!(pointer)
55
- Link.new portrait unless portrait.null?
55
+ Link.from(portrait)
56
56
  end
57
57
  end
58
58
 
@@ -46,7 +46,7 @@ module Hallon
46
46
  # @return [Artist, nil] artist this browser is browsing.
47
47
  def artist
48
48
  artist = Spotify.artistbrowse_artist!(pointer)
49
- Artist.new(artist) unless artist.null?
49
+ Artist.from(artist)
50
50
  end
51
51
 
52
52
  # @return [String] artist biography.
data/lib/hallon/base.rb CHANGED
@@ -3,6 +3,12 @@ module Hallon
3
3
  # All objects in Hallon are mere representations of Spotify objects.
4
4
  # Hallon::Base covers basic functionality shared by all of these.
5
5
  class Base
6
+ # @param [#null?] pointer
7
+ # @return [self, nil] a new instance of self, unless given pointer is #null?
8
+ def self.from(pointer, *args, &block)
9
+ new(pointer, *args, &block) unless pointer.null?
10
+ end
11
+
6
12
  # Underlying FFI pointer.
7
13
  #
8
14
  # @return [FFI::Pointer]
@@ -13,9 +19,11 @@ module Hallon
13
19
  # @param [Object] other
14
20
  # @return [Boolean]
15
21
  def ==(other)
16
- pointer == other.pointer
17
- rescue NoMethodError
18
- super
22
+ if other.respond_to?(:pointer)
23
+ pointer == other.pointer
24
+ else
25
+ super
26
+ end
19
27
  end
20
28
 
21
29
  # Default string representation of self.
@@ -74,7 +82,7 @@ module Hallon
74
82
  end
75
83
 
76
84
  if pointer.nil? or pointer.null?
77
- raise ArgumentError, "#{resource.inspect} is not a valid spotify #{type} URI or pointer"
85
+ raise ArgumentError, "#{resource.inspect} could not be converted to a spotify #{type} pointer"
78
86
  elsif not Spotify::Pointer.typechecks?(pointer, type)
79
87
  raise TypeError, "“#{resource}” is of type #{resource.type}, #{type} expected"
80
88
  else
data/lib/hallon/image.rb CHANGED
@@ -24,7 +24,6 @@ module Hallon
24
24
  # image = Hallon::Image.new("3ad93423add99766e02d563605c6e76ed2b0e450")
25
25
  #
26
26
  # @param [String, Link, Spotify::Pointer] link link or image id
27
- # @param [Hallon::Session] session
28
27
  def initialize(link)
29
28
  if link.respond_to?(:=~) and link =~ %r~(?:image[:/]|\A)([a-fA-F0-9]{40})\z~
30
29
  link = to_id($1)
@@ -94,7 +94,7 @@ module Hallon
94
94
  def to_link(cmethod)
95
95
  define_method(:to_link) do |*args|
96
96
  link = Spotify.__send__(:"link_create_#{cmethod}!", pointer, *args)
97
- Link.new(link) unless link.null?
97
+ Link.from(link)
98
98
  end
99
99
  end
100
100
 
data/lib/hallon/player.rb CHANGED
@@ -69,7 +69,6 @@ module Hallon
69
69
 
70
70
  @session.on(:music_delivery) do |format, frames, num_frames|
71
71
  trigger(:music_delivery, format, frames, num_frames)
72
- num_frames # assume we consume all data
73
72
  end
74
73
  end
75
74
 
@@ -27,7 +27,7 @@ module Hallon
27
27
  @seen = Spotify.playlist_track_seen(playlist.pointer, index)
28
28
  @creator = begin
29
29
  creator = Spotify.playlist_track_creator!(playlist.pointer, index)
30
- User.new(creator) unless creator.null?
30
+ User.from(creator)
31
31
  end
32
32
  end
33
33
 
@@ -181,7 +181,7 @@ module Hallon
181
181
  # @return [User, nil]
182
182
  def owner
183
183
  user = Spotify.playlist_owner!(pointer)
184
- User.new(user) unless user.null?
184
+ User.from(user)
185
185
  end
186
186
 
187
187
  # @return [String]
@@ -253,7 +253,7 @@ module Hallon
253
253
  def tracks
254
254
  Enumerator.new(size) do |index|
255
255
  track = Spotify.playlist_track!(pointer, index)
256
- Playlist::Track.new(track, self, index) unless track.null?
256
+ Playlist::Track.from(track, self, index)
257
257
  end
258
258
  end
259
259
 
@@ -91,7 +91,7 @@ module Hallon
91
91
  # @return [User, nil] owner of the container (nil if unknown or no owner).
92
92
  def owner
93
93
  owner = Spotify.playlistcontainer_owner!(pointer)
94
- User.new(owner) unless owner.null?
94
+ User.from(owner)
95
95
  end
96
96
 
97
97
  # @return [Integer] number of playlists and folders in this container.
@@ -145,7 +145,7 @@ module Hallon
145
145
  Spotify.playlistcontainer_add_playlist!(pointer, link.pointer)
146
146
  end
147
147
 
148
- Playlist.new(playlist) unless playlist.null?
148
+ Playlist.from(playlist)
149
149
  end
150
150
 
151
151
  # Create a new folder with the given name at the end of the container.
@@ -193,27 +193,52 @@ module Hallon
193
193
 
194
194
  # Move a playlist or a folder.
195
195
  #
196
+ # @example an illustration of how contents are moved
197
+ # # given a container like this:
198
+ # # A, B, C, D
199
+ #
200
+ # container.move(0, 1)
201
+ # # => B, A, C, D
202
+ #
203
+ # container.move(0, 3)
204
+ # # => B, C, D, A
205
+ #
206
+ # container.move(3, 1)
207
+ # # => A, D, B, C
208
+ #
196
209
  # @note If moving a folder, only that end of the folder is moved. The folder
197
210
  # size will change!
198
- #
199
- # @param [Integer] from
200
- # @param [Integer] to
201
- # @param [Boolean] dry_run don’t really move anything (useful to check if it can be moved)
211
+ # @param [Integer] from index to move from
212
+ # @param [Integer] to index the item will end up at
202
213
  # @return [Playlist, Folder] the entity that was moved
203
214
  # @raise [Error] if the operation failed
204
- def move(from, to, dry_run = false)
205
- error = Spotify.playlistcontainer_move_playlist(pointer, from, to, !! dry_run)
215
+ def move(from, to)
216
+ error = move_playlist(from, to, false)
217
+ Error.maybe_raise(error)
218
+ contents[to]
219
+ end
206
220
 
207
- if dry_run
208
- error, symbol = Error.disambiguate(error)
209
- symbol == :ok
210
- else
211
- Error.maybe_raise(error)
212
- contents[from > to ? to : to - 1]
213
- end
221
+ # Control if if the item at index `from` can be moved to `infront_of`.
222
+ #
223
+ # @param (see #move)
224
+ # @return [Boolean] true if the operation can be performed
225
+ def can_move?(from, to)
226
+ error = move_playlist(from, to, true)
227
+ number, symbol = Error.disambiguate(error)
228
+ symbol == :ok
214
229
  end
215
230
 
216
231
  protected
232
+ # Wrapper for original API; adjusts indices accordingly.
233
+ #
234
+ # @param [Integer] from
235
+ # @param [Integer] from
236
+ # @return [Integer] error
237
+ def move_playlist(from, infront_of, dry_run)
238
+ infront_of += 1 if from < infront_of
239
+ Spotify.playlistcontainer_move_playlist(pointer, from, infront_of, dry_run)
240
+ end
241
+
217
242
  # Given an index, find out the starting point and ending point
218
243
  # of the folder at that index.
219
244
  #
@@ -247,9 +272,5 @@ module Hallon
247
272
  def folder_id(index)
248
273
  Spotify.playlistcontainer_playlist_folder_id(pointer, index)
249
274
  end
250
-
251
- # playlistcontainer_remove_playlist
252
- # playlistcontainer_move_playlist
253
- # playlistcontainer_add_folder (#insert)
254
275
  end
255
276
  end
data/lib/hallon/search.rb CHANGED
@@ -129,7 +129,7 @@ module Hallon
129
129
  # @return [Link] link for this search query.
130
130
  def to_link
131
131
  link = Spotify.link_create_from_search!(pointer)
132
- Link.new(link) unless link.null?
132
+ Link.from(link)
133
133
  end
134
134
  end
135
135
  end
@@ -130,7 +130,7 @@ module Hallon
130
130
  # @return [PlaylistContainer, nil]
131
131
  def container
132
132
  container = Spotify.session_playlistcontainer!(pointer)
133
- PlaylistContainer.new(container) unless container.null?
133
+ PlaylistContainer.from(container)
134
134
  end
135
135
 
136
136
  # Process pending Spotify events (might fire callbacks).
@@ -160,6 +160,7 @@ module Hallon
160
160
  loop do
161
161
  begin
162
162
  timeout = [process_events.fdiv(1000), 5].min # scope to five seconds
163
+ timeout = timeout + 0.010 # minimum of ten miliseconds timeout
163
164
  params = Timeout::timeout(timeout) { channel.pop }
164
165
  redo if params == :notify
165
166
  rescue Timeout::Error
@@ -252,7 +253,7 @@ module Hallon
252
253
  # @return [User] the User currently logged in.
253
254
  def user
254
255
  user = Spotify.session_user!(pointer)
255
- User.new(user) unless user.null?
256
+ User.from(user)
256
257
  end
257
258
 
258
259
  # @return [Symbol] current connection status.
@@ -364,14 +365,14 @@ module Hallon
364
365
  # @return [Playlist, nil] currently logged in user’s starred playlist.
365
366
  def starred
366
367
  playlist = Spotify.session_starred_create!(pointer)
367
- Playlist.new(playlist) unless playlist.null?
368
+ Playlist.from(playlist)
368
369
  end
369
370
 
370
371
  # @note Returns nil when no user is logged in.
371
372
  # @return [Playlist, nil] currently logged in user’s inbox playlist.
372
373
  def inbox
373
374
  playlist = Spotify.session_inbox_create!(pointer)
374
- Playlist.new(playlist) unless playlist.null?
375
+ Playlist.from(playlist)
375
376
  end
376
377
 
377
378
  # @see #status
data/lib/hallon/track.rb CHANGED
@@ -132,7 +132,7 @@ module Hallon
132
132
  # @return [Hallon::Album] album this track belongs to.
133
133
  def album
134
134
  album = Spotify.track_album!(pointer)
135
- Album.new(album) unless album.null?
135
+ Album.from(album)
136
136
  end
137
137
 
138
138
  # @note There may be more than one artist, see {#artists} for retrieving them all!
data/lib/hallon/user.rb CHANGED
@@ -76,14 +76,14 @@ module Hallon
76
76
  # @return [Playlist, nil] starred playlist of the User.
77
77
  def starred
78
78
  playlist = Spotify.session_starred_for_user_create!(session.pointer, name)
79
- Playlist.new(playlist) unless playlist.null?
79
+ Playlist.from(playlist)
80
80
  end
81
81
 
82
82
  # @note Returns nil unless {#loaded?}
83
83
  # @return [PlaylistContainer, nil] published playlists of the User.
84
84
  def published
85
85
  container = Spotify.session_publishedcontainer_for_user_create!(session.pointer, name)
86
- PlaylistContainer.new(container) unless container.null?
86
+ PlaylistContainer.from(container)
87
87
  end
88
88
 
89
89
  # Send tracks to this users’ inbox, with an optional message.
@@ -3,5 +3,5 @@ module Hallon
3
3
  # Current release version of Hallon
4
4
  #
5
5
  # @see http://semver.org/
6
- VERSION = [0, 10, 1].join('.')
6
+ VERSION = [0, 11, 0].join('.')
7
7
  end
@@ -0,0 +1,38 @@
1
+ describe Hallon::Base do
2
+ let(:klass) do
3
+ Class.new(Hallon::Base) do
4
+ def initialize(pointer)
5
+ @pointer = pointer
6
+ end
7
+ end
8
+ end
9
+
10
+ describe ".from" do
11
+ it "should return a new object if given pointer is not null" do
12
+ a_pointer.should_receive(:null?).and_return(false)
13
+ klass.from(a_pointer).should_not be_nil
14
+ end
15
+
16
+ it "should return nil if given pointer is null" do
17
+ a_pointer.should_receive(:null?).and_return(true)
18
+ klass.from(a_pointer).should be_nil
19
+ end
20
+ end
21
+
22
+ describe "#==" do
23
+ it "should compare the pointers if applicable" do
24
+ one = klass.new(a_pointer)
25
+ two = klass.new(a_pointer)
26
+
27
+ one.should eq two
28
+ end
29
+
30
+ it "should fall back to default object comparison" do
31
+ one = klass.new(a_pointer)
32
+ two = klass.new(a_pointer)
33
+ two.stub(:respond_to?).and_return(false)
34
+
35
+ one.should_not eq two
36
+ end
37
+ end
38
+ end
@@ -11,8 +11,8 @@ describe Hallon::Link do
11
11
  expect { Hallon::Link.new("spotify:user:burgestrand") }.to_not raise_error
12
12
  end
13
13
 
14
- it "should accept an FFI pointer" do
15
- expect { Hallon::Link.new(Spotify::Pointer.new(null_pointer, :link, false)) }.to raise_error(ArgumentError, /is not a valid spotify link/)
14
+ it "should raise an error given a null pointer" do
15
+ expect { Hallon::Link.new(Spotify::Pointer.new(null_pointer, :link, false)) }.to raise_error(ArgumentError)
16
16
  end
17
17
 
18
18
  it "should raise an error when no session instance is about" do
@@ -121,24 +121,24 @@ describe Hallon::PlaylistContainer do
121
121
  playlist = container.contents[0]
122
122
 
123
123
  container.contents.map(&:class).should eq [Hallon::Playlist, Hallon::PlaylistContainer::Folder, Hallon::PlaylistContainer::Folder]
124
- container.move(0, 2).should eq playlist
124
+ container.move(0, 1).should eq playlist
125
125
  container.contents.map(&:class).should eq [Hallon::PlaylistContainer::Folder, Hallon::Playlist, Hallon::PlaylistContainer::Folder]
126
126
  container.move(1, 0).should eq playlist
127
127
  container.contents.map(&:class).should eq [Hallon::Playlist, Hallon::PlaylistContainer::Folder, Hallon::PlaylistContainer::Folder]
128
128
  end
129
129
 
130
- it "should not do anything if it’s a dry-run operation" do
131
- container.contents.map(&:class).should eq [Hallon::Playlist, Hallon::PlaylistContainer::Folder, Hallon::PlaylistContainer::Folder]
132
- container.move(0, 2, :dry_run).should be_true
133
- container.contents.map(&:class).should eq [Hallon::Playlist, Hallon::PlaylistContainer::Folder, Hallon::PlaylistContainer::Folder]
130
+ it "should raise an error if the operation failed" do
131
+ expect { container.move(0, -1) }.to raise_error(Hallon::Error)
134
132
  end
133
+ end
135
134
 
136
- it "should not raise an error for an invalid operation when dry_run is active" do
137
- container.move(0, -1, :dry_run).should be_false
135
+ describe "#can_move?" do
136
+ it "should be true if the operation can be performed" do
137
+ expect { container.can_move?(0, 1).should be_true }.to_not change { container.contents.to_a }
138
138
  end
139
139
 
140
- it "should raise an error if the operation failed" do
141
- expect { container.move(0, -1) }.to raise_error(Hallon::Error)
140
+ it "should be false if the operation cannot be performed" do
141
+ expect { container.can_move?(0, -1).should be_false }.to_not change { container.contents.to_a }
142
142
  end
143
143
  end
144
144
 
@@ -172,7 +172,7 @@ describe Hallon::PlaylistContainer do
172
172
  folder.should_not be_moved
173
173
  container.move(folder.begin, 0).id.should eq folder.id
174
174
  folder.should be_moved
175
- container.move(0, 2).id.should eq folder.id
175
+ container.move(0, 1).id.should eq folder.id
176
176
  folder.should_not be_moved
177
177
  end
178
178
  end
@@ -104,6 +104,7 @@ RSpec::Core::ExampleGroup.instance_eval do
104
104
  let(:mock_image_hex) { "3ad93423add99766e02d563605c6e76ed2b0e450" }
105
105
  let(:mock_image_id) { ":\xD94#\xAD\xD9\x97f\xE0-V6\x05\xC6\xE7n\xD2\xB0\xE4P".force_encoding("BINARY") }
106
106
  let(:null_pointer) { FFI::Pointer.new(0) }
107
+ let(:a_pointer) { FFI::Pointer.new(1) }
107
108
 
108
109
  let(:mock_offline_sync_status) do
109
110
  sync = Spotify::OfflineSyncStatus.new
@@ -13,7 +13,7 @@ shared_examples_for "a Linkable object" do
13
13
  end
14
14
 
15
15
  it "should fail with an invalid spotify pointer" do
16
- expect { described_class.new("i_am_invalid_uri") }.to raise_error(ArgumentError, /not a valid spotify \w+ URI or pointer/)
16
+ expect { described_class.new("i_am_invalid_uri") }.to raise_error(ArgumentError, /could not be converted to a spotify \w+ pointer/)
17
17
  end
18
18
 
19
19
  it "should work with a Link object" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hallon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.1
4
+ version: 0.11.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-11-30 00:00:00.000000000 Z
12
+ date: 2011-12-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: spotify
16
- requirement: &70214553379640 !ruby/object:Gem::Requirement
16
+ requirement: &70296624265220 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 10.1.1
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70214553379640
24
+ version_requirements: *70296624265220
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: bundler
27
- requirement: &70214553395220 !ruby/object:Gem::Requirement
27
+ requirement: &70296624264760 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '1.0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70214553395220
35
+ version_requirements: *70296624264760
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rake
38
- requirement: &70214553394740 !ruby/object:Gem::Requirement
38
+ requirement: &70296624264300 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0.8'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70214553394740
46
+ version_requirements: *70296624264300
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rspec
49
- requirement: &70214553394240 !ruby/object:Gem::Requirement
49
+ requirement: &70296619129680 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '2'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70214553394240
57
+ version_requirements: *70296619129680
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: yard
60
- requirement: &70214553393680 !ruby/object:Gem::Requirement
60
+ requirement: &70296619126080 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70214553393680
68
+ version_requirements: *70296619126080
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rdiscount
71
- requirement: &70214553393200 !ruby/object:Gem::Requirement
71
+ requirement: &70296619124020 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,14 +76,13 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *70214553393200
79
+ version_requirements: *70296619124020
80
80
  description:
81
81
  email: kim@burgestrand.se
82
82
  executables: []
83
83
  extensions: []
84
84
  extra_rdoc_files: []
85
85
  files:
86
- - .autotest
87
86
  - .gemtest
88
87
  - .gitignore
89
88
  - .gitmodules
@@ -131,6 +130,7 @@ files:
131
130
  - spec/hallon/album_spec.rb
132
131
  - spec/hallon/artist_browse_spec.rb
133
132
  - spec/hallon/artist_spec.rb
133
+ - spec/hallon/base_spec.rb
134
134
  - spec/hallon/enumerator_spec.rb
135
135
  - spec/hallon/error_spec.rb
136
136
  - spec/hallon/ffi_spec.rb
@@ -202,7 +202,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
202
202
  version: '0'
203
203
  requirements: []
204
204
  rubyforge_project:
205
- rubygems_version: 1.8.10
205
+ rubygems_version: 1.8.12
206
206
  signing_key:
207
207
  specification_version: 3
208
208
  summary: Hallon allows you to write Ruby applications utilizing the official Spotify
@@ -214,6 +214,7 @@ test_files:
214
214
  - spec/hallon/album_spec.rb
215
215
  - spec/hallon/artist_browse_spec.rb
216
216
  - spec/hallon/artist_spec.rb
217
+ - spec/hallon/base_spec.rb
217
218
  - spec/hallon/enumerator_spec.rb
218
219
  - spec/hallon/error_spec.rb
219
220
  - spec/hallon/ffi_spec.rb
data/.autotest DELETED
@@ -1,6 +0,0 @@
1
- require 'autotest/rspec2'
2
- require 'autotest/growl'
3
- require 'autotest/fsevent' rescue nil
4
-
5
- Autotest::add_discovery { 'rspec2' }
6
- Autotest::Growl::image_dir = 'ampelmaennchen'