class RichterCatalogue::CLI
Constants
- BASE_PATH
Public Instance Methods
add_painting_attributes()
click to toggle source
# File lib/richter_catalogue/cli.rb, line 22 def add_painting_attributes RichterCatalogue::Painting.all.each do |painting| attributes = RichterCatalogue::Scraper.painting_page(BASE_PATH + painting.painting_url) painting.add_attributes(attributes) painting.artist = RichterCatalogue::Artist.find_by_name("Gerhard Richter") end end
call()
click to toggle source
# File lib/richter_catalogue/cli.rb, line 37 def call puts "Retrieving information from the Catalogue..." make_catalogue search_method goodbye end
goodbye()
click to toggle source
# File lib/richter_catalogue/cli.rb, line 72 def goodbye puts "Thank you for visiting Gerhard Richter's Catalogue" end
list_subjects()
click to toggle source
# File lib/richter_catalogue/cli.rb, line 76 def list_subjects RichterCatalogue::Subject.all.each_with_index {|subject, i| puts " #{i + 1}. #{subject.name}"} end
list_years()
click to toggle source
# File lib/richter_catalogue/cli.rb, line 80 def list_years years = [] RichterCatalogue::Year.all.each {|year, i| years << year.name} years = years.sort years.each {|year| puts " - #{year}"} end
make_artists()
click to toggle source
# File lib/richter_catalogue/cli.rb, line 5 def make_artists attributes_hash = RichterCatalogue::Scraper.artist_page("https://en.wikipedia.org/wiki/Gerhard_Richter") RichterCatalogue::Artist.create_from_profile(attributes_hash) end
make_catalogue()
click to toggle source
# File lib/richter_catalogue/cli.rb, line 30 def make_catalogue make_artists make_subjects make_paintings add_painting_attributes end
make_paintings()
click to toggle source
# File lib/richter_catalogue/cli.rb, line 15 def make_paintings RichterCatalogue::Subject.all.each do |subject| paintings_array = RichterCatalogue::Scraper.subject_page(BASE_PATH + subject.subject_url) RichterCatalogue::Painting.create_from_subject(paintings_array, subject) end end
make_subjects()
click to toggle source
# File lib/richter_catalogue/cli.rb, line 10 def make_subjects subjects_array = RichterCatalogue::Scraper.subjects_page(BASE_PATH + "/en/art/paintings") RichterCatalogue::Subject.create_from_subjects(subjects_array) end
name_paintings()
click to toggle source
# File lib/richter_catalogue/cli.rb, line 215 def name_paintings painting_names = RichterCatalogue::Painting.all.collect {|painting| painting.name} painting_names_downcase = RichterCatalogue::Painting.all.collect {|painting| painting.name.downcase} puts "type name" puts "type back to go back" puts "type exit to exit" input_name = gets.strip if painting_names.include?(input_name) || painting_names_downcase.include?(input_name) if painting_names.include?(input_name) RichterCatalogue::Painting.find_by_name(input_name).each {|painting| RichterCatalogue::Painting.display(painting)} else RichterCatalogue::Painting.find_by_name(painting_names[painting_names_downcase.index(input_name)]).each {|painting| RichterCatalogue::Painting.display(painting)} end name_paintings elsif input_name == "back" search_method elsif input_name == "exit" search_method("exit") else puts "Painting was not found please try again" name_paintings end end
search_method(input = nil)
click to toggle source
# File lib/richter_catalogue/cli.rb, line 44 def search_method(input = nil) if input == "exit" else puts "Welcome to Gerhard Richter's Catalogue" puts "Search by subject, by year, or by name?" puts "type exit to exit" input = gets.strip.downcase case input when "subject" list_subjects subject_paintings when "year" list_years year_paintings when "name" name_paintings when "exit" search_method("exit") else puts "Search method is invalid, please try again" search_method end end end
subject_paintings()
click to toggle source
# File lib/richter_catalogue/cli.rb, line 87 def subject_paintings subject_names = RichterCatalogue::Subject.all.collect {|subject| subject.name} subject_names_downcase = RichterCatalogue::Subject.all.collect {|subject| subject.name.downcase} puts "Select subject by number or by name" puts "type back to go back" puts "type exit to exit" input_subject = gets.strip if input_subject.to_i.between?(1, subject_names.size) subject_paintings_names(subject_names[input_subject.to_i - 1]) elsif subject_names.include?(input_subject) || subject_names_downcase.include?(input_subject) if subject_names.include?(input_subject) subject_paintings_names(input_subject) else subject_paintings_names(subject_names[subject_names_downcase.index(input_subject)]) end elsif input_subject == "back" search_method elsif input_subject == "exit" search_method("exit") else puts "Subject is invalid, please try again" subject_paintings end end
subject_paintings_names(subject_name)
click to toggle source
# File lib/richter_catalogue/cli.rb, line 116 def subject_paintings_names(subject_name) subject = RichterCatalogue::Subject.find_by_name(subject_name) painting_names = subject.paintings.collect {|painting| painting.name} painting_names_downcase = subject.paintings.collect {|painting| painting.name.downcase} painting_names.each.with_index(1) {|p, i| puts "#{i}. #{p}"} puts "Select painting by number or by name" puts "type all to see information on all paintings" puts "type back to go back" puts "type exit to exit" input = gets.strip if input.to_i.between?(1, painting_names.size) RichterCatalogue::Painting.display(subject.paintings[input.to_i - 1]) subject_paintings_names(subject_name) elsif painting_names.include?(input) || painting_names_downcase.include?(input) if painting_names.include?(input) paintings_matched = subject.paintings.select {|painting| painting.name == input} else paintings_matched = subject.paintings.select {|painting| painting.name == painting_names[painting_names_downcase.index(input)]} end paintings_matched.each {|painting| RichterCatalogue::Painting.display(painting)} subject_paintings_names(subject_name) elsif input == "all" subject.paintings.each {|painting| RichterCatalogue::Painting.display(painting)} subject_paintings_names(subject_name) elsif input == "back" list_subjects subject_paintings elsif input == "exit" search_method("exit") else puts "Painting is invalid, please try again" subject_paintings_names(subject_name) end end
year_paintings()
click to toggle source
# File lib/richter_catalogue/cli.rb, line 155 def year_paintings puts "Select a year" puts "type back to go back" puts "type exit to exit" input_year = gets.strip if !RichterCatalogue::Year.find_by_name(input_year).nil? year_paintings_names(input_year) elsif input_year == "back" search_method elsif input_year == "exit" search_method("exit") else puts "No paintings found for selected year please select another year" year_paintings end end
year_paintings_names(year_name)
click to toggle source
# File lib/richter_catalogue/cli.rb, line 176 def year_paintings_names(year_name) year = RichterCatalogue::Year.find_by_name(year_name) painting_names = year.paintings.collect {|painting| painting.name} painting_names_downcase = year.paintings.collect {|painting| painting.name.downcase} painting_names.each.with_index(1) {|p, i| puts "#{i}. #{p}"} puts "Select painting by number or by name" puts "type all to see information on all paintings" puts "type back to go back" puts "type exit to exit" input = gets.strip if input.to_i.between?(1, painting_names.size) RichterCatalogue::Painting.display(year.paintings[input.to_i - 1]) year_paintings_names(year_name) elsif painting_names.include?(input) || painting_names_downcase.include?(input) if painting_names.include?(input) paintings_matched = year.paintings.select {|painting| painting.name == input} else paintings_matched = year.paintings.select {|painting| painting.name == painting_names[painting_names_downcase.index(input)]} end paintings_matched.each {|painting| RichterCatalogue::Painting.display(painting)} year_paintings_names(year_name) elsif input == "all" year.paintings.each {|painting| RichterCatalogue::Painting.display(painting)} year_paintings_names(year_name) elsif input == "back" list_years year_paintings elsif input == "exit" search_method("exit") else puts "Painting is invalid, please try again" year_paintings_names(year_name) end end