Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions NullHotel.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
class NullHotel
def to_s
"not a hotel in database"
end

def info
"hotel not in database"
end
end
37 changes: 37 additions & 0 deletions hotel.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
class Hotel
attr_reader(:name,
:location,
:phone_number,
:single_rooms,
:double_rooms
)
def initialize(info)
@name = info["Hotel"].strip
@location = info["City"].strip
@phone_number = phone_number_format(info["Phone Number"])
@single_rooms = clean_number(info["Number of Singles"])
@double_rooms = clean_number(info["Number of Doubles"])
end

def to_s
name
end

def info
info = [location,phone_number,total_rooms]
puts info
end

def total_rooms
single_rooms + double_rooms
end

def phone_number_format(number)
number = clean_number(number).to_s
number.insert(3,"-").insert(7,"-")
end

def clean_number(number)
number.strip.gsub(/[^\d+]/, "").strip.to_i
end
end
35 changes: 35 additions & 0 deletions hotelr.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
require 'csv'
require './hotel.rb'

class Main
attr_reader :hotels_list, :selected_hotel
def initialize
@hotels_list = []
CSV.foreach("hotels.csv", headers: true) do |info|
hotels_list << Hotel.new(info)
end
end

def start
prompt_user
display_info
end

def prompt_user
puts hotels_list
print "enter a hotel >"
find_hotel(gets.chomp)
end

def find_hotel(query)
@selected_hotel = hotels_list.find{|hotel| hotel.name == query ||= NullHotel.new }
end

def display_info
puts "-" * 10
puts selected_hotel.info
end
end

hotels_db = Main.new
hotels_db.start
10 changes: 10 additions & 0 deletions hotels.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
Hotel,City,Phone Number,Number of Singles,Number of Doubles
Wombat Inn,Quincy,342-469-9891,123,52
Bugaboo Lodge,Boston,954-320-9432,21,4
Ruby Inn, Cambridge ,518-410-9090,300,100
Rails Motel,Somerville,593-131-5953,2,0
Super 6,Boston ,432.785.7263,"1,000",500
Large Lodge,Somerville ,(678)-727-2356,100,50
Hostile Hostel, Boston,938-123-9695,401,302
The Hotel Motel Holiday Inn, Quincy,5499018889,233,234
Binary Inn , Somerville,100011100110,010,100