class Foo

    include Comparable
    
	attr_reader :size, :color
	
	@@size_order = {
		'small' => 1, 
		'medium' => 2, 
		'large' => 3, 
		'super-sized' => 4
	}
	
	@@color_order = {
		'green' => 1,
		'blue' => 2,
		'red' => 3
	}
	
	def initialize( x, y )
		@size = x
		@color = y
	end
	
	def <=> ( o )
		if (@size == o.size)
			if (@color == o.color) 
				return 0
			else
				return (@@color_order[@color] > @@color_order[o.color]) ? 1 : -1
			end
		else
			return (@@size_order[@size] > @@size_order[o.size]) ? 1 : -1
		end
	end
	
end

a = Foo.new( 'small', 'blue' )
b = Foo.new( 'small', 'green' )
c = Foo.new( 'small', 'blue' )
d = Foo.new( 'large', 'red' )


puts a < b
puts a > b
puts a == b
puts '----------'
puts a > c
puts a < c
puts a == c
puts '----------'
puts a > d
puts a < d
puts a == d
