Class: MuseumDay::CLI

Inherits:
Object
  • Object
show all
Defined in:
lib/museum_day/cli.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#zipcodeObject

Returns the value of attribute zipcode.



2
3
4
# File 'lib/museum_day/cli.rb', line 2

def zipcode
  @zipcode
end

Instance Method Details

#callObject



4
5
6
7
# File 'lib/museum_day/cli.rb', line 4

def call
  puts "--------------Welcome to Museum Day--------------"
  start
end

#exit?(input) ⇒ Boolean

Returns:

  • (Boolean)


106
107
108
# File 'lib/museum_day/cli.rb', line 106

def exit?(input)
  goodbye if input.downcase == "exit"
end

#get_user_input_for_details_and_printObject



58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/museum_day/cli.rb', line 58

def get_user_input_for_details_and_print
  input = 0

  while !input.to_i.between?(1, MuseumDay::Museum.all.size)
    puts "\nEnter the number of the museum you'd like more info on or type exit"
    input = gets.strip

    exit?(input)
    if input.to_i.between?(1, MuseumDay::Museum.all.size)
      print_museum_details(input)
    else
      puts "Invalid number"

    end
  end
end

#get_zipcodeObject



83
84
85
86
87
88
89
90
91
92
93
# File 'lib/museum_day/cli.rb', line 83

def get_zipcode
  puts "\nPlease enter your zipcode or type exit"

  self.zipcode = gets.strip
  exit?(zipcode)

  if zipcode.size != 5
    puts "\nInvalid Zipcode"
    get_zipcode
  end
end

#goodbyeObject



110
111
112
113
114
115
# File 'lib/museum_day/cli.rb', line 110

def goodbye
  puts "-----------------"
  puts "|    Goodbye    |"
  puts "-----------------"
  exit
end

#list_museums(input) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
# File 'lib/museum_day/cli.rb', line 29

def list_museums(input)

  @scraper = MuseumDay::Scraper.new(input)
  @scraper.make_museums

  puts "\n--------------Listing museums near #{zipcode}--------------"

  MuseumDay::Museum.all.each.with_index(1) do |museum, idx|
    puts "#{idx}. #{museum.name} - #{museum.city}"
  end
end


75
76
77
78
79
80
81
# File 'lib/museum_day/cli.rb', line 75

def menu
  puts "\n---------------------------------------------"
  puts "To go back to list of museums, enter 'back'."
  puts "To search a new zipcode, enter 'new'."
  puts "To quit, enter 'exit'."
  puts "---------------------------------------------"
end

#new_or_back?(input) ⇒ Boolean

Returns:

  • (Boolean)


95
96
97
98
99
100
101
102
103
104
# File 'lib/museum_day/cli.rb', line 95

def new_or_back?(input)
  if input ==  "new"
    MuseumDay::Museum.clear_all
    self.zipcode = nil
    start
  elsif input == "back"
    MuseumDay::Museum.clear_all
    start
  end
end


41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/museum_day/cli.rb', line 41

def print_museum_details(input)

  museum = MuseumDay::Museum.find(input.to_i)

  @scraper.scrape_details(museum)

  puts "\n--------------#{museum.name}--------------"
  puts "#{museum.address}"
  puts "       #{museum.hours}"
  puts "\nPhone Number: #{museum.phone_number}"
  puts "Website:      #{museum.website_url}"
  puts "Facebook:     #{museum.fb}" if museum.fb
  puts "Twitter:      #{museum.twitter}" if museum.twitter
  puts "\n--------------Description--------------"
  puts "#{museum.description}"
end

#startObject



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/museum_day/cli.rb', line 10

def start

  get_zipcode if !zipcode

  exit?(zipcode)

  list_museums(zipcode)

  get_user_input_for_details_and_print

  menu

  input = gets.strip.downcase
  exit?(input)

  new_or_back?(input)

end