taglib-ruby 0.3.1 → 0.4.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.
Files changed (44) hide show
  1. data/CHANGES.md +14 -0
  2. data/Gemfile +2 -10
  3. data/Guardfile +1 -1
  4. data/LICENSE.txt +2 -0
  5. data/README.md +10 -79
  6. data/Rakefile +6 -38
  7. data/docs/taglib/base.rb +52 -3
  8. data/docs/taglib/id3v2.rb +62 -1
  9. data/docs/taglib/mpeg.rb +17 -0
  10. data/docs/taglib/vorbis.rb +19 -0
  11. data/ext/taglib_base/includes.i +20 -2
  12. data/ext/taglib_base/taglib_base.i +4 -1
  13. data/ext/taglib_base/taglib_base_wrap.cxx +38 -2
  14. data/ext/taglib_id3v1/taglib_id3v1_wrap.cxx +20 -2
  15. data/ext/taglib_id3v2/taglib_id3v2_wrap.cxx +20 -2
  16. data/ext/taglib_mpeg/taglib_mpeg_wrap.cxx +38 -2
  17. data/ext/taglib_ogg/taglib_ogg_wrap.cxx +20 -2
  18. data/ext/taglib_vorbis/taglib_vorbis_wrap.cxx +29 -2
  19. data/ext/win.cmake +0 -1
  20. data/lib/taglib/base.rb +18 -0
  21. data/lib/taglib/mpeg.rb +6 -0
  22. data/lib/taglib/version.rb +2 -2
  23. data/lib/taglib/vorbis.rb +6 -0
  24. data/taglib-ruby.gemspec +50 -63
  25. data/tasks/ext.rake +5 -3
  26. data/tasks/gemspec_check.rake +19 -0
  27. data/test/fileref_open_test.rb +32 -0
  28. data/test/{test_fileref_properties.rb → fileref_properties_test.rb} +1 -1
  29. data/test/{test_fileref_write.rb → fileref_write_test.rb} +25 -1
  30. data/test/helper.rb +1 -1
  31. data/test/{test_id3v1_tag.rb → id3v1_tag_test.rb} +1 -1
  32. data/test/{test_id3v2_frames.rb → id3v2_frames_test.rb} +1 -1
  33. data/test/{test_id3v2_memory.rb → id3v2_memory_test.rb} +1 -1
  34. data/test/{test_id3v2_relative_volume.rb → id3v2_relative_volume_test.rb} +1 -1
  35. data/test/{test_id3v2_tag.rb → id3v2_tag_test.rb} +1 -1
  36. data/test/{test_id3v2_unicode.rb → id3v2_unicode_test.rb} +1 -1
  37. data/test/{test_id3v2_write.rb → id3v2_write_test.rb} +1 -1
  38. data/test/{test_mpeg_file.rb → mpeg_file_test.rb} +11 -1
  39. data/test/{test_tag.rb → tag_test.rb} +1 -1
  40. data/test/unicode_filename_test.rb +29 -0
  41. data/test/{test_vorbis_file.rb → vorbis_file_test.rb} +11 -1
  42. data/test/{test_vorbis_tag.rb → vorbis_tag_test.rb} +1 -1
  43. metadata +40 -66
  44. data/Gemfile.lock +0 -36
@@ -9,9 +9,11 @@ install_dir = "#{tmp}/install"
9
9
  install_dll = "#{install_dir}/bin/libtag.dll"
10
10
  $cross_config_options = ["--with-opt-dir=#{install_dir}"]
11
11
 
12
- taglib_version = '1.7'
12
+ taglib_version = '1.7.1'
13
13
  taglib = "taglib-#{taglib_version}"
14
- taglib_url = "http://developer.kde.org/~wheeler/files/src/#{taglib}.tar.gz"
14
+ taglib_url = "http://cloud.github.com/downloads/taglib/taglib/#{taglib}.tar.gz"
15
+ # WITH_MP4, WITH_ASF only needed with taglib 1.7, will be default in 1.8
16
+ taglib_options = "-DCMAKE_BUILD_TYPE=Release -DWITH_MP4=ON -DWITH_ASF=ON"
15
17
 
