taglib-ruby 0.6.0 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGES.md +9 -0
  3. data/README.md +40 -9
  4. data/Rakefile +1 -2
  5. data/docs/taglib/aiff.rb +63 -0
  6. data/docs/taglib/base.rb +22 -1
  7. data/docs/taglib/id3v2.rb +21 -2
  8. data/docs/taglib/riff.rb +3 -0
  9. data/docs/taglib/wav.rb +63 -0
  10. data/ext/extconf_common.rb +15 -1
  11. data/ext/taglib_aiff/extconf.rb +4 -0
  12. data/ext/taglib_aiff/taglib_aiff.i +68 -0
  13. data/ext/taglib_aiff/taglib_aiff_wrap.cxx +2920 -0
  14. data/ext/taglib_base/includes.i +7 -2
  15. data/ext/taglib_base/taglib_base_wrap.cxx +109 -115
  16. data/ext/taglib_flac/taglib_flac_wrap.cxx +108 -114
  17. data/ext/taglib_id3v1/taglib_id3v1_wrap.cxx +109 -115
  18. data/ext/taglib_id3v2/taglib_id3v2.i +3 -1
  19. data/ext/taglib_id3v2/taglib_id3v2_wrap.cxx +139 -119
  20. data/ext/taglib_mp4/taglib_mp4_wrap.cxx +109 -115
  21. data/ext/taglib_mpeg/taglib_mpeg_wrap.cxx +108 -114
  22. data/ext/taglib_ogg/taglib_ogg_wrap.cxx +109 -115
  23. data/ext/taglib_vorbis/taglib_vorbis_wrap.cxx +108 -114
  24. data/ext/taglib_wav/extconf.rb +4 -0
  25. data/ext/taglib_wav/taglib_wav.i +66 -0
  26. data/ext/taglib_wav/taglib_wav_wrap.cxx +3057 -0
  27. data/lib/taglib.rb +2 -0
  28. data/lib/taglib/aiff.rb +7 -0
  29. data/lib/taglib/version.rb +1 -1
  30. data/lib/taglib/wav.rb +7 -0
  31. data/taglib-ruby.gemspec +27 -2
  32. data/tasks/ext.rake +17 -10
  33. data/tasks/swig.rake +10 -0
  34. data/test/aiff_examples_test.rb +39 -0
  35. data/test/aiff_file_test.rb +94 -0
  36. data/test/aiff_file_write_test.rb +88 -0
  37. data/test/data/Makefile +8 -2
  38. data/test/data/aiff-sample.aiff +0 -0
  39. data/test/data/wav-create.cpp +55 -0
  40. data/test/data/wav-dump.cpp +74 -0
  41. data/test/data/wav-sample.wav +0 -0
  42. data/test/file_test.rb +21 -0
  43. data/test/id3v2_unknown_frames_test.rb +30 -0
  44. data/test/wav_examples_test.rb +42 -0
  45. data/test/wav_file_test.rb +96 -0
  46. data/test/wav_file_write_test.rb +88 -0
  47. metadata +49 -45
@@ -1,6 +1,6 @@
1
1
  .PHONY: all clean
2
2
 
3
- all:: add-relative-volume id3v1-create vorbis-create flac-create mp4-create
3
+ all:: add-relative-volume id3v1-create vorbis-create flac-create mp4-create wav-create wav-dump
4
4
 
5
5
  add-relative-volume: add-relative-volume.cpp
6
6
  g++ -o $@ $< -ltag -I/usr/include/taglib
@@ -17,5 +17,11 @@ flac-create: flac-create.cpp
17
17
  mp4-create: mp4-create.cpp
18
18
  g++ -o $@ $< -ltag -I/usr/include/taglib
19
19
 
20
+ wav-create: wav-create.cpp
21
+ g++ -o $@ $< -ltag -I/usr/include/taglib
22
+
23
+ wav-dump: wav-dump.cpp
24
+ g++ -o $@ $< -ltag -I/usr/include/taglib
25
+
20
26
  clean::
