taglib2 0.1.2 → 0.1.3

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.tar.gz.sig CHANGED
Binary file
data/ChangeLog CHANGED
@@ -1,3 +1,8 @@
1
+ # 0.1.3
2
+ Add File#close methods
3
+ Add Rakefile file to gem package
4
+
5
+ # 0.1.2
1
6
  Add Rakefile.
2
7
  Fix a bug that occurs when calling super from a child class of TagLib::File.
3
8
 
@@ -0,0 +1,112 @@
1
+ # encoding: UTF-8
2
+ =begin
3
+ Copyright 2010 Vincent Carmona
4
+ vinc4mai+taglib@gmail.com
5
+
6
+ This file is part of ruby-taglib2.
7
+
8
+ ruby-taglib2 is free software; you can redistribute it and/or modify
9
+ it under the terms of the GNU General Public License as published by
10
+ the Free Software Foundation; either version 2 of the License, or
11
+ (at your option) any later version.
12
+
13
+ ruby-taglib2 is distributed in the hope that it will be useful,
14
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
+ GNU General Public License for more details.
17
+
18
+ You should have received a copy of the GNU General Public License
19
+ along with ruby-taglib2; if not, write to the Free Software
20
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
+ =end
22
+
23
+ require 'rake/rdoctask'
24
+ require 'rake/testtask'
25
+
26
+ compat=ENV['COMPAT']=="true"
27
+
28
+ #Default task
29
+ task :default => :build
30
+
31
+ #Building
32
+ file "Makefile" => ["extconf.rb"] do
33
+ extconf="extconf.rb"
34
+ extconf+=" --compat" if compat
35
+ ruby(extconf)
36
+ end
37
+
38
+ desc "Build librairy"
39
+ task :build => "Makefile" do
40
+ sh("make")
41
+ end
42
+
43
+ Rake::RDocTask.new do |rd|
44
+ rd.options << "--exclude" << "extconf.rb"
45
+ rd.options << "--exclude" << "tests/"
46
+ end
47
+
48
+ #Testing
49
+ Rake::TestTask.new do |t|
50
+ t.libs=[]
51
+ t.test_files=FileList['tests/tests.rb']
52
+ t.options=" --compat" if compat
53
+ end
54
+
55
+ #Installing
56
+
57
+ desc "Install librairy"
58
+ task :install => :build do
59
+ sh("make install")
60
+ end
61
+
62
+ #Cleaning
63
+ desc "Remove any temporary products."
64
+ task :clean do
65
+ sh("make clean") if File.exist?("Makefile")
66
+ end
67
+
68
+ desc "Remove any generated file."
69
+ task :clobber do
70
+ sh("make distclean") if File.exist?("Makefile")
71
+ end
72
+
73
+ begin
74
+ require 'rubygems'
75
+ require 'rake/gempackagetask.rb'
76
+
77
+ files=FileList['lib/**/*.rb', "compat/taglib.rb", '*.h', '*.c', 'extconf.rb',
78
+ 'ChangeLog', 'COPYING', 'README', 'Rakefile']
79
+ ext=FileList["extconf.rb"]
80
+ rdoc_options=["taglib2.c"]
81
+
82
+ def retrieve_version
83
+ File.open('lib/taglib2.rb'){|f| l=f.readlines}.
84
+ grep(/VERSION=\[(\d+).*(\d+).*(\d+)\]/){$1+"."+$2+"."+$3}[0]
85
+ end
86
+
87
+ spec=Gem::Specification.new do |s|
88
+ s.name='taglib2'
89
+ s.version=retrieve_version
90
+ s.summary="ruby-taglib2 is a Ruby interface to TagLib, the audio meta-data library. It allows Ruby programs to read and write meta-data of all the audio formats supported by TagLib. It was written because ruby-taglib suffers severals bugs with ruby 1.9."
91
+ s.author="Vincent Carmona"
92
+ s.email="vinc4mai@gmail.com"
93
+ s.rubyforge_project='zik'
94
+ s.homepage="http://zik.rubyforge.org/ruby-taglib2"
95
+ s.license="General Public License v2"
96
+
97
+ s.files=files.to_a
98
+ s.extensions=ext.to_a
99
+
100
+ s.rdoc_options=rdoc_options
101
+
102
+ if ENV['GEM_PRIVATE_KEY']&&ENV['GEM_CERTIFICATE_CHAIN']
103
+ s.signing_key=ENV['GEM_PRIVATE_KEY']
104
+ s.cert_chain=ENV['GEM_CERTIFICATE_CHAIN'].split(" ")
105
+ else
106
+ $stderr.puts "WARNING: gem will not be signed."
107
+ end
108
+ end
109
+ Rake::GemPackageTask.new(spec){}
110
+ rescue LoadError => e
111
+ $stderr.puts "WARNING: "+e
112
+ end
@@ -24,10 +24,4 @@ require "taglib2"
24
24
  module TagLib
