taglib-ruby 1.0.1 → 1.1.2

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 (102) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +33 -0
  3. data/.yardopts +1 -1
  4. data/CHANGELOG.md +15 -0
  5. data/Gemfile +2 -0
  6. data/Guardfile +4 -2
  7. data/README.md +56 -38
  8. data/Rakefile +8 -8
  9. data/docs/taglib/aiff.rb +0 -3
  10. data/docs/taglib/base.rb +0 -4
  11. data/docs/taglib/flac.rb +1 -3
  12. data/docs/taglib/id3v2.rb +1 -1
  13. data/docs/taglib/mp4.rb +2 -4
  14. data/docs/taglib/mpeg.rb +0 -1
  15. data/docs/taglib/ogg.rb +0 -4
  16. data/docs/taglib/vorbis.rb +0 -1
  17. data/docs/taglib/wav.rb +0 -4
  18. data/ext/extconf_common.rb +24 -28
  19. data/ext/taglib_aiff/extconf.rb +2 -0
  20. data/ext/taglib_aiff/taglib_aiff_wrap.cxx +217 -178
  21. data/ext/taglib_base/extconf.rb +2 -0
  22. data/ext/taglib_base/includes.i +25 -0
  23. data/ext/taglib_base/taglib_base.i +21 -0
  24. data/ext/taglib_base/taglib_base_wrap.cxx +233 -191
  25. data/ext/taglib_flac/extconf.rb +2 -0
  26. data/ext/taglib_flac/taglib_flac_wrap.cxx +228 -189
  27. data/ext/taglib_flac_picture/extconf.rb +2 -0
  28. data/ext/taglib_flac_picture/taglib_flac_picture_wrap.cxx +210 -168
  29. data/ext/taglib_id3v1/extconf.rb +2 -0
  30. data/ext/taglib_id3v1/taglib_id3v1_wrap.cxx +223 -182
  31. data/ext/taglib_id3v2/extconf.rb +2 -0
  32. data/ext/taglib_id3v2/taglib_id3v2.i +17 -0
  33. data/ext/taglib_id3v2/taglib_id3v2_wrap.cxx +2923 -999
  34. data/ext/taglib_mp4/extconf.rb +2 -0
  35. data/ext/taglib_mp4/taglib_mp4_wrap.cxx +311 -281
  36. data/ext/taglib_mpeg/extconf.rb +2 -0
  37. data/ext/taglib_mpeg/taglib_mpeg_wrap.cxx +243 -206
  38. data/ext/taglib_ogg/extconf.rb +2 -0
  39. data/ext/taglib_ogg/taglib_ogg_wrap.cxx +214 -171
  40. data/ext/taglib_vorbis/extconf.rb +2 -0
  41. data/ext/taglib_vorbis/taglib_vorbis_wrap.cxx +217 -178
  42. data/ext/taglib_wav/extconf.rb +2 -0
  43. data/ext/taglib_wav/taglib_wav_wrap.cxx +217 -178
  44. data/lib/taglib/aiff.rb +2 -0
  45. data/lib/taglib/base.rb +3 -1
  46. data/lib/taglib/flac.rb +2 -0
  47. data/lib/taglib/id3v1.rb +2 -0
  48. data/lib/taglib/id3v2.rb +2 -0
  49. data/lib/taglib/mp4.rb +10 -13
  50. data/lib/taglib/mpeg.rb +2 -0
  51. data/lib/taglib/ogg.rb +2 -0
  52. data/lib/taglib/version.rb +4 -2
  53. data/lib/taglib/vorbis.rb +2 -0
  54. data/lib/taglib/wav.rb +2 -1
  55. data/lib/taglib.rb +4 -3
  56. data/taglib-ruby.gemspec +165 -162
  57. data/tasks/docs_coverage.rake +10 -8
  58. data/tasks/ext.rake +26 -25
  59. data/tasks/gemspec_check.rake +7 -5
  60. data/tasks/swig.rake +10 -11
  61. data/test/aiff_examples_test.rb +8 -13
  62. data/test/aiff_file_test.rb +29 -29
  63. data/test/aiff_file_write_test.rb +19 -20
  64. data/test/base_test.rb +4 -2
  65. data/test/data/add-relative-volume.cpp +7 -3
  66. data/test/data/flac-create.cpp +15 -5
  67. data/test/data/flac_nopic.flac +0 -0
  68. data/test/data/get_picture_data.cpp +5 -1
  69. data/test/data/id3v1-create.cpp +6 -3
  70. data/test/data/mp4-create.cpp +12 -4
  71. data/test/data/vorbis-create.cpp +12 -5
  72. data/test/data/wav-create.cpp +18 -3
  73. data/test/file_test.rb +7 -5
  74. data/test/fileref_open_test.rb +12 -10
  75. data/test/fileref_properties_test.rb +6 -4
  76. data/test/fileref_write_test.rb +14 -13
  77. data/test/flac_file_test.rb +32 -27
  78. data/test/flac_file_write_test.rb +17 -18
  79. data/test/flac_picture_memory_test.rb +39 -0
  80. data/test/helper.rb +3 -1
  81. data/test/id3v1_genres_test.rb +14 -12
  82. data/test/id3v1_tag_test.rb +7 -5
  83. data/test/id3v2_frames_test.rb +103 -34
  84. data/test/id3v2_header_test.rb +14 -13
  85. data/test/id3v2_memory_test.rb +21 -20
  86. data/test/id3v2_relative_volume_test.rb +11 -9
  87. data/test/id3v2_tag_test.rb +16 -14
  88. data/test/id3v2_unicode_test.rb +12 -10
  89. data/test/id3v2_unknown_frames_test.rb +7 -5
  90. data/test/id3v2_write_test.rb +28 -29
  91. data/test/mp4_file_test.rb +27 -26
  92. data/test/mp4_file_write_test.rb +12 -13
  93. data/test/mp4_items_test.rb +78 -79
  94. data/test/mpeg_file_test.rb +32 -30
  95. data/test/tag_test.rb +5 -3
  96. data/test/unicode_filename_test.rb +7 -7
  97. data/test/vorbis_file_test.rb +14 -12
  98. data/test/vorbis_tag_test.rb +46 -44
  99. data/test/wav_examples_test.rb +8 -16
  100. data/test/wav_file_test.rb +29 -29
  101. data/test/wav_file_write_test.rb +22 -23
  102. metadata +24 -21