21
- -rm add-relative-volume id3v1-create vorbis-create flac-create mp4-create
27
+ -rm add-relative-volume id3v1-create vorbis-create flac-create mp4-create wav-create wav-dump
@@ -0,0 +1,55 @@
1
+ #include <taglib/taglib.h>
2
+ #include <taglib/wavfile.h>
3
+ #include <taglib/wavproperties.h>
4
+ #include <taglib/attachedpictureframe.h>
5
+
6
+ #include "get_picture_data.cpp"
7
+
8
+ using namespace TagLib;
9
+
10
+
11
+ int main(int argc, char **argv) {
12
+ if (argc != 2) {
13
+ std::cout << "usage: " << argv[0] << " file.wav" << std::endl;
14
+ exit(1);
15
+ }
16
+ char *filename = argv[1];
17
+
18
+ RIFF::WAV::File file(filename);
19
+ ID3v2::Tag *tag = file.tag();
20
+
21
+ tag->setArtist("WAV Dummy Artist Name");
22
+ tag->setAlbum("WAV Dummy Album Title");
23
+ tag->setTitle("WAV Dummy Track Title");
24
+ tag->setTrack(5);
25
+ tag->setYear(2014);
26
+ tag->setGenre("Jazz");
27
+ tag->setComment("WAV Dummy Comment");
28
+
29
+ tag->removeFrames("APIC");
30
+
31
+ ByteVector picture_data;
32
+ ID3v2::AttachedPictureFrame *apic;
33
+
34
+ picture_data = getPictureData("globe_east_540.jpg");
35
+ apic = new ID3v2::AttachedPictureFrame();
36
+ apic->setPicture(picture_data);
37
+ apic->setMimeType("image/jpeg");
38
+ apic->setType(ID3v2::AttachedPictureFrame::FrontCover);
39
+ apic->setDescription("WAV Dummy Front Cover-Art");
40
+ apic->setTextEncoding(String::UTF8);
41
+ tag->addFrame(apic);
42
+
43
+ picture_data = getPictureData("globe_east_90.jpg");
44
+ apic = new ID3v2::AttachedPictureFrame();
45
+ apic->setPicture(picture_data);
46
+ apic->setMimeType("image/jpeg");
47
+ apic->setType(ID3v2::AttachedPictureFrame::Other);
48
+ apic->setDescription("WAV Dummy Thumbnail");
49
+ apic->setTextEncoding(String::UTF8);
50
+ tag->addFrame(apic);
51
+
52
+ file.save();
53
+ }
54
+
55
+ // vim: set filetype=cpp sw=2 ts=2 expandtab:
@@ -0,0 +1,74 @@
1
+ #include <taglib/taglib.h>
2
+ #include <taglib/wavfile.h>
3
+ #include <taglib/wavproperties.h>
4
+ #include <taglib/attachedpictureframe.h>
5
+
6
+ using namespace TagLib;
7
+
8
+
9
+ void dump_id3v2(ID3v2::Tag *tag)
10
+ {
11
+ if (!tag || tag->isEmpty())
12
+ {
13
+ std::cout << " NO TAGS" << std::endl;
14
+ return;
15
+ }
16
+
17
+ std::cout << " ID3v2." << tag->header()->majorVersion() << "." << tag->header()->revisionNumber() << std::endl;
18
+ std::cout << " title: '" << tag->title() << "'" << std::endl;
19
+ std::cout << " artist: '" << tag->artist() << "'" << std::endl;
20
+ std::cout << " album: '" << tag->album() << "'" << std::endl;
21
+ std::cout << " track: " << tag->track() << std::endl;
22
+ std::cout << " year: " << tag->year() << std::endl;
23
+ std::cout << " genre: '" << tag->genre() << "'" << std::endl;
24
+ std::cout << " comment: '" << tag->comment() << "'" << std::endl;
25
+
26
+ std::cout << " Frames" << std::endl;
27
+ const ID3v2::FrameList frameList = tag->frameList();
28
+ for(ID3v2::FrameList::ConstIterator it = frameList.begin(); it != frameList.end(); ++it)
29
+ std::cout << " " << (*it)->frameID() << " - " << (*it)->toString() << std::endl;
30
+
31
+ const ID3v2::FrameList apicList = tag->frameList("APIC");
32
+ for(ID3v2::FrameList::ConstIterator it = apicList.begin(); it != apicList.end(); ++it)
33
+ {
34
+ const ID3v2::AttachedPictureFrame *apic = static_cast<ID3v2::AttachedPictureFrame *>(*it);
35
+ std::cout << " Picture" << std::endl;
36
+ std::cout << " type: " << apic->type() << std::endl;
37
+ std::cout << " mime_type: '" << apic->mimeType() << "'" << std::endl;
38
+ std::cout << " description: '" << apic->description() << "'" << std::endl;
39
+ std::cout << " size: " << apic->picture().size() << " bytes" << std::endl;
40
+ }
41
+ }
42
+
43
+ void dump_audio_properties(AudioProperties *properties)
44
+ {
45
+ std::cout << " Audio Properties" << std::endl;
46
+ std::cout << " length: " << properties->length() << " (seconds)" << std::endl;
47
+ std::cout << " bitrate: " << properties->bitrate() << " (kbits/sec)" << std::endl;
48
+ std::cout << " sample_rate: " << properties->sampleRate() << " (Hz)" << std::endl;
49
+ std::cout << " channels: " << properties->channels() << std::endl;
50
+ }
51
+
52
+ void dump_wav_properties(RIFF::WAV::Properties *properties)
53
+ {
54
+ std::cout << " WAV-specific Properties" << std::endl;
55
+ std::cout << " sample_width: " << properties->sampleWidth() << " (bits)" << std::endl;
56
+ }
57
+
58
+ int main(int argc, char **argv) {
59
+ if (argc != 2) {
60
+ std::cout << "usage: " << argv[0] << " file.wav" << std::endl;
61
+ exit(1);
62
+ }
63
+ char *filename = argv[1];
64
+
65
+ std::cout << "WAV file '" << filename << "'..." << std::endl;
66
+
67
+ RIFF::WAV::File file(filename);
68
+
69
+ dump_id3v2(file.tag());
70
+ dump_audio_properties(file.audioProperties());
71
+ dump_wav_properties(file.audioProperties());
72
+ }
73
+
74
+ // vim: set filetype=cpp sw=2 ts=2 expandtab:
Binary file
@@ -0,0 +1,21 @@
1
+ require File.join(File.dirname(__FILE__), 'helper')
2
+
3
+ class TestFile < Test::Unit::TestCase
4
+ context "The sample.mp3 file" do
5
+ setup do
6
+ @mpeg_file = TagLib::MPEG::File.new("test/data/sample.mp3", false)
7
+ end
8
+
9
+ context "filename" do
10
+ should "be the right name" do
11
+ assert_equal 'test/data/sample.mp3', @mpeg_file.name
12
+ end
13
+
14
+ if HAVE_ENCODING
15
+ should "have the right encoding" do
16
+ assert_equal Encoding.find('filesystem'), @mpeg_file.name.encoding
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,30 @@
1
+ require File.join(File.dirname(__FILE__), 'helper')
2
+
3
+ class TestID3v2UnknownFrames < Test::Unit::TestCase
4
+ context "UnknownFrame" do
5
+ setup do
6
+ read_properties = false
7
+ @file = TagLib::MPEG::File.new("test/data/sample.mp3", read_properties)
8
+ @tag = @file.id3v2_tag
9
+ end
10
+
11
+ should "should be returned with correct class" do
12
+ f = TagLib::ID3v2::UnknownFrame.new("TDAT")
13
+ assert_not_nil f
14
+ @tag.add_frame(f)
15
+ frames = @tag.frame_list("TDAT")
16
+ tdat = frames.first
17
+ assert_not_nil tdat
18
+ # By looking at ID alone, it would have returned a
19
+ # TextIdentificationFrame. So make sure the correct
20
+ # class is returned here, because it would result in
21
+ # segfaults when calling methods on it.
22
+ assert_equal TagLib::ID3v2::UnknownFrame, tdat.class
23
+ end
24
+
25
+ teardown do
26
+ @file.close
27
+ @file = nil
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,42 @@
1
+ require File.join(File.dirname(__FILE__), 'helper')
2
+
3
+ class WAVExamples < Test::Unit::TestCase
4
+
5
+ DATA_FILE_PREFIX = "test/data/wav-"
6
+
7
+ context "TagLib::RIFF::WAV::File" do
8
+
9
+ should "Run TagLib::RIFF::WAV::File examples" do
10
+
11
+
12
+ # Reading the title
13
+
14
+ title = TagLib::RIFF::WAV::File.open("#{DATA_FILE_PREFIX}sample.wav") do |file|
15
+ file.tag.title
16
+ end
17
+
18
+ # Reading WAV-specific audio properties
19
+
20
+ TagLib::RIFF::WAV::File.open("#{DATA_FILE_PREFIX}sample.wav") do |file|
21
+ file.audio_properties.sample_width #=> 8
22
+ end
23
+
24
+ # Saving ID3v2 cover-art to disk
25
+
26
+ TagLib::RIFF::WAV::File.open("#{DATA_FILE_PREFIX}sample.wav") do |file|
27
+ id3v2_tag = file.tag
28
+ cover = id3v2_tag.frame_list('APIC').first
29
+ ext = cover.mime_type.rpartition('/')[2]
30
+ File.open("#{DATA_FILE_PREFIX}cover-art.#{ext}", "wb") { |f| f.write cover.picture }
31
+ end
32
+
33
+
34
+ # checks
35
+ assert_equal "WAV Dummy Track Title", title
36
+ assert_equal true, File.exist?("#{DATA_FILE_PREFIX}cover-art.jpeg")
37
+ FileUtils.rm("#{DATA_FILE_PREFIX}cover-art.jpeg")
38
+ end
39
+
40
+ end
41
+
42
+ end
@@ -0,0 +1,96 @@
1
+ require File.join(File.dirname(__FILE__), 'helper')
2
+
3
+ class WAVFileTest < Test::Unit::TestCase
4
+
5
+ SAMPLE_FILE = "test/data/wav-sample.wav"
6
+ PICTURE_FILE = "test/data/globe_east_540.jpg"
7
+
8
+ context "TagLib::RIFF::WAV::File" do
9
+ setup do
10
+ @file = TagLib::RIFF::WAV::File.new(SAMPLE_FILE)
11
+ @tag = @file.tag
12
+ end
13
+
14
+ should "open" do
15
+ assert_not_nil @file
16
+ end
17
+
18
+ should "have an ID3v2 tag" do
19
+ assert_not_nil @tag
20
+ assert_equal TagLib::ID3v2::Tag, @tag.class
21
+ end
22
+
23
+ should "contain basic tag information" do
24
+ assert_equal "WAV Dummy Track Title", @tag.title
25
+ assert_equal "WAV Dummy Artist Name", @tag.artist
26
+ assert_equal "WAV Dummy Album Title", @tag.album
27
+ assert_equal "WAV Dummy Comment", @tag.comment
28
+ assert_equal "Jazz", @tag.genre
29
+ assert_equal 2014, @tag.year
30
+ assert_equal 5, @tag.track
31
+ assert_equal false, @tag.empty?
32
+ end
33
+
34
+ context "APIC frame" do
35
+ setup do
36
+ @picture_data = File.open(PICTURE_FILE, 'rb') { |f| f.read }
37
+ @apic = @tag.frame_list('APIC').first
38
+ end
39
+
40
+ should "exist" do
41
+ assert_not_nil @apic
42
+ assert_equal TagLib::ID3v2::AttachedPictureFrame, @apic.class
43
+ end
44
+
45
+ should "have a type" do
46
+ assert_equal TagLib::ID3v2::AttachedPictureFrame::FrontCover, @apic.type
47
+ end
48
+
49
+ should "have a mime type" do
50
+ assert_equal "image/jpeg", @apic.mime_type
51
+ end
52
+
53
+ should "have picture bytes" do
54
+ assert_equal 61649, @apic.picture.size
55
+ assert_equal @picture_data, @apic.picture
56
+ end
57
+ end
58
+
59
+ context "audio properties" do
60
+ setup do
61
+ @properties = @file.audio_properties
62
+ end
63
+
64
+ should "exist" do
65
+ assert_not_nil @properties
66
+ end
67
+
68
+ should "contain basic information" do
69
+ assert_equal 0, @properties.length
70
+ assert_equal 88, @properties.bitrate
71
+ assert_equal 11025, @properties.sample_rate
72
+ assert_equal 1, @properties.channels
73
+ end
74
+
75
+ should "contain WAV-specific information" do
76
+ assert_equal 8, @properties.sample_width
77
+ end
78
+ end
79
+
80
+ teardown do
81
+ @file.close
82
+ @file = nil
83
+ end
84
+ end
85
+
86
+ context "TagLib::RIFF::WAV::File.open" do
87
+ should "have open method" do
88
+ title = nil
89
+ TagLib::RIFF::WAV::File.open(SAMPLE_FILE, false) do |file|
90
+ title = file.tag.title
91
+ end
92
+ assert_equal "WAV Dummy Track Title", title
93
+ end
94
+ end
95
+
96
+ end
@@ -0,0 +1,88 @@
1
+ require File.join(File.dirname(__FILE__), 'helper')
2
+
3
+ class WAVFileWriteTest < Test::Unit::TestCase
4
+
5
+ SAMPLE_FILE = "test/data/wav-sample.wav"
6
+ OUTPUT_FILE = "test/data/_output.wav"
7
+ PICTURE_FILE = "test/data/globe_east_90.jpg"
8
+
9
+ def reloaded
10
+ TagLib::RIFF::WAV::File.open(OUTPUT_FILE, false) do |file|
11
+ yield file
12
+ end
13
+ end
14
+
15
+ context "TagLib::RIFF::WAV::File" do
16
+ setup do
17
+ FileUtils.cp SAMPLE_FILE, OUTPUT_FILE
18
+ @file = TagLib::RIFF::WAV::File.new(OUTPUT_FILE, false)
19
+ end
20
+
21
+ should "be able to save the title" do
22
+ tag = @file.tag
23
+ assert_not_nil tag
24
+ tag.title = "New Title"
25
+ success = @file.save
26
+ assert success
27
+ @file.close
28
+ @file = nil
29
+
30
+ written_title = reloaded do |file|
31
+ file.tag.title
32
+ end
33
+ assert_equal "New Title", written_title
34
+ end
35
+
36
+ should "have one picture frame" do
37
+ assert_equal 2, @file.tag.frame_list('APIC').size
38
+ end
39
+
40
+ should "be able to remove all picture frames" do
41
+ @file.tag.remove_frames('APIC')
42
+ success = @file.save
43
+ assert success
44
+ @file.close
45
+ @file = nil
46
+
47
+ reloaded do |file|
48
+ assert_equal 0, file.tag.frame_list('APIC').size
49
+ end
50
+ end
51
+
52
+ should "be able to add a picture frame" do
53
+ picture_data = File.open(PICTURE_FILE, 'rb') { |f| f.read }
54
+
55
+ apic = TagLib::ID3v2::AttachedPictureFrame.new
56
+ apic.mime_type = "image/jpeg"
57
+ apic.description = "desc"
58
+ apic.text_encoding = TagLib::String::UTF8
59
+ apic.picture = picture_data
60
+ apic.type = TagLib::ID3v2::AttachedPictureFrame::BackCover
61
+
62
+ @file.tag.add_frame(apic)
63
+ success = @file.save
64
+ assert success
65
+ @file.close
66
+ @file = nil
67
+
68
+ reloaded do |file|
69
+ assert_equal 3, file.tag.frame_list('APIC').size
70
+ end
71
+
72
+ reloaded do |file|
73
+ written_apic = file.tag.frame_list("APIC")[2]
74
+ assert_equal "image/jpeg", written_apic.mime_type
75
+ assert_equal "desc", written_apic.description
76
+ assert_equal picture_data, written_apic.picture
77
+ end
78
+ end
79
+
80
+ teardown do
81
+ if @file
82
+ @file.close
83
+ @file = nil
84
+ end
85
+ FileUtils.rm OUTPUT_FILE
86
+ end
87
+ end
88
+ end
metadata CHANGED
@@ -1,107 +1,93 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: taglib-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
5
- prerelease:
4
+ version: 0.7.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Robin Stocker
9
8
  - Jacob Vosmaer