25
25
  class BadPath < Exception
26
26
  end
27
-
28
- class File
29
- def close
30
- nil
31
- end
32
- end
33
27
  end
@@ -23,5 +23,5 @@ require "taglib2.so"
23
23
 
24
24
  #:main: TagLib::File
25
25
  module TagLib
26
- VERSION=[0, 1, 2]
26
+ VERSION=[0, 1, 3]
27
27
  end
data/taglib2.c CHANGED
@@ -27,16 +27,18 @@ typedef struct
27
27
  TagLib_File *file;
28
28
  TagLib_Tag *tag;
29
29
  const TagLib_AudioProperties *audio;
30
+ int closed;
30
31
  } tgFileData;
31
32
 
32
33
  VALUE mTagLib;
33
- VALUE eBadFile, eBadTag, eBadAudioProperties;
34
+ VALUE eBadFile, eBadTag, eBadAudioProperties, eFileClosed;
34
35
  VALUE cFile;
35
36
 
36
37
  static void
37
38
  free_tgFileData(tgFileData *d)
38
39
  {
39
- taglib_file_free(d->file);
40
+ if (!d->closed)
41
+ taglib_file_free(d->file);
40
42
  free(d);
41
43
  }
42
44
 
@@ -74,6 +76,16 @@ file_audio(VALUE self)
74
76
  return d->audio;
75
77
  }
76
78
 
79
+ void
80
+ file_check_closed(VALUE self)
81
+ {
82
+ tgFileData *d;
83
+
84
+ Data_Get_Struct(self, tgFileData, d);
85
+ if (d->closed)
86
+ rb_raise(eFileClosed, "File closed");
87
+ }
88
+
77
89
  /*:nodoc:*/
78
90
  VALUE
79
91
  file_alloc(VALUE self)
@@ -83,6 +95,7 @@ file_alloc(VALUE self)
83
95
  data=ALLOC(tgFileData);
84
96
  data->tag=NULL;
85
97
  data->audio=NULL;
98
+ data->closed=0;
86
99
  return Data_Wrap_Struct(self, 0, free_tgFileData, data);
87
100
  }
88
101
 
@@ -126,6 +139,7 @@ file_save(VALUE self)
126
139
  {
127
140
  tgFileData *data;
128
141
 
142
+ file_check_closed(self);
129
143
  Data_Get_Struct(self, tgFileData, data);
130
144
  if (taglib_file_save(data->file))
131
145
  {
@@ -137,12 +151,27 @@ file_save(VALUE self)
137
151
  }
138
152
  }
139
153
 
154
+ /*Close audio file*/
155
+ VALUE
156
+ file_close(VALUE self)
157
+ {
158
+ tgFileData *data;
159
+
160
+ Data_Get_Struct(self, tgFileData, data);
161
+ if (data->closed)
162
+ return self;
163
+ taglib_file_free(data->file);
164
+ data->closed=1;
165
+ return self;
166
+ }
167
+
140
168
  /*Get track title*/
141
169
  VALUE
142
170
  file_get_title(VALUE self)
143
171
  {
144
172
  VALUE str;
145
173
 
174
+ file_check_closed(self);
146
175
  str=rb_str_new2(taglib_tag_title(file_tag(self)));
147
176
  taglib_tag_free_strings;
148
177
  return str;
@@ -157,6 +186,7 @@ Set track title to title
157
186
  VALUE
158
187
  file_set_title(VALUE self, VALUE title)
159
188
  {
189
+ file_check_closed(self);
160
190
  taglib_tag_set_title(file_tag(self), StringValuePtr(title));
161
191
  return title;
162
192
  }
@@ -167,6 +197,7 @@ file_get_artist(VALUE self)
167
197
  {
168
198
  VALUE str;
169
199
 
200
+ file_check_closed(self);
170
201
  str=rb_str_new2(taglib_tag_artist(file_tag(self)));
171
202
  taglib_tag_free_strings;
172
203
  return str;
@@ -181,6 +212,7 @@ Set track artist to artist
181
212
  VALUE
182
213
  file_set_artist(VALUE self, VALUE artist)
183
214
  {
215
+ file_check_closed(self);
184
216
  taglib_tag_set_artist(file_tag(self), StringValuePtr(artist));
185
217
  return artist;
186
218
  }
@@ -191,6 +223,7 @@ file_get_album(VALUE self)
191
223
  {
192
224
  VALUE str;
193
225
 
226
+ file_check_closed(self);
194
227
  str=rb_str_new2(taglib_tag_album(file_tag(self)));
195
228
  taglib_tag_free_strings;
196
229
  return str;
@@ -205,6 +238,7 @@ Set track album to album
205
238
  VALUE
206
239
  file_set_album(VALUE self, VALUE album)
207
240
  {
241
+ file_check_closed(self);
208
242
  taglib_tag_set_album(file_tag(self), StringValuePtr(album));
209
243
  return album;
210
244
  }
@@ -215,6 +249,7 @@ file_get_comment(VALUE self)
215
249
  {
216
250
  VALUE str;
217
251
 
252
+ file_check_closed(self);
218
253
  str=rb_str_new2(taglib_tag_comment(file_tag(self)));
219
254
  taglib_tag_free_strings;
220
255
  return str;
@@ -229,6 +264,7 @@ Set track comment to comment
229
264
  VALUE
230
265
  file_set_comment(VALUE self, VALUE comment)
231
266
  {
267
+ file_check_closed(self);
232
268
  taglib_tag_set_comment(file_tag(self), StringValuePtr(comment));
233
269
  return comment;
234
270
  }
@@ -239,6 +275,7 @@ file_get_genre(VALUE self)
239
275
  {
240
276
  VALUE str;
241
277
 
278
+ file_check_closed(self);
242
279
  str=rb_str_new2(taglib_tag_genre(file_tag(self)));
243
280
  taglib_tag_free_strings;
244
281
  return str;
@@ -253,6 +290,7 @@ Set track genre to genre
253
290
  VALUE
254
291
  file_set_genre(VALUE self, VALUE genre)
255
292
  {
293
+ file_check_closed(self);
256
294
  taglib_tag_set_genre(file_tag(self), StringValuePtr(genre));
257
295
  return genre;
258
296
  }
@@ -261,6 +299,7 @@ file_set_genre(VALUE self, VALUE genre)
261
299
  VALUE
262
300
  file_get_year(VALUE self)
263
301
  {
302
+ file_check_closed(self);
264
303
  return INT2FIX(taglib_tag_year(file_tag(self)));
265
304
  }
266
305
 
@@ -273,6 +312,7 @@ Set track year to year
273
312
  VALUE
274
313
  file_set_year(VALUE self, VALUE year)
275
314
  {
315
+ file_check_closed(self);
276
316
  taglib_tag_set_year(file_tag(self), NUM2INT(year));
277
317
  return year;
278
318
  }
@@ -281,6 +321,7 @@ file_set_year(VALUE self, VALUE year)
281
321
  VALUE
282
322
  file_get_track(VALUE self)
283
323
  {
324
+ file_check_closed(self);
284
325
  return INT2FIX(taglib_tag_track(file_tag(self)));
285
326
  }
286
327
 
@@ -293,6 +334,7 @@ Set track number to number
293
334
  VALUE
294
335
  file_set_track(VALUE self, VALUE track)
295
336
  {
337
+ file_check_closed(self);
296
338
  taglib_tag_set_track(file_tag(self), NUM2INT(track));
297
339
  return track;
298
340
  }
@@ -301,6 +343,7 @@ file_set_track(VALUE self, VALUE track)
301
343
  VALUE
302
344
  file_get_length(VALUE self)
303
345
  {
346
+ file_check_closed(self);
304
347
  return INT2NUM(taglib_audioproperties_length(file_audio(self)));
305
348
  }
306
349
 
@@ -308,6 +351,7 @@ file_get_length(VALUE self)
308
351
  VALUE
309
352
  file_get_bitrate(VALUE self)
310
353
  {
354
+ file_check_closed(self);
311
355
  return INT2NUM(taglib_audioproperties_bitrate(file_audio(self)));
312
356
  }
313
357
 
@@ -315,6 +359,7 @@ file_get_bitrate(VALUE self)
315
359
  VALUE
316
360
  file_get_samplerate(VALUE self)
317
361
  {
362
+ file_check_closed(self);
318
363
  return INT2NUM(taglib_audioproperties_samplerate(file_audio(self)));
319
364
  }
320
365
 
@@ -322,6 +367,7 @@ file_get_samplerate(VALUE self)
322
367
  VALUE
323
368
  file_get_channels(VALUE self)
324
369
  {
370
+ file_check_closed(self);
325
371
  return INT2NUM(taglib_audioproperties_channels(file_audio(self)));
326
372
  }
327
373
 
@@ -342,6 +388,7 @@ ruby-taglib2 is a Ruby interface to TagLib, the audio meta-data library.
342
388
  eBadFile=rb_define_class_under(mTagLib, "BadFile", rb_eException);
343
389
  eBadTag=rb_define_class_under(mTagLib, "BadTag", rb_eException);
344
390
  eBadAudioProperties=rb_define_class_under(mTagLib, "BadAudioProperties", rb_eException);
391
+ eFileClosed=rb_define_class_under(mTagLib, "FileClosed", rb_eException);
345
392
 
346
393
  rb_define_const(mTagLib, "MPEG", INT2FIX(TagLib_File_MPEG));
347
394
  rb_define_const(mTagLib, "OggVorbis", INT2FIX(TagLib_File_OggVorbis));
@@ -358,6 +405,7 @@ ruby-taglib2 is a Ruby interface to TagLib, the audio meta-data library.
358
405
  rb_define_alloc_func(cFile, file_alloc);
359
406
  rb_define_method(cFile, "initialize", file_init, -1);
360
407
  rb_define_method(cFile, "save", file_save, 0);
408
+ rb_define_method(cFile, "close", file_close, 0);
361
409
  rb_define_method(cFile, "title", file_get_title, 0);
362
410
  rb_define_method(cFile, "title=", file_set_title, 1);
363
411
  rb_define_method(cFile, "artist", file_get_artist, 0);
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: taglib2
3
3
  version: !ruby/object:Gem::Version
4
- hash: 31
4
+ hash: 29
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 2
10
- version: 0.1.2
9
+ - 3
10
+ version: 0.1.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - Vincent Carmona
@@ -36,7 +36,7 @@ cert_chain:
36
36
  oxzIRXlS
37
37
  -----END CERTIFICATE-----
38
38
 
39
- date: 2011-03-10 00:00:00 +01:00
39
+ date: 2011-04-27 00:00:00 +02:00
40
40
  default_executable:
41
41
  dependencies: []
42
42
 
@@ -56,6 +56,7 @@ files:
56
56
  - ChangeLog
57
57
  - COPYING
58
58
  - README
59
+ - Rakefile
59
60
  has_rdoc: true
60
61
  homepage: http://zik.rubyforge.org/ruby-taglib2
61
62
  licenses:
metadata.gz.sig CHANGED
Binary file