class Torganiser::EpisodeFile

Models a file that contains a single episode of a TV series. Attempts to extract episode data, based on the filename.

Attributes

file[R]

Public Class Methods

new(file) click to toggle source
# File lib/torganiser/episode_file.rb, line 7
def initialize(file)
  @file = file
end

Public Instance Methods

basename() click to toggle source
# File lib/torganiser/episode_file.rb, line 11
def basename
  @basename ||= File.basename(@file)
end
episode() click to toggle source
# File lib/torganiser/episode_file.rb, line 19
def episode
  @episode ||= episode_info[:episode].to_i
end
season() click to toggle source
# File lib/torganiser/episode_file.rb, line 15
def season
  @season ||= episode_info[:season].to_i
end
series() click to toggle source
# File lib/torganiser/episode_file.rb, line 23
def series
  @series ||= begin
    year = episode_info[:year]
    year = year.to_i if year
    Series.new(series_name, year: year)
  end
end

Private Instance Methods

episode_info() click to toggle source
# File lib/torganiser/episode_file.rb, line 37
def episode_info
  @episode_info ||= Matcher.match(basename) || fail(
    "Unable to parse #{file}"
  )
end
series_name() click to toggle source
# File lib/torganiser/episode_file.rb, line 33
def series_name
  episode_info[:name].split('.').join(' ').gsub(/[^a-z]+$/i, '')
end