Class: CardsLib::Ranker

Inherits:
Object
  • Object
show all
Includes:
Comparable
Defined in:
lib/cards_lib/ranker.rb

Direct Known Subclasses

Standard::Rankers::BlackjackRanker

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(rank = nil, ranks = nil, rank_lookup = nil) ⇒ Ranker

Returns a new instance of Ranker.



5
6
7
# File 'lib/cards_lib/ranker.rb', line 5

def initialize(rank = nil, ranks = nil, rank_lookup = nil)
  @rank, @ranks, @rank_lookup = rank, ranks, rank_lookup
end

Instance Attribute Details

#rankObject (readonly)

Returns the value of attribute rank.



4
5
6
# File 'lib/cards_lib/ranker.rb', line 4

def rank
  @rank
end

Instance Method Details

#<=>(item) ⇒ Object



18
19
20
# File 'lib/cards_lib/ranker.rb', line 18

def <=>(item)
  ranker(self.rank) <=> ranker(item.rank)
end

#ranker(rank_face = @rank) ⇒ Object



13
14
15
16
# File 'lib/cards_lib/ranker.rb', line 13

def ranker(rank_face = @rank)
  @rank_lookup ? @rank_lookup.(rank_face) :
  ranks.index(rank_face).to_i + 1
end

#ranksObject



9
10
11
# File 'lib/cards_lib/ranker.rb', line 9

def ranks
  @ranks || Standard::RANKS
end

#sequential?(item) ⇒ Boolean

Returns:

  • (Boolean)


22
23
24
# File 'lib/cards_lib/ranker.rb', line 22

def sequential?(item)
  (ranker(self.rank) - ranker(item.rank)).abs == 1
end