9
+ - Thomas Chevereau
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-04-26 00:00:00.000000000 Z
13
+ date: 2014-08-21 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: bundler
17
17
  requirement: !ruby/object:Gem::Requirement
18
- none: false
19
18
  requirements:
20
- - - ~>
19
+ - - "~>"
21
20
  - !ruby/object:Gem::Version
22
21
  version: '1.2'
23
22
  type: :development
24
23
  prerelease: false
25
24
  version_requirements: !ruby/object:Gem::Requirement
26
- none: false
27
25
  requirements:
28
- - - ~>
26
+ - - "~>"
29
27
  - !ruby/object:Gem::Version
30
28
  version: '1.2'
31
29
  - !ruby/object:Gem::Dependency
32
30
  name: rake-compiler
33
31
  requirement: !ruby/object:Gem::Requirement
34
- none: false
35
32
  requirements:
36
- - - ~>
33
+ - - "~>"
37
34
  - !ruby/object:Gem::Version
38
- version: '0.8'
35
+ version: '0.9'
39
36
  type: :development
40
37
  prerelease: false
41
38
  version_requirements: !ruby/object:Gem::Requirement
42
- none: false
43
39
  requirements:
44
- - - ~>
40
+ - - "~>"
45
41
  - !ruby/object:Gem::Version