16
18
  def configure_cross_compile(ext)
17
19
  ext.cross_compile = true
@@ -52,7 +54,7 @@ task :taglib => [install_dll]
52
54
 
53
55
  file install_dll => ["#{tmp}/#{taglib}"] do
54
56
  chdir "#{tmp}/#{taglib}" do
55
- sh "cmake -DCMAKE_INSTALL_PREFIX=#{install_dir} -DCMAKE_TOOLCHAIN_FILE=#{toolchain_file}"
57
+ sh "cmake -DCMAKE_INSTALL_PREFIX=#{install_dir} -DCMAKE_TOOLCHAIN_FILE=#{toolchain_file} #{taglib_options}"
56
58
  sh "make"
57
59
  sh "make install"
58
60
  end
@@ -0,0 +1,19 @@
1
+ desc "Checks file list in .gemspec against files tracked in Git"
2
+ task :gemspec_check do |t|
3
+ exclude = ['.gitignore', '.travis.yml']
4
+ git_files = `git ls-files`.split("\n") - exclude
5
+ gemspec_files = $gemspec.files
6
+
7
+ only_in_gemspec = gemspec_files - git_files
8
+ only_in_git = git_files - gemspec_files
9
+
10
+ unless only_in_gemspec.empty?
11
+ puts "In gemspec but not in git:"
12
+ puts only_in_gemspec
13
+ end
14
+
15
+ unless only_in_git.empty?
16
+ puts "In git but not in gemspec:"
17
+ puts only_in_git
18
+ end
19
+ end
@@ -0,0 +1,32 @@
1
+ require File.join(File.dirname(__FILE__), 'helper')
2
+
3
+ class FileRefOpenTest < Test::Unit::TestCase
4
+ context "TagLib::FileRef.open" do
5
+ should "return result" do
6
+ title = TagLib::FileRef.open("test/data/vorbis.oga", false) do |file|
7
+ tag = file.tag
8
+ assert_not_nil tag
9
+ tag.title
10
+ end
11
+ assert_equal "Title", title
12
+ end
13
+
14
+ should "close even with exception" do
15
+ f = nil
16
+ begin
17
+ TagLib::FileRef.open("test/data/vorbis.oga", false) do |file|
18
+ f = file
19
+ raise NotImplementedError
20
+ end
21
+ flunk("Should have raised NotImplementedError.")
22
+ rescue NotImplementedError
23
+ begin
24
+ f.tag
25
+ flunk("Should have raised ObjectPreviouslyDeleted.")
26
+ rescue => e
27
+ assert_equal "ObjectPreviouslyDeleted", e.class.to_s
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -1,4 +1,4 @@
1
- require 'helper'
1
+ require File.join(File.dirname(__FILE__), 'helper')
2
2
 
3
3
  class TestFileRefProperties < Test::Unit::TestCase
4
4
  context "The crash.mp3 file audio properties" do
@@ -1,4 +1,4 @@
1
- require 'helper'
1
+ require File.join(File.dirname(__FILE__), 'helper')
2
2
 
3
3
  require 'fileutils'
4
4
 
@@ -35,4 +35,28 @@ class TestFileRefWrite < Test::Unit::TestCase
35
35
  FileUtils.rm OUTPUT_FILE
36
36
  end
37
37
  end
38
+
39
+ context "TagLib::FileRef.open" do
40
+ setup do
41
+ FileUtils.cp SAMPLE_FILE, OUTPUT_FILE
42
+ end
43
+
44
+ should "be able to save file" do
45
+ TagLib::MPEG::File.open(OUTPUT_FILE, false) do |file|
46
+ tag = file.tag
47
+ tag.title = "New Title"
48
+ file.save
49
+ end
50
+
51
+ title = TagLib::MPEG::File.open(OUTPUT_FILE, false) do |file|
52
+ tag = file.tag
53
+ tag.title
54
+ end
55
+ assert_equal "New Title", title
56
+ end
57
+
58
+ teardown do
59
+ FileUtils.rm OUTPUT_FILE
60
+ end
61
+ end
38
62
  end
@@ -1,6 +1,6 @@
1
1
  require 'rubygems'
2
2
  require 'test/unit'
