Skip to content

Instantly share code, notes, and snippets.

@kwilczynski
Created September 1, 2012 20:40
Show Gist options
  • Save kwilczynski/3586653 to your computer and use it in GitHub Desktop.
Save kwilczynski/3586653 to your computer and use it in GitHub Desktop.
class Library < Array
def initialize
super
end
def has_game?(game)
raise ArgumentError, 'Not a Game object' unless game.is_a?(Game)
self.select {|i| i == game }.any?
end
def games
self
end
end
class Game
attr_accessor :name, :year, :system
attr_reader :created_at
def initialize(name, options={})
@name = name
@year = options[:year]
@system = options[:system]
@created_at = Time.now
end
def ==(game)
raise ArgumentError, 'Not a Game object' unless game.is_a?(Game)
@name == game.name &&
@system == game.system &&
@year == game.year
end
end
if $0 == __FILE__
l = Library.new
game1 = Game.new('Prototype 2', :year => 2012, :system => 'PC')
game2 = Game.new('Crysis 2', :year => 2012, :system => 'PC')
l << game1
p l
p l.has_game?(game1)
p l.has_game?(game2)
l << game2
p l.has_game?(game2)
p game1 == game2
p game1 == game1
p l.games
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment