module Card::Mark

Card::Mark provides class methods for Card to translate all different kind of card identifiers to card objects.

Public Instance Methods

cardish(cardish) click to toggle source

translates marks (and other inputs) into a Card

@param cardish [Card, Card::Name, String, Symbol, Integer] @return Card

# File lib/card/mark.rb, line 9
def cardish cardish
  if cardish.is_a? Card
    cardish
  else
    fetch cardish, new: {}
  end
end
id_or_name(parts) click to toggle source

translates various inputs into either an id or a name. @param parts [Array<Symbol, Integer, String, Card::Name, Card>] a mark or mark parts @return [Integer or Card::Name]

# File lib/card/mark.rb, line 20
def id_or_name parts
  mark = parts.flatten
  mark = mark.first if mark.size <= 1
  id_from_mark(mark) || Card::Name[mark]
end

Private Instance Methods

id_from_mark(mark) click to toggle source
# File lib/card/mark.rb, line 28
def id_from_mark mark
  case mark
  when Integer then mark
  when Symbol  then Codename.id! mark
  when String  then Name.id_from_string! mark
  when Card    then mark.id
  end
end