class M3u8::MediaItem

MediaItem represents a set of EXT-X-MEDIA attributes

Attributes

assoc_language[RW]
autoselect[RW]
channels[RW]
characteristics[RW]
default[RW]
forced[RW]
group_id[RW]
instream_id[RW]
language[RW]
name[RW]
type[RW]
uri[RW]

Public Class Methods

new(params = {}) click to toggle source
# File lib/m3u8/media_item.rb, line 10
def initialize(params = {})
  params.each do |key, value|
    instance_variable_set("@#{key}", value)
  end
end
parse(text) click to toggle source
# File lib/m3u8/media_item.rb, line 16
def self.parse(text)
  attributes = parse_attributes(text)
  options = { type: attributes['TYPE'], group_id: attributes['GROUP-ID'],
              language: attributes['LANGUAGE'],
              assoc_language: attributes['ASSOC-LANGUAGE'],
              name: attributes['NAME'],
              autoselect: parse_yes_no(attributes['AUTOSELECT']),
              default: parse_yes_no(attributes['DEFAULT']),
              forced: parse_yes_no(attributes['FORCED']),
              uri: attributes['URI'],
              instream_id: attributes['INSTREAM-ID'],
              characteristics: attributes['CHARACTERISTICS'],
              channels: attributes['CHANNELS'] }
  MediaItem.new(options)
end

Public Instance Methods

to_s() click to toggle source
# File lib/m3u8/media_item.rb, line 32
def to_s
  "#EXT-X-MEDIA:#{formatted_attributes.join(',')}"
end

Private Instance Methods

assoc_language_format() click to toggle source
# File lib/m3u8/media_item.rb, line 66
def assoc_language_format
  return if assoc_language.nil?
  %(ASSOC-LANGUAGE="#{assoc_language}")
end
autoselect_format() click to toggle source
# File lib/m3u8/media_item.rb, line 75
def autoselect_format
  return if autoselect.nil?
  "AUTOSELECT=#{to_yes_no autoselect}"
end
channels_format() click to toggle source
# File lib/m3u8/media_item.rb, line 105
def channels_format
  return if channels.nil?
  %(CHANNELS="#{channels}")
end
characteristics_format() click to toggle source
# File lib/m3u8/media_item.rb, line 100
def characteristics_format
  return if characteristics.nil?
  %(CHARACTERISTICS="#{characteristics}")
end
default_format() click to toggle source
# File lib/m3u8/media_item.rb, line 80
def default_format
  return if default.nil?
  "DEFAULT=#{to_yes_no default}"
end
forced_format() click to toggle source
# File lib/m3u8/media_item.rb, line 90
def forced_format
  return if forced.nil?
  "FORCED=#{to_yes_no forced}"
end
formatted_attributes() click to toggle source
# File lib/m3u8/media_item.rb, line 38
def formatted_attributes
  [type_format,
   group_id_format,
   language_format,
   assoc_language_format,
   name_format,
   autoselect_format,
   default_format,
   uri_format,
   forced_format,
   instream_id_format,
   characteristics_format,
   channels_format].compact
end
group_id_format() click to toggle source
# File lib/m3u8/media_item.rb, line 57
def group_id_format
  %(GROUP-ID="#{group_id}")
end
instream_id_format() click to toggle source
# File lib/m3u8/media_item.rb, line 95
def instream_id_format
  return if instream_id.nil?
  %(INSTREAM-ID="#{instream_id}")
end
language_format() click to toggle source
# File lib/m3u8/media_item.rb, line 61
def language_format
  return if language.nil?
  %(LANGUAGE="#{language}")
end
name_format() click to toggle source
# File lib/m3u8/media_item.rb, line 71
def name_format
  %(NAME="#{name}")
end
to_yes_no(boolean) click to toggle source
# File lib/m3u8/media_item.rb, line 110
def to_yes_no(boolean)
  boolean == true ? 'YES' : 'NO'
end
type_format() click to toggle source
# File lib/m3u8/media_item.rb, line 53
def type_format
  "TYPE=#{type}"
end
uri_format() click to toggle source
# File lib/m3u8/media_item.rb, line 85
def uri_format
  return if uri.nil?
  %(URI="#{uri}")
end