Module: Cuts

Extended by:
T::Helpers, T::Sig
Included in:
Packet
Defined in:
lib/deck_of_cards_handler/packet/cuts.rb

Overview

Includes cutting methods, either splits or assembles packets of cards

Instance Method Summary collapse

Instance Method Details

#cut(number:) ⇒ Object

Raises:

  • (ArgumentError)


12
13
14
15
16
17
# File 'lib/deck_of_cards_handler/packet/cuts.rb', line 12

def cut(number:)
  raise ArgumentError if invalid_number_to_cut_to?(number)

  cut_cards = cards.slice!(0...number)
  Packet.new(cards: T.must(cut_cards))
end

#cut_and_complete(number:) ⇒ Object



20
21
22
23
# File 'lib/deck_of_cards_handler/packet/cuts.rb', line 20

def cut_and_complete(number:)
  top_half = cut(number:)
  self.cards = [cards, top_half.cards].flatten
end

#reassemble_left_to_right_on_bottom(piles) ⇒ Object



32
33
34
35
# File 'lib/deck_of_cards_handler/packet/cuts.rb', line 32

def reassemble_left_to_right_on_bottom(piles)
  assembled = reassemble_cards(piles)
  self.cards += assembled
end

#reassemble_left_to_right_on_top(piles) ⇒ Object



26
27
28
29
# File 'lib/deck_of_cards_handler/packet/cuts.rb', line 26

def reassemble_left_to_right_on_top(piles)
  assembled = reassemble_cards(piles)
  self.cards = assembled + cards
end

#reassemble_right_to_left_on_bottom(piles) ⇒ Object



44
45
46
47
# File 'lib/deck_of_cards_handler/packet/cuts.rb', line 44

def reassemble_right_to_left_on_bottom(piles)
  assembled = reassemble_cards(piles, reverse: true)
  self.cards += assembled
end

#reassemble_right_to_left_on_top(piles) ⇒ Object



38
39
40
41
# File 'lib/deck_of_cards_handler/packet/cuts.rb', line 38

def reassemble_right_to_left_on_top(piles)
  assembled = reassemble_cards(piles, reverse: true)
  self.cards = assembled + cards
end