module Rubinstein class Location attr_accessor :name, :description, :exits def initialize(name,&block) @name = name @exits = {} instance_eval &block end def description(prose) @description = prose end ["north","south","east","west"].each do |direction| class_eval <<-END def #{direction}(location) @exits["#{direction}"] = location end END end end end