@@ -1,3 +1,5 @@
1
+ # frozen-string-literal: true
2
+
1
3
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..'))
2
4
  require 'extconf_common'
3
5
 
@@ -3,6 +3,7 @@
3
3
  // Undefine macros we don't need for wrapping
4
4
  #define TAGLIB_EXPORT
5
5
  #define TAGLIB_IGNORE_MISSING_DESTRUCTOR
6
+ #define TAGLIB_DEPRECATED
6
7
 
7
8
  // Replaces the typemap from swigtype.swg and just adds the line
8
9
  // SWIG_RubyUnlinkObjects. This is done to be safe in the case when a
@@ -19,6 +20,8 @@
19
20
  %{
20
21
  #include <taglib/tstring.h>
21
22
  #include <taglib/tstringlist.h>
23
+ #include <taglib/tbytevector.h>
24
+ #include <taglib/tbytevectorlist.h>
22
25
  #include <taglib/tfile.h>
23
26
 
24
27
  #if defined(HAVE_RUBY_ENCODING_H) && HAVE_RUBY_ENCODING_H
@@ -88,6 +91,28 @@ TagLib::StringList ruby_array_to_taglib_string_list(VALUE ary) {
88
91
  return result;
89
92
  }
90
93
 
94
+ VALUE taglib_bytevectorlist_to_ruby_array(const TagLib::ByteVectorList & list) {
95
+ VALUE ary = rb_ary_new2(list.size());
96
+ for (TagLib::ByteVectorList::ConstIterator it = list.begin(); it != list.end(); it++) {
97
+ VALUE s = taglib_bytevector_to_ruby_string(*it);
98
+ rb_ary_push(ary, s);
99
+ }
100
+ return ary;
101
+ }
102
+
103
+ TagLib::ByteVectorList ruby_array_to_taglib_bytevectorlist(VALUE ary) {
104
+ TagLib::ByteVectorList result = TagLib::ByteVectorList();
105
+ if (NIL_P(ary)) {
106
+ return result;
107
+ }
108
+ for (long i = 0; i < RARRAY_LEN(ary); i++) {
109
+ VALUE e = rb_ary_entry(ary, i);
110
+ TagLib::ByteVector s = ruby_string_to_taglib_bytevector(e);
111
+ result.append(s);
112
+ }
113
+ return result;
114
+ }
115
+
91
116
  VALUE taglib_filename_to_ruby_string(TagLib::FileName filename) {
92
117
  VALUE result;
93
118
  #ifdef _WIN32
@@ -2,6 +2,7 @@
2
2
  %{
3
3
  #include <taglib/taglib.h>
4
4
  #include <taglib/tbytevector.h>
5
+ #include <taglib/tbytevectorlist.h>
5
6
  #include <taglib/tlist.h>
6
7
  #include <taglib/fileref.h>
7
8
  #include <taglib/tag.h>
@@ -12,6 +13,7 @@
12
13
  namespace TagLib {
13
14
  class StringList;
14
15
  class ByteVector;
16
+ class ByteVectorList;
15
17
 
16
18
  class String {
17
19
  public:
@@ -57,6 +59,22 @@ namespace TagLib {
57
59
  }
58
60
  %typemap(typecheck) const TagLib::ByteVector & = char *;
59
61
 
62
+ // ByteVectorList
63
+ %typemap(out) TagLib::ByteVectorList {
64
+ $result = taglib_bytevectorlist_to_ruby_array($1);
65
+ }
66
+ %typemap(out) TagLib::ByteVectorList * {
67
+ $result = taglib_bytevectorlist_to_ruby_array(*($1));
68
+ }
69
+ %typemap(in) TagLib::ByteVectorList & (TagLib::ByteVectorList tmp) {
70
+ tmp = ruby_array_to_taglib_bytevectorlist($input);
71
+ $1 = &tmp;
72
+ }
73
+ %typemap(in) TagLib::ByteVectorList * (TagLib::ByteVectorList tmp) {
74
+ tmp = ruby_array_to_taglib_bytevectorlist($input);
75
+ $1 = &tmp;
76
+ }
77
+
60
78
  // String
61
79
  %typemap(out) TagLib::String {
62
80
  $result = taglib_string_to_ruby_string($1);
@@ -78,6 +96,9 @@ namespace TagLib {
78
96
  tmp = ruby_array_to_taglib_string_list($input);
79
97
  $1 = &tmp;
80
98
  }
99
+ %typemap(typecheck, precedence=SWIG_TYPECHECK_LIST) TagLib::StringList {
100
+ $1 = TYPE($input) == T_ARRAY ? 1 : 0;
101
+ }
81
102
  %apply TagLib::StringList { TagLib::StringList &, const TagLib::StringList & };
82
103
 
83
104
  %typemap(out) TagLib::FileName {