Class: WhereTo::EpisodeFormatter

Inherits:
Object
  • Object
show all
Defined in:
lib/where_to/episode_formatter.rb

Constant Summary collapse

DEFAULT_EXTENSION =
'.mkv'

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(hash = {}, series_title: hash[:series_title], season_number: hash[:season_number], episode_title: hash[:episode_title], episode_number: hash[:episode_number], extension: hash[:extension], quality: hash[:quality], group: hash[:group], series_id: hash[:series_id]) ⇒ EpisodeFormatter

Returns a new instance of EpisodeFormatter.



7
8
9
10
11
12
13
14
15
# File 'lib/where_to/episode_formatter.rb', line 7

def initialize(hash = {}, series_title: hash[:series_title], season_number: hash[:season_number], episode_title: hash[:episode_title], episode_number: hash[:episode_number], extension: hash[:extension], quality: hash[:quality], group: hash[:group], series_id: hash[:series_id])
  set_unless_nil :series_title,   series_title
  set_unless_nil :season_number,  season_number
  set_unless_nil :episode_title,  episode_title
  set_unless_nil :episode_number, episode_number
  set_unless_nil :quality,        quality
  set_unless_nil :extension,      extension,      default: DEFAULT_EXTENSION
  set_unless_nil :group,          group
end

Instance Attribute Details

#episode_numberObject

Returns the value of attribute episode_number.



3
4
5
# File 'lib/where_to/episode_formatter.rb', line 3

def episode_number
  @episode_number
end

#episode_titleObject

Returns the value of attribute episode_title.



3
4
5
# File 'lib/where_to/episode_formatter.rb', line 3

def episode_title
  @episode_title
end

#extensionObject

Returns the value of attribute extension.



4
5
6
# File 'lib/where_to/episode_formatter.rb', line 4

def extension
  @extension
end

#groupObject

Returns the value of attribute group.



4
5
6
# File 'lib/where_to/episode_formatter.rb', line 4

def group
  @group
end

#qualityObject

Returns the value of attribute quality.



4
5
6
# File 'lib/where_to/episode_formatter.rb', line 4

def quality
  @quality
end

#season_numberObject

Returns the value of attribute season_number.



3
4
5
# File 'lib/where_to/episode_formatter.rb', line 3

def season_number
  @season_number
end

#series_titleObject

Returns the value of attribute series_title.



3
4
5
# File 'lib/where_to/episode_formatter.rb', line 3

def series_title
  @series_title
end

Instance Method Details

#format!Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/where_to/episode_formatter.rb', line 17

def format!
  validate!
  formatted = []
  formatted << series_title.downcase.gsub(' ', '.')
  formatted << "SxxEyy".gsub('xx', season_number.to_s.rjust(2, '0')).gsub('yy', episode_number.to_s.rjust(2, '0'))
  formatted << episode_title.downcase.gsub(' ', '.')
  formatted << quality.downcase if quality
  formatted = formatted.join('.')

  formatted << "-#{group}" if group
  formatted << extension

  formatted
end

#validate!Object



32
33
34
35
36
37
38
# File 'lib/where_to/episode_formatter.rb', line 32

def validate!
  raise 'A series title is required to format an episode title.' unless series_title
  raise 'A season number is required to format an episode title.' unless season_number
  raise 'An episode title is required to format an episode title.' unless episode_title
  raise 'An episode number is required to format an episode title.' unless episode_number
  true
end