Class: TVShowRenamer::TVShowFile

Inherits:
Object
  • Object
show all
Defined in:
lib/tvshow_renamer/tvshow_file.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}, filename = nil) ⇒ TVShowFile

Returns a new instance of TVShowFile.



5
6
7
8
# File 'lib/tvshow_renamer/tvshow_file.rb', line 5

def initialize(options = {}, filename = nil)
  @options = options
  @filename = filename
end

Instance Attribute Details

#detected_episodeObject (readonly)

Returns the value of attribute detected_episode.



3
4
5
# File 'lib/tvshow_renamer/tvshow_file.rb', line 3

def detected_episode
  @detected_episode
end

#detected_seasonObject (readonly)

Returns the value of attribute detected_season.



3
4
5
# File 'lib/tvshow_renamer/tvshow_file.rb', line 3

def detected_season
  @detected_season
end

#episodeObject

Returns the value of attribute episode.



3
4
5
# File 'lib/tvshow_renamer/tvshow_file.rb', line 3

def episode
  @episode
end

#filenameObject (readonly)

Returns the value of attribute filename.



3
4
5
# File 'lib/tvshow_renamer/tvshow_file.rb', line 3

def filename
  @filename
end

#seasonObject

Returns the value of attribute season.



3
4
5
# File 'lib/tvshow_renamer/tvshow_file.rb', line 3

def season
  @season
end

Instance Method Details

#basenameObject

Lazy getters



24
25
26
# File 'lib/tvshow_renamer/tvshow_file.rb', line 24

def basename
  @basename ||= File.basename(@filename)
end

#detect_season_and_episodeObject



57
58
59
60
61
62
63
64
65
66
# File 'lib/tvshow_renamer/tvshow_file.rb', line 57

def detect_season_and_episode
  regex = /(?<season>\d{1,2})(e|x|\.)?(?<episode>\d{2,})/i
  match = regex.match basename
  if match && match[:season] && match[:episode]
    @detected_season = match[:season].to_i
    send :season=, @detected_season
    @detected_episode = match[:episode].to_i
    send :episode=, @detected_episode
  end
end

#dirnameObject



28
29
30
# File 'lib/tvshow_renamer/tvshow_file.rb', line 28

def dirname
  @dirname ||= File.dirname(@filename)
end

#extnameObject



32
33
34
# File 'lib/tvshow_renamer/tvshow_file.rb', line 32

def extname
  @extname ||= File.extname(@filename)
end

#new_basenameObject



36
37
38
39
40
41
42
43
44
45
# File 'lib/tvshow_renamer/tvshow_file.rb', line 36

def new_basename
  unless @new_basename
    @new_basename = @options[:format].gsub('$n', @options[:tvshow_name])
                                     .gsub('$s', '%02i' % @season)
                                     .gsub('$e', '%02i' % @episode)
                                     .concat(extname)
    @new_filename = nil
  end
  @new_basename
end

#new_filenameObject



47
48
49
# File 'lib/tvshow_renamer/tvshow_file.rb', line 47

def new_filename
  @new_filename ||= File.join dirname, new_basename
end

#options_modifiedObject

Active methods



53
54
55
# File 'lib/tvshow_renamer/tvshow_file.rb', line 53

def options_modified
  @new_basename = @new_filename = nil
end