taglib-ruby 1.0.1 → 1.1.2

Sign up to get free protection for your applications and to get access to all the features.
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 {