vorbis_comment 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,35 @@
1
+ require 'rake'
2
+ require 'rake/clean'
3
+ require 'rake/rdoctask'
4
+
5
+ CLEAN.include %w"rdoc vorbis_comment_ext.*o vcedit.o Makefile mkmf.log vorbis_comment-*.gem"
6
+
7
+ Rake::RDocTask.new do |rdoc|
8
+ rdoc.rdoc_dir = "rdoc"
9
+ rdoc.options += ["--quiet", "--line-numbers", "--inline-source"]
10
+ rdoc.main = "vorbis_comment.rb"
11
+ rdoc.title = "ruby-vorbis_comment: Vorbis Comment Reader/Writer Library"
12
+ rdoc.rdoc_files.add ["LICENSE", "vorbis_comment.rb"]
13
+ end
14
+
15
+ desc "Update docs and upload to rubyforge.org"
16
+ task :doc_rforge => [:rdoc]
17
+ task :doc_rforge do
18
+ sh %{chmod -R g+w rdoc/*}
19
+ sh %{scp -rp rdoc/* rubyforge.org:/var/www/gforge-projects/vorbiscomment}
20
+ end
21
+
22
+ desc "Package ruby-vorbis_comment"
23
+ task :package do
24
+ sh %{gem build vorbis_comment.gemspec}
25
+ end
26
+
27
+ desc "Build extension"
28
+ task :build => :clean do
29
+ sh %{ruby extconf.rb && make}
30
+ end
31
+
32
+ desc "Run tests"
33
+ task :default do
34
+ sh %{ruby test/test_vorbis_comment.rb}
35
+ end
Binary file
@@ -41,6 +41,7 @@ class VorbisCommentTest < Test::Unit::TestCase
41
41
  assert_equal true, vc('blank.ogg').exists?
42
42
  # Corrupt tags are considered not to exist
43
43
  assert_equal false, vc('corrupt.ogg').exists?
44
+ assert_equal false, vc('empty_key.ogg').exists?
44
45
  # Files that aren't ogg files will be treated similarly
45
46
  assert_equal false, vc('test_vorbis_comment.rb').exists?
46
47
  # But nonexistant files raise an OpenError
@@ -51,6 +52,7 @@ class VorbisCommentTest < Test::Unit::TestCase
51
52
  assert_equal Hash[], vc('blank.ogg').fields
52
53
  assert_equal Hash['title'=>['Silence']], vc('title.ogg').fields
53
54
  assert_equal Hash[{"ARTIST"=>["Test Artist 1", "Test Artist 2"], "TrackNumber"=>["1"], "Album"=>["Test Album"], "Title"=>["Test Title"], "Date"=>["1999-12-31"], "comment"=>[""]}], vc('manyfields.ogg').fields
55
+ assert_raises(VorbisComment::InvalidDataError){vc('empty_key.ogg').fields}
54
56
  assert_raises(VorbisComment::InvalidDataError){vc('corrupt.ogg').fields}
55
57
  assert_raises(VorbisComment::OpenError){vc('nonexistant.ogg').fields}
56
58
  end
@@ -59,6 +61,7 @@ class VorbisCommentTest < Test::Unit::TestCase
59
61
  assert_equal Hash[], work_with_copy('blank.ogg'){|filename| VorbisComment.new(filename).remove!}
60
62
  assert_equal Hash[], work_with_copy('title.ogg'){|filename| VorbisComment.new(filename).remove!}
61
63
  assert_equal Hash[], work_with_copy('manyfields.ogg'){|filename| VorbisComment.new(filename).remove!}
64
+ assert_raises(VorbisComment::InvalidDataError){work_with_copy('empty_key.ogg'){|filename| VorbisComment.new(filename).remove!}}
62
65
  assert_raises(VorbisComment::InvalidDataError){work_with_copy('corrupt.ogg'){|filename| VorbisComment.new(filename).remove!}}
63
66
  assert_raises(VorbisComment::OpenError){VorbisComment.new('nonexistant.ogg').remove!}
64
67
  end
@@ -67,17 +70,19 @@ class VorbisCommentTest < Test::Unit::TestCase
67
70
  assert_equal "", vc('blank.ogg').pretty_print
68
71
  assert_equal "title: Silence", vc('title.ogg').pretty_print
69
72
  assert_equal "ARTIST: Test Artist 1, Test Artist 2\nAlbum: Test Album\nDate: 1999-12-31\nTitle: Test Title\nTrackNumber: 1\ncomment: ", vc('manyfields.ogg').pretty_print
73
+ assert_equal "CORRUPT TAG!", vc('empty_key.ogg').pretty_print
70
74
  assert_equal "CORRUPT TAG!", vc('corrupt.ogg').pretty_print
71
75
  assert_equal "CORRUPT TAG!", vc('test_vorbis_comment.rb').pretty_print
72
76
  end
73
77
 
74
78
  def test_update
75
79
  f = {'Blah'=>['Blah']}
80
+ assert_raises(VorbisComment::InvalidDataError){work_with_copy('empty_key.ogg'){|filename| VorbisComment.new(filename).update{|fields| fields.merge!(f)}}}
76
81
  assert_raises(VorbisComment::InvalidDataError){work_with_copy('corrupt.ogg'){|filename| VorbisComment.new(filename).update{|fields| fields.merge!(f)}}}
77
82
  assert_raises(VorbisComment::OpenError){VorbisComment.new('nonexistant.ogg').update{|fields| fields.merge!(f)}}
78
83
 
79
- g = {'x'=>'y', 'y'=>:z, :z=>[:A], :zz=>[['A'], [[[:b]], 'c']]}
80
- h = {'x'=>['y'], 'y'=>['z'], 'z'=>['A'], 'zz'=>['A', 'bc']}
84
+ g = {'x'=>'y', 'y'=>:z, :z=>[:A], :zz=>['A', :b, 'c']}
85
+ h = {'x'=>['y'], 'y'=>['z'], 'z'=>['A'], 'zz'=>['A', 'b', 'c']}
81
86
 
82
87
  %w'blank.ogg title.ogg manyfields.ogg'.each do |fname|
83
88
  work_with_copy(fname) do |filename|
@@ -116,11 +121,11 @@ class VorbisCommentTest < Test::Unit::TestCase
116
121
  v.send(:add_to_fields, 'A', 'b')
117
122
  assert_equal CICPHash['A'=>['b']], v.fields
118
123
  assert_equal [['A', 'b']], v.send(:normalize_fields)
119
- v.send(:add_to_fields, :a, ['C'])
120
- assert_equal CICPHash['A'=>['b',['C']]], v.fields
124
+ v.send(:add_to_fields, :a, 'C')
125
+ assert_equal CICPHash['A'=>['b','C']], v.fields
121
126
  assert_equal [['A', 'C'], ['A', 'b']], v.send(:normalize_fields)
122
127
  v.send(:add_to_fields, 12, 42)
123
- assert_equal CICPHash['A'=>['b',['C']], 12=>[42]], v.fields
128
+ assert_equal CICPHash['A'=>['b','C'], 12=>[42]], v.fields
124
129
  assert_equal [['12', '42'], ['A', 'C'], ['A', 'b']], v.send(:normalize_fields)
125
130
  v.update{}
126
131
  assert_equal CICPHash['A'=>['C','b'], '12'=>['42']], VorbisComment.new(filename).fields
@@ -1,6 +1,6 @@
1
1
  spec = Gem::Specification.new do |s|
2
2
  s.name = "vorbis_comment"
3
- s.version = "1.0.0"
3
+ s.version = "1.0.1"
4
4
  s.author = "Jeremy Evans"
5
5
  s.email = "code@jeremyevans.net"
6
6
  s.homepage = "http://rubyforge.org/projects/vorbiscomment/"
@@ -9,11 +9,10 @@ spec = Gem::Specification.new do |s|
9
9
  s.files = Dir["*"]
10
10
  s.require_paths = ["."]
11
11
  s.extensions << 'extconf.rb'
12
- s.autorequire = "vorbis_comment"
13
12
  s.test_files = Dir["test/*"]
14
13
  s.has_rdoc = true
15
14
  s.rdoc_options = %w'--inline-source --line-numbers'
16
15
  s.add_dependency('cicphash', [">= 1.0.0"])
17
16
  s.rubyforge_project = 'vorbiscomment'
17
+ s.homepage = 'http://vorbiscomment.rubyforge.org'
18
18
  end
19
-
@@ -1,164 +1,165 @@
1
- #!/usr/bin/env ruby
2
- # This library implements a Vorbis Comment reader/writer.
3
- # If called from the command line, it prints out the contents of the APEv2 tag
4
- # for the given filename arguments.
5
- #
6
- # ruby-vorbis_comment is a pure Ruby library for manipulating Vorbis comments.
7
- # It wraps libvorbis and libogg, so it should be completely standards
8
- # compatible. Vorbis comment is the standard tagging format for Ogg Vorbis,
9
- # FLAC, and Speex files.
10
- #
11
- # The library includes a C extension, which may or may not build cleanly on all
12
- # architectures. It is developed and tested on OpenBSD i386 and amd64. If it
13
- # doesn't work on your machine, please try to get it to work and send in a
14
- # patch.
15
- #
16
- # This library tries to be API compatible with ruby-apetag, a library for
17
- # reading and writing APE tags, the standard tagging format for Musepack and
18
- # Monkey's Audio, which can also be used with MP3s as an alternative to ID3v2.
19
- #
20
- # General Use:
21
- #
22
- # require 'vorbiscomment'
23
- # a = VorbisComment.new('file.ogg')
24
- # a.exists? # if it already has an vorbis comment
25
- # a.fields # a CICPHash of fields, keys are strings, values are lists of strings
26
- # a.pretty_print # string suitable for pretty printing
27
- # a.update{|fields| fields['Artist']='Test Artist'; fields.delete('Year')}
28
- # # Update the tag with the added/changed/deleted fields
29
- # # Note that you should do: a.update{|fields| fields.replace('Test'=>'Test')}
30
- # # and NOT: a.update{|fields| fields = {'Test'=>'Test'}}
31
- # # You need to update/modify the fields given, not reassign it
32
- # a.remove! # clear the list of vorbis comments from the file
33
- #
34
- # To run the tests for the library, run test_vorbis_comment.rb.
35
- #
36
- # If you find any bugs, would like additional documentation, or want to submit a
37
- # patch, please use Rubyforge (http://rubyforge.org/projects/vorbis_comment/).
38
- # One known bug is in the libvorbis library, in that it doesn't like files less
39
- # than 8K in size.
40
- #
41
- # The most current source code can be accessed via anonymous SVN at
42
- # svn://code.jeremyevans.net/ruby-vorbis_comment/. Note that the library isn't
43
- # modified on a regular basis, so it is unlikely to be different from the latest
44
- # release.
45
- #
46
- # The pure ruby part of this library is copyright Jeremy Evans and is released
47
- # under the MIT License.
48
- #
49
- # The C part of this library is copyright Jeremy Evans and Tilman Sauerbeck and
50
- # is licensed under the GNU LGPL.
51
- #
52
- # Copyright (c) 2007 Jeremy Evans
53
- #
54
- # Permission is hereby granted, free of charge, to any person obtaining a copy
55
- # of this software and associated documentation files (the "Software"), to deal
56
- # in the Software without restriction, including without limitation the rights
57
- # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
58
- # copies of the Software, and to permit persons to whom the Software is
59
- # furnished to do so, subject to the following conditions:
60
- #
61
- # The above copyright notice and this permission notice shall be included in
62
- # all copies or substantial portions of the Software.
63
- #
64
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
65
- # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
66
- # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
67
- # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
68
- # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
69
- # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
70
- # SOFTWARE.
71
-
72
- require 'cicphash'
73
-
74
- # Contains all of the Vorbis comment fields found in the filename/file given.
75
- class VorbisComment
76
- attr_reader :filename
77
- BAD_KEY_RE = /[\x00-\x1f=\x7e-\xff]/
78
-
79
- # Set the filename to be used
80
- def initialize(filename)
81
- @filename = filename.to_s
82
- end
83
-
84
- # Check for the existance of the a vorbis comment in the file.
85
- # Because all Vorbis bitstreams should have a comment, any file missing
86
- # a comment probably isn't a vorbis file, or it's possible the file is
87
- # corrupt.
88
- def exists?
89
- begin
90
- fields
91
- true
92
- rescue InvalidDataError
93
- false
94
- end
95
- end
96
-
97
- # Clear all fields from the vorbis comment
98
- def remove!
99
- update{|fields| fields.clear}
100
- end
101
-
102
- # Get all the fields in the vorbis comment
103
- def fields
104
- return @fields if @fields
105
- @fields = CICPHash.new
106
- read_fields
107
- @fields
108
- end
109
-
110
- # Return a string suitable for pretty printing, used by the command line
111
- def pretty_print
112
- begin
113
- fields.sort.collect{|key, value| "#{key}: #{value.join(', ')}"}.join("\n")
114
- rescue OpenError
115
- "FILE NOT FOUND!"
116
- rescue InvalidDataError, InvalidCommentError
117
- "CORRUPT TAG!"
118
- end
119
- end
120
-
121
- # Update the vorbis comment with the changes that occur to fields inside the
122
- # block. Make sure to modify the fields given and not reassign them.
123
- def update(&block)
124
- yield fields
125
- write_fields(normalize_fields)
126
- fields
127
- end
128
-
129
- private
130
- # Return a array with key/value pairs so that keys with multiple values
131
- # have multiple entries. This is used mainly to make the C extension
132
- # easier to code.
133
- def normalize_fields
134
- comments = []
135
- fields.each do |key, values|
136
- key = key.to_s
137
- raise InvalidCommentError if key =~ BAD_KEY_RE
138
- values = [values] unless values.is_a?(Array)
139
- values = values.collect{|value| value.to_s}
140
- values.each do |value|
141
- value.unpack('U*') rescue (raise InvalidCommentError)
142
- comments << [key, value]
143
- end
144
- end
145
- comments.sort
146
- end
147
-
148
- # Add a value for the given key to the list of values for that key, creating
149
- # the list if this is the first value for that key. This is used to make
150
- # the C extension easier to code.
151
- def add_to_fields(key, value)
152
- (fields[key] ||= []) << value
153
- end
154
- end
155
-
156
- require 'vorbis_comment_ext' # define read_fields and write_fields
157
-
158
- # If called directly from the command line, treat all arguments as filenames
159
- # and pretty print the vorbis comment fields for each filename.
160
- if __FILE__ == $0
161
- ARGV.each do |filename|
162
- puts filename, '-'*filename.length, VorbisComment.new(filename).pretty_print, ''
163
- end
164
- end
1
+ #!/usr/bin/env ruby
2
+ # This library implements a Vorbis Comment reader/writer.
3
+ # If called from the command line, it prints out the contents of the APEv2 tag
4
+ # for the given filename arguments.
5
+ #
6
+ # ruby-vorbis_comment is a pure Ruby library for manipulating Vorbis comments.
7
+ # It wraps libvorbis and libogg, so it should be completely standards
8
+ # compatible. Vorbis comment is the standard tagging format for Ogg Vorbis,
9
+ # FLAC, and Speex files.
10
+ #
11
+ # The library includes a C extension, which may or may not build cleanly on all
12
+ # architectures. It is developed and tested on OpenBSD i386 and amd64. If it
13
+ # doesn't work on your machine, please try to get it to work and send in a
14
+ # patch.
15
+ #
16
+ # This library tries to be API compatible with ruby-apetag, a library for
17
+ # reading and writing APE tags, the standard tagging format for Musepack and
18
+ # Monkey's Audio, which can also be used with MP3s as an alternative to ID3v2.
19
+ #
20
+ # General Use:
21
+ #
22
+ # require 'vorbiscomment'
23
+ # a = VorbisComment.new('file.ogg')
24
+ # a.exists? # if it already has an vorbis comment
25
+ # a.fields # a CICPHash of fields, keys are strings, values are lists of strings
26
+ # a.pretty_print # string suitable for pretty printing
27
+ # a.update{|fields| fields['Artist']='Test Artist'; fields.delete('Year')}
28
+ # # Update the tag with the added/changed/deleted fields
29
+ # # Note that you should do: a.update{|fields| fields.replace('Test'=>'Test')}
30
+ # # and NOT: a.update{|fields| fields = {'Test'=>'Test'}}
31
+ # # You need to update/modify the fields given, not reassign it
32
+ # a.remove! # clear the list of vorbis comments from the file
33
+ #
34
+ # To run the tests for the library, run test_vorbis_comment.rb.
35
+ #
36
+ # If you find any bugs, would like additional documentation, or want to submit a
37
+ # patch, please use Rubyforge (http://rubyforge.org/projects/vorbis_comment/).
38
+ # One known bug is that it doesn't like files less than 8K in size.
39
+ #
40
+ # The RDoc for the project is available on http://vorbiscomment.rubyforge.org.
41
+ #
42
+ # The most current source code can be accessed via github
43
+ # (http://github.com/jeremyevans/ruby-vorbis_comment/). Note that
44
+ # the library isn't modified on a regular basis, so it is unlikely to be
45
+ # different from the latest release.
46
+ #
47
+ # The pure ruby part of this library is copyright Jeremy Evans and is released
48
+ # under the MIT License.
49
+ #
50
+ # The C part of this library is copyright Jeremy Evans and Tilman Sauerbeck and
51
+ # is licensed under the GNU LGPL.
52
+ #
53
+ # Copyright (c) 2007,2010 Jeremy Evans
54
+ #
55
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
56
+ # of this software and associated documentation files (the "Software"), to deal
57
+ # in the Software without restriction, including without limitation the rights
58
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
59
+ # copies of the Software, and to permit persons to whom the Software is
60
+ # furnished to do so, subject to the following conditions:
61
+ #
62
+ # The above copyright notice and this permission notice shall be included in
63
+ # all copies or substantial portions of the Software.
64
+ #
65
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
66
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
67
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
68
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
69
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
70
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
71
+ # SOFTWARE.
72
+
73
+ require 'cicphash'
74
+
75
+ # Contains all of the Vorbis comment fields found in the filename/file given.
76
+ class VorbisComment
77
+ attr_reader :filename
78
+ BAD_KEY_RE = /[\x00-\x1f=\x7e-\xff]/
79
+
80
+ # Set the filename to be used
81
+ def initialize(filename)
82
+ @filename = filename.to_s
83
+ end
84
+
85
+ # Check for the existance of the a vorbis comment in the file.
86
+ # Because all Vorbis bitstreams should have a comment, any file missing
87
+ # a comment probably isn't a vorbis file, or it's possible the file is
88
+ # corrupt.
89
+ def exists?
90
+ begin
91
+ fields
92
+ true
93
+ rescue InvalidDataError
94
+ false
95
+ end
96
+ end
97
+
98
+ # Clear all fields from the vorbis comment
99
+ def remove!
100
+ update{|fields| fields.clear}
101
+ end
102
+
103
+ # Get all the fields in the vorbis comment
104
+ def fields
105
+ return @fields if @fields
106
+ @fields = CICPHash.new
107
+ read_fields
108
+ @fields
109
+ end
110
+
111
+ # Return a string suitable for pretty printing, used by the command line
112
+ def pretty_print
113
+ begin
114
+ fields.sort.collect{|key, value| "#{key}: #{value.join(', ')}"}.join("\n")
115
+ rescue OpenError
116
+ "FILE NOT FOUND!"
117
+ rescue InvalidDataError, InvalidCommentError
118
+ "CORRUPT TAG!"
119
+ end
120
+ end
121
+
122
+ # Update the vorbis comment with the changes that occur to fields inside the
123
+ # block. Make sure to modify the fields given and not reassign them.
124
+ def update(&block)
125
+ yield fields
126
+ write_fields(normalize_fields)
127
+ fields
128
+ end
129
+
130
+ private
131
+ # Return a array with key/value pairs so that keys with multiple values
132
+ # have multiple entries. This is used mainly to make the C extension
133
+ # easier to code.
134
+ def normalize_fields
135
+ comments = []
136
+ fields.each do |key, values|
137
+ key = key.to_s
138
+ raise InvalidCommentError if key =~ BAD_KEY_RE
139
+ values = [values] unless values.is_a?(Array)
140
+ values = values.collect{|value| value.to_s}
141
+ values.each do |value|
142
+ value.unpack('U*') rescue (raise InvalidCommentError)
143
+ comments << [key, value]
144
+ end
145
+ end
146
+ comments.sort
147
+ end
148
+
149
+ # Add a value for the given key to the list of values for that key, creating
150
+ # the list if this is the first value for that key. This is used to make
151
+ # the C extension easier to code.
152
+ def add_to_fields(key, value)
153
+ (fields[key] ||= []) << value
154
+ end
155
+ end
156
+
157
+ require 'vorbis_comment_ext' # define read_fields and write_fields
158
+
159
+ # If called directly from the command line, treat all arguments as filenames
160
+ # and pretty print the vorbis comment fields for each filename.
161
+ if __FILE__ == $0
162
+ ARGV.each do |filename|
163
+ puts filename, '-'*filename.length, VorbisComment.new(filename).pretty_print, ''
164
+ end
165
+ end
@@ -76,7 +76,7 @@ VALUE read_fields (VALUE self) {
76
76
  char *ptr, *content = vc->user_comments[i];
77
77
 
78
78
  ptr = strchr (content, '=');
79
- if (!ptr || ptr == content) {
79
+ if (!ptr) {
80
80
  rb_funcall(fields, rb_intern("clear"), 0);
81
81
  vcedit_state_unref(state);
82
82
  rb_raise (eInvalidComment, "invalid comment - %s", content);
@@ -125,9 +125,9 @@ VALUE write_fields (VALUE self, VALUE comments) {
125
125
  vorbis_comment_init(vc);
126
126
 
127
127
  items = RARRAY(comments);
128
- for (i = 0; i < items->len; i++) {
129
- comment = RARRAY(items->ptr[i]);
130
- vorbis_comment_add_tag(vc, StringValuePtr(comment->ptr[0]), StringValuePtr(comment->ptr[1]));
128
+ for (i = 0; i < RARRAY_LEN(items); i++) {
129
+ comment = RARRAY_PTR(items)[i];
130
+ vorbis_comment_add_tag(vc, StringValuePtr(RARRAY_PTR(comment)[0]), StringValuePtr(RARRAY_PTR(comment)[1]));
131
131
  }
132
132
 
133
133
  switch (vcedit_write (state)) {
metadata CHANGED
@@ -1,68 +1,103 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.9.0
3
- specification_version: 1
4
2
  name: vorbis_comment
5
3
  version: !ruby/object:Gem::Version
6
- version: 1.0.0
7
- date: 2007-09-11 00:00:00 -07:00
8
- summary: Vorbis Comment Reader/Writer Library
9
- require_paths:
10
- - .
11
- email: code@jeremyevans.net
12
- homepage: http://rubyforge.org/projects/vorbiscomment/
13
- rubyforge_project: vorbiscomment
14
- description:
15
- autorequire: vorbis_comment
16
- default_executable:
17
- bindir: bin
18
- has_rdoc: true
19
- required_ruby_version: !ruby/object:Gem::Version::Requirement
20
- requirements:
21
- - - ">"
22
- - !ruby/object:Gem::Version
23
- version: 0.0.0
24
- version:
4
+ hash: 21
5
+ prerelease: false
6
+ segments:
7
+ - 1
8
+ - 0
9
+ - 1
10
+ version: 1.0.1
25
11
  platform: ruby
26
- signing_key:
27
- cert_chain:
28
- post_install_message:
29
12
  authors:
30
13
  - Jeremy Evans
31
- files:
32
- - LICENSE
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-09-20 00:00:00 -07:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: cicphash
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 23
30
+ segments:
31
+ - 1
32
+ - 0
33
+ - 0
34
+ version: 1.0.0
35
+ type: :runtime
36
+ version_requirements: *id001
37
+ description:
38
+ email: code@jeremyevans.net
39
+ executables: []
40
+
41
+ extensions:
33
42
  - extconf.rb
34
- - test
43
+ extra_rdoc_files: []
44
+
45
+ files:
35
46
  - vcedit.c
36
47
  - vcedit.h
37
48
  - vorbis_comment.gemspec
38
49
  - vorbis_comment.rb
39
50
  - vorbis_comment_ext.c
40
- - vorbis_comment-1.0.0.gem
41
- test_files:
42
- - test/test_vorbis_comment.rb
51
+ - Rakefile
52
+ - LICENSE
53
+ - extconf.rb
43
54
  - test/manyfields.ogg
44
55
  - test/corrupt.ogg
45
56
  - test/lt8k.ogg
46
57
  - test/blank.ogg
58
+ - test/test_vorbis_comment.rb
47
59
  - test/title.ogg
60
+ - test/empty_key.ogg
61
+ has_rdoc: true
62
+ homepage: http://vorbiscomment.rubyforge.org
63
+ licenses: []
64
+
65
+ post_install_message:
48
66
  rdoc_options:
49
67
  - --inline-source
50
68
  - --line-numbers
51
- extra_rdoc_files: []
52
-
53
- executables: []
54
-
55
- extensions:
56
- - extconf.rb
69
+ require_paths:
70
+ - .
71
+ required_ruby_version: !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ hash: 3
77
+ segments:
78
+ - 0
79
+ version: "0"
80
+ required_rubygems_version: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ hash: 3
86
+ segments:
87
+ - 0
88
+ version: "0"
57
89
  requirements: []
58
90
 
59
- dependencies:
60
- - !ruby/object:Gem::Dependency
61
- name: cicphash
62
- version_requirement:
63
- version_requirements: !ruby/object:Gem::Version::Requirement
64
- requirements:
65
- - - ">="
66
- - !ruby/object:Gem::Version
67
- version: 1.0.0
68
- version:
91
+ rubyforge_project: vorbiscomment
92
+ rubygems_version: 1.3.7
93
+ signing_key:
94
+ specification_version: 3
95
+ summary: Vorbis Comment Reader/Writer Library
96
+ test_files:
97
+ - test/manyfields.ogg
98
+ - test/corrupt.ogg
99
+ - test/lt8k.ogg
100
+ - test/blank.ogg
101
+ - test/test_vorbis_comment.rb
102
+ - test/title.ogg
103
+ - test/empty_key.ogg
File without changes