class OfcpScoring::HandOrganizer
Public Instance Methods
organize(hand)
click to toggle source
# File lib/ofcp_scoring/hand_organizer.rb, line 2 def organize(hand) return "" if hand.nil? suits_only = Hash.new(0) ranks_only = Hash.new(0) sorted_ranks = [] hand.each do |card| ranks_only[card[0..-2]] += 1 suits_only[card.match(/[s,c,d,h]/)[0]] += 1 case card[0] when "A" sorted_ranks << 1 when "K" sorted_ranks << 13 when "Q" sorted_ranks << 12 when "J" sorted_ranks << 11 else sorted_ranks << card[0..-2].to_i end end sorted_ranks.sort! OfcpScoring::OrganizedHand.new(build_organized_hand(ranks_only, suits_only, sorted_ranks)) end
Private Instance Methods
build_organized_hand(ranks, suits, sorted)
click to toggle source
# File lib/ofcp_scoring/hand_organizer.rb, line 30 def build_organized_hand(ranks, suits, sorted) params = {:ranks => sorted, :suits => suits} params.merge!({:two_cards_match => true}) if ranks.values.include?(2) params.merge!({:two_different_cards_match => true}) if ranks.find_all{|k,v| v == 2}.size > 1 params.merge!({:three_cards_match => true}) if ranks.values.include?(3) params.merge!({:four_cards_match => true}) if ranks.values.include?(4) params.merge!({:all_suits_match => true}) if suits.values.include?(5) params.merge!({:ranks_in_order => true}) if (sorted.first..sorted.last).to_a == sorted params.merge!({:ranks_in_order => true}) if (sorted & [1,10,11,12,13]) == sorted params.merge!({:high_card_ace => true}) if sorted.include?(1) params.merge!({:three_card_hand => true}) if sorted.size == 3 params end