Class: Id3Taginator::Frames::Ipl::InvolvedPeopleFrame

Inherits:
Id3Taginator::Frames::Id3v2Frame show all
Includes:
HasId
Defined in:
lib/id3taginator/frames/ipl/ipls_involved_people_frame.rb

Constant Summary

Constants inherited from Id3Taginator::Frames::Id3v2Frame

Id3Taginator::Frames::Id3v2Frame::HEADER_SIZE_V_2, Id3Taginator::Frames::Id3v2Frame::HEADER_SIZE_V_3_4

Constants included from Extensions::Encodable

Extensions::Encodable::ISO8859_1, Extensions::Encodable::UNICODE_ZERO, Extensions::Encodable::UTF_16, Extensions::Encodable::UTF_16BE, Extensions::Encodable::UTF_8, Extensions::Encodable::ZERO

Instance Attribute Summary collapse

Attributes inherited from Id3Taginator::Frames::Id3v2Frame

#frame_id, #options

Class Method Summary collapse

Instance Method Summary collapse

Methods included from HasId

#frame_info, included, #supported?

Methods inherited from Id3Taginator::Frames::Id3v2Frame

build_id3_flags, build_v2_frame, build_v3_frame, build_v4_frame, #compression?, #encryption?, #file_alter_preservation?, #frame_size, #group_identity?, #initialize, #re_calc_payload_size, #read_only?, #tag_alter_preservation?, #to_bytes

Methods included from Extensions::ArgumentCheck

#argument_between_num, #argument_boolean, #argument_exactly_chars, #argument_less_than_chars, #argument_more_than_chars, #argument_not_empty, #argument_not_nil, #argument_sym, included

Methods included from Extensions::Encodable

#decode, #decode_using_encoding_byte, #default_encoding_destination_byte, #encode, #encode_and_add_encoding_byte, #encode_string, #find_encoding, #find_encoding_byte, included, #merge, #pad_left, #pad_right, #read_stream_until, #remove_trailing_zeros, #zero_byte

Constructor Details

This class inherits a constructor from Id3Taginator::Frames::Id3v2Frame

Instance Attribute Details

#involved_peopleObject

Returns the value of attribute involved_people.



11
12
13
# File 'lib/id3taginator/frames/ipl/ipls_involved_people_frame.rb', line 11

def involved_people
  @involved_people
end

Class Method Details

.build_frame(involved_people, options = nil, id3_version: 3) ⇒ Id3v2Frame

builds the group identification frame

Parameters:

Returns:



20
21
22
23
24
25
26
27
28
# File 'lib/id3taginator/frames/ipl/ipls_involved_people_frame.rb', line 20

def self.build_frame(involved_people, options = nil, id3_version: 3)
  supported?('IPLS', id3_version, options)

  argument_not_empty(involved_people, 'involved_people')

  frame = new(frame_id(id3_version, options), 0, build_id3_flags(id3_version), '')
  frame.involved_people = involved_people.is_a?(Array) ? involved_people : [involved_people]
  frame
end

Instance Method Details

#content_to_bytesObject



41
42
43
44
# File 'lib/id3taginator/frames/ipl/ipls_involved_people_frame.rb', line 41

def content_to_bytes
  content = @involved_people.map { |person| "#{person.involvement}\x00#{person.involvee}" }.join("\x00")
  encode_and_add_encoding_byte(content)
end

#process_content(content) ⇒ Object



30
31
32
33
34
35
36
37
38
39
# File 'lib/id3taginator/frames/ipl/ipls_involved_people_frame.rb', line 30

def process_content(content)
  content = decode_using_encoding_byte(content).split("\x00")
  @involved_people = []
  until content.empty?
    involvement = content.shift
    involvee = content.shift
    person = Entities::InvolvedPerson.new(involvement, involvee)
    @involved_people << person
  end
end