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
5 changes: 5 additions & 0 deletions .idea/encodings.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 9 additions & 0 deletions .idea/modules.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 9 additions & 0 deletions .idea/recipe-hash.iml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions .idea/scopes/scope_settings.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

26 changes: 26 additions & 0 deletions advanced_train.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
itinerary = %w'Vancouver Calgary Edmonton Winnipeg Toronto'
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

great use of %w !

train = {}
train[:engines] = 1
train[:cars] = 20
train[:caboose] = "Great Western Trail"
train[:cities] = itinerary
train[:current_city] = "Edmonton"

Passenger = Struct.new(:name, :train)
passenger = Passenger.new( "Simon Jones", train)

puts "Passenger: #{passenger.name}"

puts "\nTrain details"
passenger.train.each do |key, value|
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like what you did here, a LOT. yay!

One thing I'd rather see in a loop than an if/else is to handle each condition as a separate section of code. It would make extracting later easier.

intents:

  1. print out attributes of train
  2. print out itinerary (and current city)

So maybe:

puts "\nItinerary"
passenger.train[:cities].each do |city|
  print "  * #{city}"
  print " << CURRENT CITY" if city == passenger.train[:current_city]
  puts "\n"
end

puts "\nTrain details"
passenger.train.reject{ |k|  k ==:cities }.each do |key, value|
  puts " -- #{key}: #{value}"
end

It's a little longer, but you can (arguably), tell what the intent is.

if key == :cities
puts "\nItinerary"
value.each do |city|
print " * #{city}"
print " << CURRENT CITY" if city == passenger.train[:current_city]
puts "\n"
end
else
puts " -- #{key}: #{value}" if key != :current_city
end
end
24 changes: 11 additions & 13 deletions recipe.rb
Original file line number Diff line number Diff line change
@@ -1,17 +1,15 @@
ingredients = {}
ingredients[:avocados] = 4
ingredients[:jalapenos] = 2
train = {}
train[:engines] = 1
train[:cars] = 20
train[:caboose] = "Great Western Trail"
train[:city] = "Edmonton"

Recipe = Struct.new(:ingredients, :method)
Passenger = Struct.new(:name, :train)
passenger = Passenger.new( "Simon Jones", train)

recipe = Recipe.new( {avacados: 4, jalapenos: 2}, ["Peel / Slice Avocados", "Chop jalapenos into small dice"])
puts "Passenger: #{passenger.name}"

puts "ingredients"
recipe.ingredients.each do |key, value|
puts "* #{key}: #{value}"
puts "\nTrain details"
passenger.train.each do |key, value|
puts " -- #{key}: #{value}"
end

puts "\nMethod"
recipe.method.each_with_index do |step, index|
puts "#{index+1}. #{step}"
end