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.
- data/CHANGES.md +14 -0
- data/Gemfile +2 -10
- data/Guardfile +1 -1
- data/LICENSE.txt +2 -0
- data/README.md +10 -79
- data/Rakefile +6 -38
- data/docs/taglib/base.rb +52 -3
- data/docs/taglib/id3v2.rb +62 -1
- data/docs/taglib/mpeg.rb +17 -0
- data/docs/taglib/vorbis.rb +19 -0
- data/ext/taglib_base/includes.i +20 -2
- data/ext/taglib_base/taglib_base.i +4 -1
- data/ext/taglib_base/taglib_base_wrap.cxx +38 -2
- data/ext/taglib_id3v1/taglib_id3v1_wrap.cxx +20 -2
- data/ext/taglib_id3v2/taglib_id3v2_wrap.cxx +20 -2
- data/ext/taglib_mpeg/taglib_mpeg_wrap.cxx +38 -2
- data/ext/taglib_ogg/taglib_ogg_wrap.cxx +20 -2
- data/ext/taglib_vorbis/taglib_vorbis_wrap.cxx +29 -2
- data/ext/win.cmake +0 -1
- data/lib/taglib/base.rb +18 -0
- data/lib/taglib/mpeg.rb +6 -0
- data/lib/taglib/version.rb +2 -2
- data/lib/taglib/vorbis.rb +6 -0
- data/taglib-ruby.gemspec +50 -63
- data/tasks/ext.rake +5 -3
- data/tasks/gemspec_check.rake +19 -0
- data/test/fileref_open_test.rb +32 -0
- data/test/{test_fileref_properties.rb → fileref_properties_test.rb} +1 -1
- data/test/{test_fileref_write.rb → fileref_write_test.rb} +25 -1
- data/test/helper.rb +1 -1
- data/test/{test_id3v1_tag.rb → id3v1_tag_test.rb} +1 -1
- data/test/{test_id3v2_frames.rb → id3v2_frames_test.rb} +1 -1
- data/test/{test_id3v2_memory.rb → id3v2_memory_test.rb} +1 -1
- data/test/{test_id3v2_relative_volume.rb → id3v2_relative_volume_test.rb} +1 -1
- data/test/{test_id3v2_tag.rb → id3v2_tag_test.rb} +1 -1
- data/test/{test_id3v2_unicode.rb → id3v2_unicode_test.rb} +1 -1
- data/test/{test_id3v2_write.rb → id3v2_write_test.rb} +1 -1
- data/test/{test_mpeg_file.rb → mpeg_file_test.rb} +11 -1
- data/test/{test_tag.rb → tag_test.rb} +1 -1
- data/test/unicode_filename_test.rb +29 -0
- data/test/{test_vorbis_file.rb → vorbis_file_test.rb} +11 -1
- data/test/{test_vorbis_tag.rb → vorbis_tag_test.rb} +1 -1
- metadata +40 -66
- data/Gemfile.lock +0 -36
data/tasks/ext.rake
CHANGED
@@ -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://
|
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
|
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
|
data/test/helper.rb
CHANGED
@@ -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
|
@@ -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
|
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.
|
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-
|
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: &
|
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.
|
21
|
+
version: 1.1.0
|
55
22
|
type: :development
|
56
23
|
prerelease: false
|
57
|
-
version_requirements: *
|
24
|
+
version_requirements: *14715860
|
58
25
|
- !ruby/object:Gem::Dependency
|
59
|
-
name:
|
60
|
-
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.
|
32
|
+
version: '0.8'
|
66
33
|
type: :development
|
67
34
|
prerelease: false
|
68
|
-
version_requirements: *
|
35
|
+
version_requirements: *14715300
|
69
36
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
71
|
-
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: *
|
46
|
+
version_requirements: *14714580
|
80
47
|
- !ruby/object:Gem::Dependency
|
81
|
-
name:
|
82
|
-
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.
|
54
|
+
version: '0.7'
|
88
55
|
type: :development
|
89
56
|
prerelease: false
|
90
|
-
version_requirements: *
|
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:
|
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/
|
176
|
-
- test/
|
177
|
-
- test/
|
178
|
-
- test/
|
179
|
-
- test/
|
180
|
-
- test/
|
181
|
-
- test/
|
182
|
-
- test/
|
183
|
-
- test/
|
184
|
-
- test/
|
185
|
-
- test/
|
186
|
-
- test/
|
187
|
-
- test/
|
188
|
-
|
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:
|
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:
|