46
- version: '0.8'
42
+ version: '0.9'
47
43
  - !ruby/object:Gem::Dependency
48
44
  name: shoulda-context
49
45
  requirement: !ruby/object:Gem::Requirement
50
- none: false
51
46
  requirements:
52
- - - ~>
47
+ - - "~>"
53
48
  - !ruby/object:Gem::Version
54
49
  version: '1.0'
55
50
  type: :development
56
51
  prerelease: false
57
52
  version_requirements: !ruby/object:Gem::Requirement
58
- none: false
59
53
  requirements:
60
- - - ~>
54
+ - - "~>"
61
55
  - !ruby/object:Gem::Version
62
56
  version: '1.0'
63
57
  - !ruby/object:Gem::Dependency
64
58
  name: yard
65
59
  requirement: !ruby/object:Gem::Requirement
66
- none: false
67
60
  requirements:
68
- - - ~>
61
+ - - "~>"
69
62
  - !ruby/object:Gem::Version
70
63
  version: '0.7'
71
64
  type: :development
72
65
  prerelease: false
73
66
  version_requirements: !ruby/object:Gem::Requirement
74
- none: false
75
67
  requirements:
76
- - - ~>
68
+ - - "~>"
77
69
  - !ruby/object:Gem::Version
78
70
  version: '0.7'
