id3 0.4.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.
- data/LICENSE.html +146 -0
- data/README +23 -0
- data/docs/Class_AudioFile.html +110 -0
- data/docs/Class_Frame.html +125 -0
- data/docs/Class_Tag1.html +121 -0
- data/docs/Class_Tag2.html +167 -0
- data/docs/ID3-Standards/id3v2-00.html +1669 -0
- data/docs/ID3-Standards/id3v2-00.txt +1660 -0
- data/docs/ID3-Standards/id3v2.3.0.html +2033 -0
- data/docs/ID3-Standards/id3v2.3.0.txt +2025 -0
- data/docs/ID3-Standards/id3v2.4.0-changes.html +159 -0
- data/docs/ID3-Standards/id3v2.4.0-changes.txt +149 -0
- data/docs/ID3-Standards/id3v2.4.0-frames.html +1743 -0
- data/docs/ID3-Standards/id3v2.4.0-frames.txt +1732 -0
- data/docs/ID3-Standards/id3v2.4.0-structure.html +742 -0
- data/docs/ID3-Standards/id3v2.4.0-structure.txt +732 -0
- data/docs/ID3_comparison.html +2121 -0
- data/docs/ID3_comparison2.html +2043 -0
- data/docs/ID3v2_frames_comparison.html +2121 -0
- data/docs/ID3v2_frames_comparison.txt +197 -0
- data/docs/ID3v2_frames_overview.txt +60 -0
- data/docs/Module_ID3.html +146 -0
- data/docs/id3.html +245 -0
- data/docs/index.html +252 -0
- data/index.html +8 -0
- data/lib/hexdump.rb +113 -0
- data/lib/id3.rb +1177 -0
- data/lib/invert_hash.rb +105 -0
- metadata +75 -0
data/lib/invert_hash.rb
ADDED
@@ -0,0 +1,105 @@
|
|
1
|
+
# ==============================================================================
|
2
|
+
# EXTENDING CLASS HASH
|
3
|
+
# ==============================================================================
|
4
|
+
#
|
5
|
+
# (C) Copyright 2004 by Tilo Sloboda <tools@unixgods.org>
|
6
|
+
#
|
7
|
+
# updated: Time-stamp: <Sat 18-Dec-2004 12:44:13 Tilo Sloboda>
|
8
|
+
#
|
9
|
+
# License:
|
10
|
+
# Freely available under the terms of the OpenSource "Artistic License"
|
11
|
+
# in combination with the Addendum A (below)
|
12
|
+
#
|
13
|
+
# In case you did not get a copy of the license along with the software,
|
14
|
+
# it is also available at: http://www.unixgods.org/~tilo/artistic-license.html
|
15
|
+
#
|
16
|
+
# Addendum A:
|
17
|
+
# THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU!
|
18
|
+
# SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
19
|
+
# REPAIR OR CORRECTION.
|
20
|
+
#
|
21
|
+
# IN NO EVENT WILL THE COPYRIGHT HOLDERS BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL,
|
22
|
+
# SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY
|
23
|
+
# TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED
|
24
|
+
# INACCURATE OR USELESS OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM
|
25
|
+
# TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF THE COPYRIGHT HOLDERS OR OTHER PARTY HAS BEEN
|
26
|
+
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
27
|
+
|
28
|
+
# ==============================================================================
|
29
|
+
#
|
30
|
+
# Homepage: http://www.unixgods.org/~tilo/Ruby/invert_hash.html
|
31
|
+
#
|
32
|
+
#
|
33
|
+
# Ruby's Hash.invert method leaves a lot to wish for.. it can't handle the
|
34
|
+
# common case that two or more hash entries point to the same value..
|
35
|
+
#
|
36
|
+
# e.g.:
|
37
|
+
# h = {"ooh gott"=>3, "bla"=>3, "aua"=>3, "kotz"=>2, "blubb"=>9, "seier"=>3, "schigga"=>9}
|
38
|
+
# h.invert
|
39
|
+
# => {2=>"kotz", 3=>"seier", 9=>"schigga"}
|
40
|
+
#
|
41
|
+
# the above result IS SIMPLY WRONG!
|
42
|
+
#
|
43
|
+
# h.invert.invert
|
44
|
+
# => {"kotz"=>2, "seier"=>3, "schigga"=>9}
|
45
|
+
#
|
46
|
+
# h.invert.invert == h
|
47
|
+
# => false
|
48
|
+
#
|
49
|
+
# Let's conclude that Ruby's built-in Hash.invert method is REALLY BROKEN!
|
50
|
+
#
|
51
|
+
#
|
52
|
+
# OK, let's try this new inverse method:
|
53
|
+
#
|
54
|
+
# require 'invert_hash'
|
55
|
+
#
|
56
|
+
# h.inverse
|
57
|
+
# => {2=>"kotz", 3=>["seier", "aua", "bla", "ooh gott"], 9=>["schigga", "blubb"]}
|
58
|
+
#
|
59
|
+
# h.inverse.inverse
|
60
|
+
# => {"ooh gott"=>3, "bla"=>3, "aua"=>3, "kotz"=>2, "blubb"=>9, "seier"=>3, "schigga"=>9}
|
61
|
+
#
|
62
|
+
# h.inverse.inverse == h
|
63
|
+
# => true
|
64
|
+
#
|
65
|
+
# Looks much better, doesn't it?
|
66
|
+
|
67
|
+
|
68
|
+
|
69
|
+
class Hash
|
70
|
+
|
71
|
+
def inverse
|
72
|
+
i = Hash.new
|
73
|
+
self.each_pair{ |k,v|
|
74
|
+
if (v.class == Array)
|
75
|
+
v.each{ |x|
|
76
|
+
if i.has_key?(x)
|
77
|
+
i[x] = [k,i[x]].flatten
|
78
|
+
else
|
79
|
+
i[x] = k
|
80
|
+
end
|
81
|
+
}
|
82
|
+
else
|
83
|
+
if i.has_key?(v)
|
84
|
+
i[v] = [k,i[v]].flatten
|
85
|
+
else
|
86
|
+
i[v] = k
|
87
|
+
end
|
88
|
+
end
|
89
|
+
}
|
90
|
+
return i
|
91
|
+
end
|
92
|
+
|
93
|
+
end
|
94
|
+
|
95
|
+
__END__
|
96
|
+
|
97
|
+
# if you want to permanently overload Ruby's original invert method, you may want to do this:
|
98
|
+
|
99
|
+
class Hash
|
100
|
+
alias old_invert invert
|
101
|
+
|
102
|
+
def invert
|
103
|
+
self.inverse
|
104
|
+
end
|
105
|
+
end
|
metadata
ADDED
@@ -0,0 +1,75 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
rubygems_version: 0.9.4
|
3
|
+
specification_version: 1
|
4
|
+
name: id3
|
5
|
+
version: !ruby/object:Gem::Version
|
6
|
+
version: 0.4.0
|
7
|
+
date: 2008-08-16 00:00:00 -07:00
|
8
|
+
summary: id3-0.4.0 - ID3 tag library for Ruby http://www.unixgods.org/~tilo/Ruby/ID3
|
9
|
+
require_paths:
|
10
|
+
- lib
|
11
|
+
email: tools@unixgods.org
|
12
|
+
homepage: http://www.unixgods.org/~tilo/Ruby/ID3
|
13
|
+
rubyforge_project:
|
14
|
+
description: ID3 is a native ruby library for reading and writing ID3 tag versions 1.0, 1.1, and 2.2.x, 2,3.x, 2,4.x
|
15
|
+
autorequire: id3
|
16
|
+
default_executable:
|
17
|
+
bindir: bin
|
18
|
+
has_rdoc: false
|
19
|
+
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">"
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 0.0.0
|
24
|
+
version:
|
25
|
+
platform: ruby
|
26
|
+
signing_key:
|
27
|
+
cert_chain:
|
28
|
+
post_install_message:
|
29
|
+
authors:
|
30
|
+
- Tilo Sloboda
|
31
|
+
files:
|
32
|
+
- docs/index.html
|
33
|
+
- docs/Class_Tag2.html
|
34
|
+
- docs/ID3_comparison.html
|
35
|
+
- docs/Class_Tag1.html
|
36
|
+
- docs/ID3v2_frames_comparison.txt
|
37
|
+
- docs/ID3v2_frames_overview.txt
|
38
|
+
- docs/Module_ID3.html
|
39
|
+
- docs/ID3_comparison2.html
|
40
|
+
- docs/id3.html
|
41
|
+
- docs/Class_Frame.html
|
42
|
+
- docs/Class_AudioFile.html
|
43
|
+
- docs/ID3-Standards
|
44
|
+
- docs/ID3-Standards/id3v2.3.0.html
|
45
|
+
- docs/ID3-Standards/id3v2.4.0-frames.html
|
46
|
+
- docs/ID3-Standards/id3v2.4.0-frames.txt
|
47
|
+
- docs/ID3-Standards/id3v2-00.txt
|
48
|
+
- docs/ID3-Standards/id3v2.4.0-structure.txt
|
49
|
+
- docs/ID3-Standards/id3v2.3.0.txt
|
50
|
+
- docs/ID3-Standards/id3v2.4.0-changes.txt
|
51
|
+
- docs/ID3-Standards/id3v2.4.0-structure.html
|
52
|
+
- docs/ID3-Standards/id3v2.4.0-changes.html
|
53
|
+
- docs/ID3-Standards/id3v2-00.html
|
54
|
+
- docs/ID3v2_frames_comparison.html
|
55
|
+
- lib/hexdump.rb
|
56
|
+
- lib/id3.rb
|
57
|
+
- lib/invert_hash.rb
|
58
|
+
- LICENSE.html
|
59
|
+
- index.html
|
60
|
+
- README
|
61
|
+
test_files: []
|
62
|
+
|
63
|
+
rdoc_options:
|
64
|
+
- --title
|
65
|
+
- Builder -- Easy XML Building
|
66
|
+
extra_rdoc_files: []
|
67
|
+
|
68
|
+
executables: []
|
69
|
+
|
70
|
+
extensions: []
|
71
|
+
|
72
|
+
requirements: []
|
73
|
+
|
74
|
+
dependencies: []
|
75
|
+
|