lib/m3u8/media_item.rb in m3u8-0.7.1 vs lib/m3u8/media_item.rb in m3u8-0.8.0

- old
+ new

@@ -2,46 +2,56 @@ module M3u8 # MediaItem represents a set of EXT-X-MEDIA attributes class MediaItem extend M3u8 attr_accessor :type, :group_id, :language, :assoc_language, :name, - :autoselect, :default, :uri, :forced + :autoselect, :default, :uri, :forced, :instream_id, + :characteristics, :channels def initialize(params = {}) params.each do |key, value| instance_variable_set("@#{key}", value) end end def self.parse(text) - attributes = parse_attributes 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'] } - MediaItem.new options + uri: attributes['URI'], + instream_id: attributes['INSTREAM-ID'], + characteristics: attributes['CHARACTERISTICS'], + channels: attributes['CHANNELS'] } + MediaItem.new(options) end def to_s - attributes = [type_format, - group_id_format, - language_format, - assoc_language_format, - name_format, - autoselect_format, - default_format, - uri_format, - forced_format].compact.join(',') - "#EXT-X-MEDIA:#{attributes}" + "#EXT-X-MEDIA:#{formatted_attributes.join(',')}" end private + 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 + def type_format "TYPE=#{type}" end def group_id_format @@ -78,9 +88,24 @@ end def forced_format return if forced.nil? "FORCED=#{to_yes_no forced}" + end + + def instream_id_format + return if instream_id.nil? + %(INSTREAM-ID="#{instream_id}") + end + + def characteristics_format + return if characteristics.nil? + %(CHARACTERISTICS="#{characteristics}") + end + + def channels_format + return if channels.nil? + %(CHANNELS="#{channels}") end def to_yes_no(boolean) boolean == true ? 'YES' : 'NO' end