79
71
  - !ruby/object:Gem::Dependency
80
72
  name: kramdown
81
73
  requirement: !ruby/object:Gem::Requirement
82
- none: false
83
74
  requirements:
84
- - - ~>
75
+ - - "~>"
85
76
  - !ruby/object:Gem::Version
86
77
  version: '1.0'
87
78
  type: :development
88
79
  prerelease: false
89
80
  version_requirements: !ruby/object:Gem::Requirement
90
- none: false
91
81
  requirements:
92
- - - ~>
82
+ - - "~>"
93
83
  - !ruby/object:Gem::Version
94
84
  version: '1.0'
95
- description: ! 'Ruby interface for the taglib C++ library, for reading and writing
96
-
85
+ description: |
86
+ Ruby interface for the taglib C++ library, for reading and writing
97
87
  meta-data (tags) of many audio formats.
98
88
 
99
-
100
89
  In contrast to other libraries, this one wraps the C++ API using SWIG,
101
-
102
90
  not only the minimal C API. This means that all tags can be accessed.
103
-
104
- '
105
91
  email:
106
92
  - robin@nibor.org
107
93
  executables: []
@@ -114,12 +100,14 @@ extensions:
114
100
  - ext/taglib_vorbis/extconf.rb
115
101
  - ext/taglib_flac/extconf.rb
116
102
  - ext/taglib_mp4/extconf.rb
103
+ - ext/taglib_aiff/extconf.rb
104
+ - ext/taglib_wav/extconf.rb
117
105
  extra_rdoc_files:
118
106
  - CHANGES.md
119
107
  - LICENSE.txt
120
108
  - README.md
121
109
  files:
122
- - .yardopts
110
+ - ".yardopts"
123
111
  - CHANGES.md
124
112
  - Gemfile
125
113
  - Guardfile
@@ -127,6 +115,7 @@ files:
127
115
  - README.md
128
116
  - Rakefile
129
117
  - docs/default/fulldoc/html/css/common.css
118
+ - docs/taglib/aiff.rb
130
119
  - docs/taglib/base.rb
131
120
  - docs/taglib/flac.rb
132
121
  - docs/taglib/id3v1.rb
@@ -134,8 +123,13 @@ files:
134
123
  - docs/taglib/mp4.rb
135
124
  - docs/taglib/mpeg.rb
136
125
  - docs/taglib/ogg.rb
126
+ - docs/taglib/riff.rb
137
127
  - docs/taglib/vorbis.rb
128
+ - docs/taglib/wav.rb
138
129
  - ext/extconf_common.rb
130
+ - ext/taglib_aiff/extconf.rb
131
+ - ext/taglib_aiff/taglib_aiff.i
132
+ - ext/taglib_aiff/taglib_aiff_wrap.cxx
139
133
  - ext/taglib_base/extconf.rb
