Class: RetroCasts::RailsCasts

Inherits:
Object
  • Object
show all
Defined in:
lib/retro_casts/rails_casts.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(host: 'http://www.railscasts.com', filter: '.episode', page: 1, search: nil, website: RetroCasts::Website.new) ⇒ RailsCasts

Returns a new instance of RailsCasts.



5
6
7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/retro_casts/rails_casts.rb', line 5

def initialize(host: 'http://www.railscasts.com',
               filter: '.episode',
               page: 1,
               search: nil,
               website: RetroCasts::Website.new)

  @host = host
  @filter = filter
  @page = page
  @search = search
  @website = website

  update
end

Instance Attribute Details

#episodesObject (readonly)

Returns the value of attribute episodes.



3
4
5
# File 'lib/retro_casts/rails_casts.rb', line 3

def episodes
  @episodes
end

#filterObject (readonly)

Returns the value of attribute filter.



3
4
5
# File 'lib/retro_casts/rails_casts.rb', line 3

def filter
  @filter
end

#hostObject (readonly)

Returns the value of attribute host.



3
4
5
# File 'lib/retro_casts/rails_casts.rb', line 3

def host
  @host
end

#pageObject (readonly)

Returns the value of attribute page.



3
4
5
# File 'lib/retro_casts/rails_casts.rb', line 3

def page
  @page
end

#searchObject (readonly)

Returns the value of attribute search.



3
4
5
# File 'lib/retro_casts/rails_casts.rb', line 3

def search
  @search
end

#urlObject (readonly)

Returns the value of attribute url.



3
4
5
# File 'lib/retro_casts/rails_casts.rb', line 3

def url
  @url
end

#websiteObject (readonly)

Returns the value of attribute website.



3
4
5
# File 'lib/retro_casts/rails_casts.rb', line 3

def website
  @website
end

Instance Method Details

#episode(number) ⇒ Object



24
25
26
27
28
29
30
# File 'lib/retro_casts/rails_casts.rb', line 24

def episode(number)
  if episode?(number)
    episodes[number - 1]
  else
    nil
  end
end

#episode?(number) ⇒ Boolean

Returns:

  • (Boolean)


20
21
22
# File 'lib/retro_casts/rails_casts.rb', line 20

def episode?(number)
  number > 0 && number <= episodes.length
end

#get_search(search_term) ⇒ Object



32
33
34
35
# File 'lib/retro_casts/rails_casts.rb', line 32

def get_search(search_term)
  @search = search_term
  update
end

#list_episodesObject



51
52
53
54
55
# File 'lib/retro_casts/rails_casts.rb', line 51

def list_episodes
  episodes.each_with_index do |episode, i|
    RetroCasts.display "#{i +1}. #{episode.title} - #{episode.date}"
  end
end

#next_pageObject



37
38
39
40
# File 'lib/retro_casts/rails_casts.rb', line 37

def next_page
  @page += 1
  update
end

#prev_pageObject



42
43
44
45
46
47
48
49
# File 'lib/retro_casts/rails_casts.rb', line 42

def prev_page
  if page > 1
    @page -= 1
    update
  else
    self
  end
end

#show_episode_detail(episode_number) ⇒ Object



57
58
59
60
61
62
63
64
# File 'lib/retro_casts/rails_casts.rb', line 57

def show_episode_detail(episode_number)
  current_episode = episode(episode_number)
  [:title, :number, :date, :length, :description, :link].each do |attribute|
    label = attribute.to_s.capitalize
    message = "#{label}: #{current_episode.send(attribute)}"
    RetroCasts.display(message)
  end
end