Module: ID3Lib::Frame
- Defined in:
- lib/id3lib.rb
Overview
:nodoc:
Class Method Summary collapse
Class Method Details
.field(libframe, id) ⇒ Object
384 385 386 |
# File 'lib/id3lib.rb', line 384 def self.field(libframe, id) libframe.get_field(Info.field(id)[NUM]) end |
.read(libframe) ⇒ Object
328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 |
# File 'lib/id3lib.rb', line 328 def self.read(libframe) frame = {} info = Info.frame_num(libframe.get_id) frame[:id] = info[ID] info[FIELDS].each do |field_id| libfield = field(libframe, field_id) frame[field_id] = case Info::FieldType[libfield.get_type] when :integer libfield.get_integer when :binary libfield.get_binary when :text if libfield.get_encoding > 0 libfield.get_unicode else libfield.get_ascii end end end frame end |
.write(frame, libframe) ⇒ Object
353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 |
# File 'lib/id3lib.rb', line 353 def self.write(frame, libframe) if textenc = frame[:textenc] field(libframe, :textenc).set_integer(textenc) end frame.each do |field_id, value| next if field_id == :textenc unless Info.frame(frame[:id])[FIELDS].include?(field_id) # Ignore invalid fields next end libfield = field(libframe, field_id) case Info::FieldType[libfield.get_type] when :integer libfield.set_integer(value) when :binary libfield.set_binary(value) when :text if textenc and textenc > 0 and [:text, :description, :filename].include?(field_id) # Special treatment for Unicode libfield.set_encoding(textenc) libfield.set_unicode(value) else libfield.set_ascii(value) end end end end |