140
134
  - ext/taglib_base/includes.i
141
135
  - ext/taglib_base/taglib_base.i
@@ -162,9 +156,13 @@ files:
162
156
  - ext/taglib_vorbis/extconf.rb
163
157
  - ext/taglib_vorbis/taglib_vorbis.i
164
158
  - ext/taglib_vorbis/taglib_vorbis_wrap.cxx
159
+ - ext/taglib_wav/extconf.rb
160
+ - ext/taglib_wav/taglib_wav.i
161
+ - ext/taglib_wav/taglib_wav_wrap.cxx
165
162
  - ext/valgrind-suppressions.txt
166
163
  - ext/win.cmake
167
164
  - lib/taglib.rb
165
+ - lib/taglib/aiff.rb
168
166
  - lib/taglib/base.rb
169
167
  - lib/taglib/flac.rb
170
168
  - lib/taglib/id3v1.rb
@@ -174,14 +172,19 @@ files:
174
172
  - lib/taglib/ogg.rb
175
173
  - lib/taglib/version.rb
176
174
  - lib/taglib/vorbis.rb
175
+ - lib/taglib/wav.rb
177
176
  - taglib-ruby.gemspec
178
177
  - tasks/docs_coverage.rake
179
178
  - tasks/ext.rake
180
179
  - tasks/gemspec_check.rake
