id3_tags 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,16 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ lib/bundler/man
11
+ pkg
12
+ rdoc
13
+ spec/reports
14
+ test/tmp
15
+ test/version_tmp
16
+ tmp
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ source 'http://rubygems.org'
2
+
3
+ # Declare your gem's dependencies in id3_tags.gemspec.
4
+ # Bundler will treat runtime dependencies like base dependencies, and
5
+ # development dependencies will be added by default to the :development group.
6
+ gemspec
data/HISTORY.md ADDED
@@ -0,0 +1 @@
1
+ v0.0.1 - 2013/06/13 Implements `read_tags_from` and `write_tags_to`
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright 2013 Topspin Media Inc.
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,32 @@
1
+ What is ID3 Tags
2
+ ================
3
+
4
+ A ruby gem to read and write ID3 metadata from/to MP3 files}
5
+
6
+ Why ID3 Tags was born
7
+ =======================
8
+
9
+ At [Topspin](http://topspinmedia.com) we provide [ArtistLink](http://artistlink.com), a platform for musician to upload and share their songs.
10
+ Artistlink provides a form to read and edit the songs' metadata and stores this information in the ID3 tags of a song.
11
+ For this task, we created the ID3 Tags gem
12
+
13
+ How to install
14
+ ==============
15
+
16
+ Run `gem install id3_tags`.
17
+ Alternatively, you can include `id3_tags` in the Gemfile of your bundled project.
18
+
19
+ How to use
20
+ ==========
21
+
22
+ * To read metadata from a file, run `Id3Tags.read_from_file(file_path)`
23
+ * To write metadata to a file, run `Id3Tags.write_to_file(file_path, metadata)`
24
+
25
+ For more details about the format of the metadata, check the [specs](http://github.com/topspin/id3_tags/tree/master/spec/lib) or the [documentation at RubyDoc.info](http://rubydoc.info/github/topspin/id3_tags/frames).
26
+
27
+ How to contribute
28
+ =================
29
+
30
+ Make sure tests pass, then either submit a Pull Request.
31
+ A list of [nice TODOs](http://github.com/topspin/id3_tags/tree/master/TODO.md) is provided.
32
+ You can also build a new version of the gem and move it to your gem repository.
data/Rakefile ADDED
@@ -0,0 +1,12 @@
1
+ require 'bundler/gem_tasks'
2
+
3
+ require 'rspec/core/rake_task'
4
+ RSpec::Core::RakeTask.new(:spec)
5
+ task default: :spec
6
+
7
+ require 'yard'
8
+
9
+ YARD::Rake::YardocTask.new do |t|
10
+ t.files = ['lib/**/*.rb']
11
+ t.options = ['--no-private']
12
+ end
data/TODO.md ADDED
@@ -0,0 +1,2 @@
1
+ * Add support for M4A
2
+ * Add support for multiple cover arts
data/doc/Id3Tags.html ADDED
@@ -0,0 +1,495 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
+ <head>
5
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6
+ <title>
7
+ Module: Id3Tags
8
+
9
+ &mdash; Documentation by YARD 0.8.6.1
10
+
11
+ </title>
12
+
13
+ <link rel="stylesheet" href="css/style.css" type="text/css" charset="utf-8" />
14
+
15
+ <link rel="stylesheet" href="css/common.css" type="text/css" charset="utf-8" />
16
+
17
+ <script type="text/javascript" charset="utf-8">
18
+ hasFrames = window.top.frames.main ? true : false;
19
+ relpath = '';
20
+ framesUrl = "frames.html#!" + escape(window.location.href);
21
+ </script>
22
+
23
+
24
+ <script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
25
+
26
+ <script type="text/javascript" charset="utf-8" src="js/app.js"></script>
27
+
28
+
29
+ </head>
30
+ <body>
31
+ <div id="header">
32
+ <div id="menu">
33
+
34
+ <a href="_index.html">Index (I)</a> &raquo;
35
+
36
+
37
+ <span class="title">Id3Tags</span>
38
+
39
+
40
+ <div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
41
+ </div>
42
+
43
+ <div id="search">
44
+
45
+ <a class="full_list_link" id="class_list_link"
46
+ href="class_list.html">
47
+ Class List
48
+ </a>
49
+
50
+ <a class="full_list_link" id="method_list_link"
51
+ href="method_list.html">
52
+ Method List
53
+ </a>
54
+
55
+ <a class="full_list_link" id="file_list_link"
56
+ href="file_list.html">
57
+ File List
58
+ </a>
59
+
60
+ </div>
61
+ <div class="clear"></div>
62
+ </div>
63
+
64
+ <iframe id="search_frame"></iframe>
65
+
66
+ <div id="content"><h1>Module: Id3Tags
67
+
68
+
69
+
70
+ </h1>
71
+
72
+ <dl class="box">
73
+
74
+
75
+
76
+
77
+
78
+
79
+
80
+
81
+ <dt class="r1 last">Defined in:</dt>
82
+ <dd class="r1 last">lib/id3_tags.rb<span class="defines">,<br />
83
+ lib/id3_tags/version.rb</span>
84
+ </dd>
85
+
86
+ </dl>
87
+ <div class="clear"></div>
88
+
89
+ <h2>Overview</h2><div class="docstring">
90
+ <div class="discussion">
91
+ <p>
92
+ Provides two methods to read and write ID3 metadata from an MP3 file
93
+ </p>
94
+
95
+
96
+ </div>
97
+ </div>
98
+ <div class="tags">
99
+
100
+
101
+ </div>
102
+ <h2>Constant Summary</h2>
103
+
104
+ <dl class="constants">
105
+
106
+ <dt id="VERSION-constant" class="">VERSION =
107
+
108
+ </dt>
109
+ <dd><pre class="code"><span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>0.0.1</span><span class='tstring_end'>'</span></span></pre></dd>
110
+
111
+ </dl>
112
+
113
+
114
+
115
+
116
+
117
+
118
+
119
+
120
+
121
+ <h2>
122
+ Class Method Summary
123
+ <small>(<a href="#" class="summary_toggle">collapse</a>)</small>
124
+ </h2>
125
+
126
+ <ul class="summary">
127
+
128
+ <li class="public ">
129
+ <span class="summary_signature">
130
+
131
+ <a href="#read_tags_from-class_method" title="read_tags_from (class method)">+ (Hash) <strong>read_tags_from</strong>(file_path) </a>
132
+
133
+
134
+
135
+ </span>
136
+
137
+
138
+
139
+
140
+
141
+
142
+
143
+
144
+
145
+ <span class="summary_desc"><div class='inline'><p>
146
+ Returns a Hash of ID3 attributes stored in the file located at
147
+ <tt>file_path</tt>.
148
+ </p>
149
+ </div></span>
150
+
151
+ </li>
152
+
153
+
154
+ <li class="public ">
155
+ <span class="summary_signature">
156
+
157
+ <a href="#write_tags_to-class_method" title="write_tags_to (class method)">+ (Boolean) <strong>write_tags_to</strong>(file_path, attrs = {}) </a>
158
+
159
+
160
+
161
+ </span>
162
+
163
+
164
+
165
+
166
+
167
+
168
+
169
+
170
+
171
+ <span class="summary_desc"><div class='inline'><p>
172
+ Stores the <tt>attrs</tt> Hash of ID3 attributes into the file at
173
+ <tt>file_path</tt>.
174
+ </p>
175
+ </div></span>
176
+
177
+ </li>
178
+
179
+
180
+ </ul>
181
+
182
+
183
+
184
+
185
+ <div id="class_method_details" class="method_details_list">
186
+ <h2>Class Method Details</h2>
187
+
188
+
189
+ <div class="method_details first">
190
+ <h3 class="signature first" id="read_tags_from-class_method">
191
+
192
+ + (<tt>Hash</tt>) <strong>read_tags_from</strong>(file_path)
193
+
194
+
195
+
196
+
197
+
198
+ </h3><div class="docstring">
199
+ <div class="discussion">
200
+ <p>
201
+ Returns a Hash of ID3 attributes stored in the file located at
202
+ <tt>file_path</tt>.
203
+ </p>
204
+
205
+
206
+ </div>
207
+ </div>
208
+ <div class="tags">
209
+
210
+ <div class="examples">
211
+ <p class="tag_title">Examples:</p>
212
+
213
+
214
+ <p class="example_title"><div class='inline'><p>
215
+ Read tags from an MP3 full of metadata
216
+ </p>
217
+ </div></p>
218
+
219
+ <pre class="example code"><code>Id3Tags.read_tags_from(&quot;all_id3.mp3&quot;)
220
+
221
+ # =&gt; {title: &quot;Sample track&quot;, album: &quot;Sample album&quot;, artist: Sample
222
+ artist&quot;, :comment=&gt;&quot;Sample comments&quot;, genre: &quot;Sample Genre&quot;,
223
+ year: 1979, bitrate: 128, channels: 2, length: 38, samplerate:
224
+ 44100, bpm: 110, lyrics: &quot;Sample lyrics line 1\rand line 2&quot;,
225
+ composer: &quot;Sample composer&quot;, grouping: &quot;Sample group&quot;,
226
+ album_artist: &quot;Sample album artist&quot;, compilation: true, track:
227
+ {number: 3, count: 12}, disk: {number: 1, count: 2}, cover_art:
228
+ {mime_type: &quot;image/png&quot;, data: &quot;\x89PNG\r\n\x1A[...]&quot;}}</code></pre>
229
+
230
+ </div>
231
+ <p class="tag_title">Parameters:</p>
232
+ <ul class="param">
233
+
234
+ <li>
235
+
236
+ <span class='name'>file_path</span>
237
+
238
+
239
+ <span class='type'>(<tt>String</tt>)</span>
240
+
241
+
242
+
243
+ &mdash;
244
+ <div class='inline'><p>
245
+ Local path to an MP3 file
246
+ </p>
247
+ </div>
248
+
249
+ </li>
250
+
251
+ </ul>
252
+
253
+ <p class="tag_title">Returns:</p>
254
+ <ul class="return">
255
+
256
+ <li>
257
+
258
+
259
+ <span class='type'>(<tt>Hash</tt>)</span>
260
+
261
+
262
+
263
+ &mdash;
264
+ <div class='inline'><p>
265
+ the ID3 attributes stored in the file
266
+ </p>
267
+ </div>
268
+
269
+ </li>
270
+
271
+ </ul>
272
+
273
+ </div><table class="source_code">
274
+ <tr>
275
+ <td>
276
+ <pre class="lines">
277
+
278
+
279
+ 23
280
+ 24
281
+ 25
282
+ 26
283
+ 27
284
+ 28
285
+ 29
286
+ 30
287
+ 31
288
+ 32
289
+ 33
290
+ 34
291
+ 35
292
+ 36
293
+ 37
294
+ 38
295
+ 39
296
+ 40
297
+ 41
298
+ 42
299
+ 43
300
+ 44</pre>
301
+ </td>
302
+ <td>
303
+ <pre class="code"><span class="info file"># File 'lib/id3_tags.rb', line 23</span>
304
+
305
+ <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_read_tags_from'>read_tags_from</span><span class='lparen'>(</span><span class='id identifier rubyid_file_path'>file_path</span><span class='rparen'>)</span>
306
+ <span class='id identifier rubyid_attrs'>attrs</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span>
307
+ <span class='const'>TagLib</span><span class='op'>::</span><span class='const'>MPEG</span><span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_open'>open</span><span class='lparen'>(</span><span class='id identifier rubyid_file_path'>file_path</span><span class='rparen'>)</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_file'>file</span><span class='op'>|</span>
308
+ <span class='id identifier rubyid_tag_fields'>tag_fields</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_field'>field</span><span class='comma'>,</span> <span class='id identifier rubyid_opts'>opts</span><span class='op'>|</span>
309
+ <span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='id identifier rubyid_file'>file</span><span class='period'>.</span><span class='id identifier rubyid_tag'>tag</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span> <span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:method</span><span class='rbracket'>]</span>
310
+ <span class='id identifier rubyid_assign!'>assign!</span> <span class='id identifier rubyid_attrs'>attrs</span><span class='comma'>,</span> <span class='id identifier rubyid_field'>field</span><span class='comma'>,</span> <span class='id identifier rubyid_value'>value</span><span class='comma'>,</span> <span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:type</span><span class='rbracket'>]</span>
311
+ <span class='kw'>end</span> <span class='kw'>unless</span> <span class='id identifier rubyid_file'>file</span><span class='period'>.</span><span class='id identifier rubyid_tag'>tag</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
312
+
313
+ <span class='id identifier rubyid_audio_properties_fields'>audio_properties_fields</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_field'>field</span><span class='comma'>,</span> <span class='id identifier rubyid_opts'>opts</span><span class='op'>|</span>
314
+ <span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='id identifier rubyid_file'>file</span><span class='period'>.</span><span class='id identifier rubyid_audio_properties'>audio_properties</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span> <span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:method</span><span class='rbracket'>]</span>
315
+ <span class='id identifier rubyid_assign!'>assign!</span> <span class='id identifier rubyid_attrs'>attrs</span><span class='comma'>,</span> <span class='id identifier rubyid_field'>field</span><span class='comma'>,</span> <span class='id identifier rubyid_value'>value</span><span class='comma'>,</span> <span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:type</span><span class='rbracket'>]</span>
316
+ <span class='kw'>end</span> <span class='kw'>unless</span> <span class='id identifier rubyid_file'>file</span><span class='period'>.</span><span class='id identifier rubyid_audio_properties'>audio_properties</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
317
+
318
+ <span class='id identifier rubyid_id3v2_tag_fields'>id3v2_tag_fields</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_field'>field</span><span class='comma'>,</span> <span class='id identifier rubyid_opts'>opts</span><span class='op'>|</span>
319
+ <span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='id identifier rubyid_file'>file</span><span class='period'>.</span><span class='id identifier rubyid_id3v2_tag'>id3v2_tag</span><span class='period'>.</span><span class='id identifier rubyid_frame_list'>frame_list</span><span class='lparen'>(</span><span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:frame_id</span><span class='rbracket'>]</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span>
320
+ <span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_to_string'>to_string</span> <span class='kw'>if</span> <span class='id identifier rubyid_value'>value</span> <span class='kw'>and</span> <span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:type</span><span class='rbracket'>]</span> <span class='op'>!=</span> <span class='symbol'>:image</span>
321
+ <span class='id identifier rubyid_assign!'>assign!</span> <span class='id identifier rubyid_attrs'>attrs</span><span class='comma'>,</span> <span class='id identifier rubyid_field'>field</span><span class='comma'>,</span> <span class='id identifier rubyid_value'>value</span><span class='comma'>,</span> <span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:type</span><span class='rbracket'>]</span>
322
+ <span class='kw'>end</span> <span class='kw'>unless</span> <span class='id identifier rubyid_file'>file</span><span class='period'>.</span><span class='id identifier rubyid_id3v2_tag'>id3v2_tag</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
323
+ <span class='kw'>end</span>
324
+
325
+ <span class='id identifier rubyid_attrs'>attrs</span><span class='period'>.</span><span class='id identifier rubyid_symbolize_keys'>symbolize_keys</span>
326
+ <span class='kw'>end</span></pre>
327
+ </td>
328
+ </tr>
329
+ </table>
330
+ </div>
331
+
332
+ <div class="method_details ">
333
+ <h3 class="signature " id="write_tags_to-class_method">
334
+
335
+ + (<tt>Boolean</tt>) <strong>write_tags_to</strong>(file_path, attrs = {})
336
+
337
+
338
+
339
+
340
+
341
+ </h3><div class="docstring">
342
+ <div class="discussion">
343
+ <p>
344
+ Stores the <tt>attrs</tt> Hash of ID3 attributes into the file at
345
+ <tt>file_path</tt>.
346
+ </p>
347
+
348
+
349
+ </div>
350
+ </div>
351
+ <div class="tags">
352
+
353
+ <div class="examples">
354
+ <p class="tag_title">Examples:</p>
355
+
356
+
357
+ <p class="example_title"><div class='inline'><p>
358
+ Write ID3 tags to an MP3 file
359
+ </p>
360
+ </div></p>
361
+
362
+ <pre class="example code"><code>Id3Tags.write_tags_to(&quot;no_id3.mp3&quot;, {title: &quot;Sample track&quot;, album:
363
+ &quot;Sample album&quot;, artist: Sample artist&quot;, :comment=&gt;&quot;Sample comments&quot;,
364
+ genre: &quot;Sample Genre&quot;, year: 1979, bitrate: 128, channels: 2,
365
+ length: 38, samplerate: 44100, bpm: 110, lyrics: &quot;Sample lyrics
366
+ line 1\rand line 2&quot;, composer: &quot;Sample composer&quot;, grouping: &quot;Sample
367
+ group&quot;, album_artist: &quot;Sample album artist&quot;, compilation: true,
368
+ track: {number: 3, count: 12}, disk: {number: 1, count: 2},
369
+ cover_art: {mime_type: &quot;image/png&quot;, data: &quot;\x89PNG\r\n\x1A[...]&quot;}}
370
+
371
+ # =&gt; true</code></pre>
372
+
373
+ </div>
374
+ <p class="tag_title">Parameters:</p>
375
+ <ul class="param">
376
+
377
+ <li>
378
+
379
+ <span class='name'>file_path</span>
380
+
381
+
382
+ <span class='type'>(<tt>String</tt>)</span>
383
+
384
+
385
+
386
+ &mdash;
387
+ <div class='inline'><p>
388
+ Local path to an MP3 file
389
+ </p>
390
+ </div>
391
+
392
+ </li>
393
+
394
+ <li>
395
+
396
+ <span class='name'>attrs</span>
397
+
398
+
399
+ <span class='type'>(<tt>Hash</tt>)</span>
400
+
401
+
402
+ <em class="default">(defaults to: <tt>{}</tt>)</em>
403
+
404
+
405
+ &mdash;
406
+ <div class='inline'><p>
407
+ the ID3 attributes stored in the file
408
+ </p>
409
+ </div>
410
+
411
+ </li>
412
+
413
+ </ul>
414
+
415
+ <p class="tag_title">Returns:</p>
416
+ <ul class="return">
417
+
418
+ <li>
419
+
420
+
421
+ <span class='type'>(<tt>Boolean</tt>)</span>
422
+
423
+
424
+
425
+ &mdash;
426
+ <div class='inline'><p>
427
+ true (the file gets changed)
428
+ </p>
429
+ </div>
430
+
431
+ </li>
432
+
433
+ </ul>
434
+
435
+ </div><table class="source_code">
436
+ <tr>
437
+ <td>
438
+ <pre class="lines">
439
+
440
+
441
+ 63
442
+ 64
443
+ 65
444
+ 66
445
+ 67
446
+ 68
447
+ 69
448
+ 70
449
+ 71
450
+ 72
451
+ 73
452
+ 74
453
+ 75
454
+ 76
455
+ 77
456
+ 78
457
+ 79</pre>
458
+ </td>
459
+ <td>
460
+ <pre class="code"><span class="info file"># File 'lib/id3_tags.rb', line 63</span>
461
+
462
+ <span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_write_tags_to'>write_tags_to</span><span class='lparen'>(</span><span class='id identifier rubyid_file_path'>file_path</span><span class='comma'>,</span> <span class='id identifier rubyid_attrs'>attrs</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span>
463
+ <span class='id identifier rubyid_attrs'>attrs</span><span class='period'>.</span><span class='id identifier rubyid_symbolize_keys!'>symbolize_keys!</span>
464
+
465
+ <span class='const'>TagLib</span><span class='op'>::</span><span class='const'>MPEG</span><span class='op'>::</span><span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_open'>open</span><span class='lparen'>(</span><span class='id identifier rubyid_file_path'>file_path</span><span class='rparen'>)</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_file'>file</span><span class='op'>|</span>
466
+ <span class='id identifier rubyid_tag_fields'>tag_fields</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_field'>field</span><span class='comma'>,</span> <span class='id identifier rubyid_opts'>opts</span><span class='op'>|</span>
467
+ <span class='id identifier rubyid_file'>file</span><span class='period'>.</span><span class='id identifier rubyid_tag'>tag</span><span class='period'>.</span><span class='id identifier rubyid_send'>send</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:method</span><span class='rbracket'>]</span><span class='rbrace'>}</span><span class='tstring_content'>=</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span> <span class='lparen'>(</span><span class='id identifier rubyid_attrs'>attrs</span><span class='lbracket'>[</span><span class='id identifier rubyid_field'>field</span><span class='rbracket'>]</span> <span class='op'>||</span> <span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:default</span><span class='rbracket'>]</span><span class='rparen'>)</span>
468
+ <span class='kw'>end</span> <span class='kw'>unless</span> <span class='id identifier rubyid_file'>file</span><span class='period'>.</span><span class='id identifier rubyid_tag'>tag</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
469
+
470
+ <span class='id identifier rubyid_id3v2_tag_fields'>id3v2_tag_fields</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_field'>field</span><span class='comma'>,</span> <span class='id identifier rubyid_opts'>opts</span><span class='op'>|</span>
471
+ <span class='id identifier rubyid_file'>file</span><span class='period'>.</span><span class='id identifier rubyid_id3v2_tag'>id3v2_tag</span><span class='period'>.</span><span class='id identifier rubyid_remove_frames'>remove_frames</span> <span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:frame_id</span><span class='rbracket'>]</span>
472
+ <span class='id identifier rubyid_frame'>frame</span> <span class='op'>=</span> <span class='id identifier rubyid_new_frame_for'>new_frame_for</span> <span class='id identifier rubyid_attrs'>attrs</span><span class='lbracket'>[</span><span class='id identifier rubyid_field'>field</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:frame_id</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='id identifier rubyid_opts'>opts</span><span class='lbracket'>[</span><span class='symbol'>:type</span><span class='rbracket'>]</span>
473
+ <span class='id identifier rubyid_file'>file</span><span class='period'>.</span><span class='id identifier rubyid_id3v2_tag'>id3v2_tag</span><span class='period'>.</span><span class='id identifier rubyid_add_frame'>add_frame</span> <span class='id identifier rubyid_frame'>frame</span> <span class='kw'>if</span> <span class='id identifier rubyid_frame'>frame</span>
474
+ <span class='kw'>end</span> <span class='kw'>unless</span> <span class='id identifier rubyid_file'>file</span><span class='period'>.</span><span class='id identifier rubyid_id3v2_tag'>id3v2_tag</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
475
+
476
+ <span class='id identifier rubyid_file'>file</span><span class='period'>.</span><span class='id identifier rubyid_save'>save</span>
477
+ <span class='kw'>end</span>
478
+ <span class='kw'>end</span></pre>
479
+ </td>
480
+ </tr>
481
+ </table>
482
+ </div>
483
+
484
+ </div>
485
+
486
+ </div>
487
+
488
+ <div id="footer">
489
+ Generated on Fri Jun 14 11:03:18 2013 by
490
+ <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
491
+ 0.8.6.1 (ruby-1.9.2).
492
+ </div>
493
+
494
+ </body>
495
+ </html>