class ShowEpisodeRange

This class represents a contiguous range of episodes of a show in a single season. For example Season 1 Episodes 1-5, or Season 2 Episodes 7-9

Attributes

endEpisode[RW]
season[RW]
startEpisode[RW]

Public Class Methods

createRanges(episodes) click to toggle source

Given a list of ShowEpisode objects, return an array of ShowEpisodeRange objects that represents the passed episodes.

# File plugins/shows/lib/showname_parse.rb, line 40
def self.createRanges(episodes)
  ranges = []
  sorted = episodes.sort{ |a,b|
    if a.season < b.season
      -1
    elsif a.season > b.season
      1
    else
      a.episode <=> b.episode
    end
  }

  firstInRange = nil
  lastProcessed = nil
  sorted.each{ |s|
    if ! firstInRange
      firstInRange = s
    else
      if s.season != lastProcessed.season || s.episode > lastProcessed.episode + 1
        # End of range!
        ranges.push ShowEpisodeRange.new(firstInRange.season, firstInRange.episode, lastProcessed.episode)
        firstInRange = s
      end 
    end  
    lastProcessed = s
  }
  if firstInRange
    ranges.push ShowEpisodeRange.new(firstInRange.season, firstInRange.episode, lastProcessed.episode)
  end 
  ranges
end
new(season, startEpisode, endEpisode) click to toggle source
# File plugins/shows/lib/showname_parse.rb, line 24
def initialize(season, startEpisode, endEpisode)
  @season = season
  @startEpisode = startEpisode
  @endEpisode = endEpisode
end

Public Instance Methods

size() click to toggle source
# File plugins/shows/lib/showname_parse.rb, line 34
def size
  @endEpisode - @startEpisode + 1
end