181
180
  - tasks/swig.rake
181
+ - test/aiff_examples_test.rb
182
+ - test/aiff_file_test.rb
183
+ - test/aiff_file_write_test.rb
182
184
  - test/base_test.rb
183
185
  - test/data/Makefile
184
186
  - test/data/add-relative-volume.cpp
187
+ - test/data/aiff-sample.aiff
185
188
  - test/data/crash.mp3
186
189
  - test/data/flac-create.cpp
187
190
  - test/data/flac.flac
@@ -197,12 +200,16 @@ files:
197
200
  - test/data/unicode.mp3
198
201
  - test/data/vorbis-create.cpp
199
202
  - test/data/vorbis.oga
200
- - test/helper.rb
203
+ - test/data/wav-create.cpp
204
+ - test/data/wav-dump.cpp
205
+ - test/data/wav-sample.wav
206
+ - test/file_test.rb
201
207
  - test/fileref_open_test.rb
202
208
  - test/fileref_properties_test.rb
203
209
  - test/fileref_write_test.rb
204
210
  - test/flac_file_test.rb
205
211
  - test/flac_file_write_test.rb
212
+ - test/helper.rb
206
213
  - test/id3v1_tag_test.rb
207
214
  - test/id3v2_frames_test.rb
208
215
  - test/id3v2_header_test.rb
@@ -210,6 +217,7 @@ files:
210
217
  - test/id3v2_relative_volume_test.rb
211
218
  - test/id3v2_tag_test.rb
212
219
  - test/id3v2_unicode_test.rb
220
+ - test/id3v2_unknown_frames_test.rb
213
221
  - test/id3v2_write_test.rb
214
222
  - test/mp4_file_test.rb
215
223
  - test/mp4_file_write_test.rb
@@ -219,37 +227,33 @@ files:
219
227
  - test/unicode_filename_test.rb
220
228
  - test/vorbis_file_test.rb
221
229
  - test/vorbis_tag_test.rb
230
+ - test/wav_examples_test.rb
231
+ - test/wav_file_test.rb
232
+ - test/wav_file_write_test.rb
222
233
  homepage: http://robinst.github.io/taglib-ruby/
223
234
  licenses:
224
235
  - MIT
236
+ metadata: {}
225
237
  post_install_message:
226
238
  rdoc_options: []
227
239
  require_paths:
228
240
  - lib
229
241
  required_ruby_version: !ruby/object:Gem::Requirement
230
- none: false
231
242
  requirements:
232
- - - ! '>='
243
+ - - ">="
233
244
  - !ruby/object:Gem::Version
234
245
  version: '0'
235
- segments:
236
- - 0
237
- hash: -3989506221310826679
238
246
  required_rubygems_version: !ruby/object:Gem::Requirement
239
- none: false
240
247
  requirements:
241
- - - ! '>='
248
+ - - ">="
242
249
  - !ruby/object:Gem::Version
243
250
  version: '0'
244
- segments:
245
- - 0
246
- hash: -3989506221310826679
247
251
  requirements:
248
252
  - taglib (libtag1-dev in Debian/Ubuntu, taglib-devel in Fedora/RHEL)
249
253
  rubyforge_project:
250
- rubygems_version: 1.8.24
254
+ rubygems_version: 2.2.2
251
255
  signing_key:
252
- specification_version: 3
256
+ specification_version: 4
253
257
  summary: Ruby interface for the taglib C++ library
254
258
  test_files: []
255
259
  has_rdoc: