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

- old
+ new

@@ -1,35 +1,42 @@ # frozen_string_literal: true module M3u8 # Playlist represents an m3u8 playlist, it can be a master playlist or a set # of media segments class Playlist - attr_accessor :items, :version, :cache, :target, :sequence, :type, - :iframes_only, :independent_segments + attr_accessor :items, :version, :cache, :target, :sequence, + :discontinuity_sequence, :type, :iframes_only, + :independent_segments, :live def initialize(options = {}) - assign_options options - self.items = [] + assign_options(options) + @items = [] end def self.codecs(options = {}) - item = PlaylistItem.new options + item = PlaylistItem.new(options) item.codecs end def self.read(input) reader = Reader.new - reader.read input + reader.read(input) end def write(output) writer = Writer.new(output) writer.write(self) end + def live? + return false if master? + @live + end + def master? - return false if playlist_size == 0 && segment_size == 0 + return @master unless @master.nil? + return false if playlist_size.zero? && segment_size.zero? playlist_size > 0 end def to_s output = StringIO.open @@ -53,24 +60,28 @@ private def assign_options(options) options = defaults.merge(options) - self.version = options[:version] - self.sequence = options[:sequence] - self.cache = options[:cache] - self.target = options[:target] - self.type = options[:type] - self.iframes_only = options[:iframes_only] - self.independent_segments = options[:independent_segments] + @version = options[:version] + @sequence = options[:sequence] + @discontinuity_sequence = options[:discontinuity_sequence] + @cache = options[:cache] + @target = options[:target] + @type = options[:type] + @iframes_only = options[:iframes_only] + @independent_segments = options[:independent_segments] + @master = options[:master] + @live = options[:live] end def defaults { sequence: 0, target: 10, iframes_only: false, - independent_segments: false + independent_segments: false, + live: false } end def playlist_size items.count { |item| item.is_a?(PlaylistItem) }