3
- require 'shoulda'
3
+ require 'shoulda-context'
4
4
 
5
5
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
6
6
  $LOAD_PATH.unshift(File.dirname(__FILE__))
@@ -1,4 +1,4 @@
1
- require 'helper'
1
+ require File.join(File.dirname(__FILE__), 'helper')
2
2
 
3
3
  class TestID3v1Tag < Test::Unit::TestCase
4
4
  context "The id3v1.mp3 file" do
@@ -1,4 +1,4 @@
1
- require 'helper'
1
+ require File.join(File.dirname(__FILE__), 'helper')
2
2
 
3
3
  class TestID3v2Frames < Test::Unit::TestCase
4
4
  context "The sample.mp3 file's frames" do
@@ -1,4 +1,4 @@
1
- require 'helper'
1
+ require File.join(File.dirname(__FILE__), 'helper')
2
2
 
3
3
  class TestID3v2Memory < Test::Unit::TestCase
4
4
 
@@ -1,4 +1,4 @@
1
- require 'helper'
1
+ require File.join(File.dirname(__FILE__), 'helper')
2
2
 
3
3
  class TestID3v2RelativeVolumeFrame < Test::Unit::TestCase
4
4
  context "The relative-volume.mp3 RVA2 frame" do
@@ -1,4 +1,4 @@
1
- require 'helper'
1
+ require File.join(File.dirname(__FILE__), 'helper')
2
2
 
3
3
  class TestID3v2Tag < Test::Unit::TestCase
4
4
  context "The sample.mp3 file" do
@@ -1,4 +1,4 @@
1
- require 'helper'
1
+ require File.join(File.dirname(__FILE__), 'helper')
2
2
 
3
3
  class TestID3v2Unicode < Test::Unit::TestCase
4
4
  context "The unicode.mp3 file" do
@@ -1,4 +1,4 @@
1
- require 'helper'
1
+ require File.join(File.dirname(__FILE__), 'helper')
2
2
 
3
3
  require 'fileutils'
4
4
 
@@ -1,4 +1,4 @@
1
- require 'helper'
1
+ require File.join(File.dirname(__FILE__), 'helper')
2
2
 
3
3
  class TestMPEGFile < Test::Unit::TestCase
4
4
  context "The crash.mp3 file" do
@@ -63,4 +63,14 @@ class TestMPEGFile < Test::Unit::TestCase
63
63
  @file = nil
64
64
  end
65
65
  end
66
+
67
+ context "TagLib::MPEG::File" do
68
+ should "have open method" do
69
+ title = nil
70
+ TagLib::MPEG::File.open("test/data/sample.mp3", false) do |file|
71
+ title = file.tag.title
72
+ end
73
+ assert_equal "Dummy Title", title
74
+ end
75
+ end
66
76
  end
@@ -1,4 +1,4 @@
1
- require 'helper'
1
+ require File.join(File.dirname(__FILE__), 'helper')
2
2
 
3
3
  class TestTag < Test::Unit::TestCase
4
4
  context "The sample.mp3 file" do
@@ -0,0 +1,29 @@
1
+ require File.join(File.dirname(__FILE__), 'helper')
2
+ require 'fileutils'
3
+
4
+ class TestUnicodeFilename < Test::Unit::TestCase
5
+ SRC_FILE = "test/data/vorbis.oga"
6
+ # That's "hello-" followed by "ni hao" in UTF-8
7
+ DST_FILE = "test/data/hello-\xE4\xBD\xA0\xE5\xA5\xBD.oga"
8
+
9
+ context "TagLib::FileRef" do
10
+ setup do
11
+ if HAVE_ENCODING
12
+ DST_FILE.force_encoding('UTF-8')
13
+ end
14
+ FileUtils.cp SRC_FILE, DST_FILE
15
+ @fileref = TagLib::FileRef.new(DST_FILE, false)
16
+ @tag = @fileref.tag
17
+ end
18
+
19
+ should "be possible to read" do
20
+ assert_not_nil @tag
21
+ assert_equal 'Title', @tag.title
22
+ end
23
+
24
+ teardown do
25
+ @fileref.close
26
+ FileUtils.rm DST_FILE
27
+ end
28
+ end
29
+ end
@@ -1,4 +1,4 @@
1
- require 'helper'
1
+ require File.join(File.dirname(__FILE__), 'helper')
2
2
 
