taglib-ruby 0.6.0 → 0.7.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 (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: