Class: MTG::Card::Rarity

Inherits:
Object
  • Object
show all
Includes:
Comparable
Defined in:
lib/mtg/card/rarity.rb

Constant Summary collapse

NAMES =
%w(common uncommon rare mythic\ rare)

Instance Method Summary collapse

Constructor Details

#initialize(name) ⇒ Rarity

Returns a new instance of Rarity.



9
10
11
12
13
14
15
# File 'lib/mtg/card/rarity.rb', line 9

def initialize(name)
  name = name.to_s.strip.downcase
  unless NAMES.include?(name)
    raise ArgumentError, "name is not one of: #{NAMES.inspect}"
  end
  @name = name
end

Instance Method Details

#<=>(rarity) ⇒ Object



25
26
27
# File 'lib/mtg/card/rarity.rb', line 25

def <=>(rarity)
  NAMES.index(to_s) <=> NAMES.index(rarity.to_s)
end

#eql?(rarity) ⇒ Boolean

Returns:

  • (Boolean)


29
30
31
# File 'lib/mtg/card/rarity.rb', line 29

def eql?(rarity)
  self.class == rarity.class && self == rarity
end

#hashObject



33
34
35
# File 'lib/mtg/card/rarity.rb', line 33

def hash
  @name.hash
end

#to_s(format = nil) ⇒ Object



17
18
19
20
21
22
23
# File 'lib/mtg/card/rarity.rb', line 17

def to_s(format = nil)
  if format == :short
    {'common' => 'C', 'uncommon' => 'U', 'rare' => 'R', 'mythic rare' => 'MR'}[@name]
  else
    @name
  end
end