3
3
  class TestVorbisFile < Test::Unit::TestCase
4
4
  context "The vorbis.oga file" do
@@ -41,4 +41,14 @@ class TestVorbisFile < Test::Unit::TestCase
41
41
  @file = nil
42
42
  end
43
43
  end
44
+
45
+ context "TagLib::Ogg::Vorbis::File" do
46
+ should "have open method" do
47
+ title = nil
48
+ TagLib::Ogg::Vorbis::File.open("test/data/vorbis.oga", false) do |file|
49
+ title = file.tag.title
50
+ end
51
+ assert_equal "Title", title
52
+ end
53
+ end
44
54
  end
@@ -1,4 +1,4 @@
1
- require 'helper'
1
+ require File.join(File.dirname(__FILE__), 'helper')
2
2
 
3
3
  class TestVorbisTag < Test::Unit::TestCase
4
4
  context "The vorbis.oga file tag" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: taglib-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.4.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,66 +9,33 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-01-22 00:00:00.000000000 Z
12
+ date: 2012-03-18 00:00:00.000000000 Z
13
13
  dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: rake-compiler
16
- requirement: &15279760 !ruby/object:Gem::Requirement
17
- none: false
18
- requirements:
19
- - - ~>
20
- - !ruby/object:Gem::Version
21
- version: '0.7'
22
- type: :development
23
- prerelease: false
24
- version_requirements: *15279760
25
- - !ruby/object:Gem::Dependency
26
- name: shoulda
27
- requirement: &15277940 !ruby/object:Gem::Requirement
28
- none: false
29
- requirements:
30
- - - ~>
31
- - !ruby/object:Gem::Version
32
- version: '2.11'
33
- type: :development
34
- prerelease: false
35
- version_requirements: *15277940
36
14
  - !ruby/object:Gem::Dependency
37
15
  name: bundler
38
- requirement: &15274780 !ruby/object:Gem::Requirement
39
- none: false
40
- requirements:
41
- - - ~>
42
- - !ruby/object:Gem::Version
43
- version: 1.0.0
44
- type: :development
45
- prerelease: false
46
- version_requirements: *15274780
47
- - !ruby/object:Gem::Dependency
48
- name: jeweler
49
- requirement: &15426340 !ruby/object:Gem::Requirement
16
+ requirement: &14715860 !ruby/object:Gem::Requirement
50
17
  none: false
51
18
  requirements:
52
19
  - - ~>
53
20
  - !ruby/object:Gem::Version
54
- version: 1.6.4
21
+ version: 1.1.0
55
22
  type: :development
56
23
  prerelease: false
57
- version_requirements: *15426340
24
+ version_requirements: *14715860
58
25
  - !ruby/object:Gem::Dependency
59
- name: yard
60
- requirement: &15424280 !ruby/object:Gem::Requirement
26
+ name: rake-compiler
27
+ requirement: &14715300 !ruby/object:Gem::Requirement
61
28
  none: false
62
29
  requirements:
63
30
  - - ~>
64
31
  - !ruby/object:Gem::Version
65
- version: '0.7'
32
+ version: '0.8'
66
33
  type: :development
67
34
  prerelease: false
68
- version_requirements: *15424280
35
+ version_requirements: *14715300
69
36
  - !ruby/object:Gem::Dependency
70
- name: redcarpet
71
- requirement: &15421060 !ruby/object:Gem::Requirement
37
+ name: shoulda-context
38
+ requirement: &14714580 !ruby/object:Gem::Requirement
72
39
  none: false
73
40
  requirements:
74
41
  - - ~>
@@ -76,18 +43,18 @@ dependencies:
76
43
  version: '1.0'
77
44
  type: :development
78
45
  prerelease: false
79
- version_requirements: *15421060
46
+ version_requirements: *14714580
80
47
  - !ruby/object:Gem::Dependency
81
- name: guard-test
82
- requirement: &15515540 !ruby/object:Gem::Requirement
48
+ name: yard
49
+ requirement: &14713800 !ruby/object:Gem::Requirement
83
50
  none: false
84
51
  requirements:
85
52
  - - ~>
86
53
  - !ruby/object:Gem::Version
87
- version: 0.4.0
54
+ version: '0.7'
88
55
  type: :development
89
56
  prerelease: false
90
- version_requirements: *15515540
57
+ version_requirements: *14713800
91
58
  description: ! 'Ruby interface for the taglib C++ library.
92
59
 
93
60
 
@@ -96,7 +63,8 @@ description: ! 'Ruby interface for the taglib C++ library.
96
63
  not only the minimal C API. This means that all tags can be accessed.
97
64
 
98
65
  '
99
- email: robin@nibor.org
66
+ email:
67
+ - robin@nibor.org
100
68
  executables: []
101
69
  extensions:
102
70
  - ext/taglib_base/extconf.rb
@@ -113,7 +81,6 @@ files:
113
81
  - .yardopts
114
82
  - CHANGES.md
115
83
  - Gemfile
116
- - Gemfile.lock
117
84
  - Guardfile
118
85
  - LICENSE.txt
119
86
  - README.md
@@ -159,6 +126,7 @@ files:
159
126
  - taglib-ruby.gemspec
160
127
  - tasks/docs_coverage.rake
161
128
  - tasks/ext.rake
129
+ - tasks/gemspec_check.rake
162
130
  - tasks/swig.rake
163
131
  - test/data/Makefile
164
132
  - test/data/add-relative-volume.cpp
@@ -172,20 +140,22 @@ files:
172
140
  - test/data/vorbis-create.cpp
173
141
  - test/data/vorbis.oga
174
142
  - test/helper.rb
175
- - test/test_fileref_properties.rb
176
- - test/test_fileref_write.rb
177
- - test/test_id3v1_tag.rb
178
- - test/test_id3v2_frames.rb
179
- - test/test_id3v2_memory.rb
180
- - test/test_id3v2_relative_volume.rb
181
- - test/test_id3v2_tag.rb
182
- - test/test_id3v2_unicode.rb
183
- - test/test_id3v2_write.rb
184
- - test/test_mpeg_file.rb
185
- - test/test_tag.rb
186
- - test/test_vorbis_file.rb
187
- - test/test_vorbis_tag.rb
188
- homepage: http://github.com/robinst/taglib-ruby
143
+ - test/fileref_open_test.rb
144
+ - test/fileref_properties_test.rb
145
+ - test/fileref_write_test.rb
146
+ - test/id3v1_tag_test.rb
147
+ - test/id3v2_frames_test.rb
148
+ - test/id3v2_memory_test.rb
149
+ - test/id3v2_relative_volume_test.rb
150
+ - test/id3v2_tag_test.rb
151
+ - test/id3v2_unicode_test.rb
152
+ - test/id3v2_write_test.rb
153
+ - test/mpeg_file_test.rb
154
+ - test/tag_test.rb
155
+ - test/unicode_filename_test.rb
156
+ - test/vorbis_file_test.rb
157
+ - test/vorbis_tag_test.rb
158
+ homepage: http://robinst.github.com/taglib-ruby/
189
159
  licenses:
190
160
  - MIT
191
161
  post_install_message:
@@ -200,13 +170,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
200
170
  version: '0'
201
171
  segments:
202
172
  - 0
203
- hash: -3440148928620656920
173
+ hash: 2925040834327177286
204
174
  required_rubygems_version: !ruby/object:Gem::Requirement
205
175
  none: false
206
176
  requirements:
207
177
  - - ! '>='
208
178
  - !ruby/object:Gem::Version
209
179
  version: '0'
180
+ segments:
181
+ - 0
182
+ hash: 2925040834327177286
210
183
  requirements:
211
184
  - taglib (libtag1-dev in Debian/Ubuntu, taglib-devel in Fedora/RHEL)
212
185
  rubyforge_project:
@@ -215,3 +188,4 @@ signing_key:
215
188
  specification_version: 3
216
189
  summary: Ruby interface for the taglib C++ library
217
190
  test_files: []
191
+ has_rdoc: