class View::Board
Public Class Methods
new(board_presenter, table_klass)
click to toggle source
# File lib/tic_tac_toe/view/board.rb, line 3 def initialize(board_presenter, table_klass) @board_presenter = board_presenter @table_klass = table_klass end
Public Instance Methods
render()
click to toggle source
# File lib/tic_tac_toe/view/board.rb, line 8 def render tile_collection = @board_presenter.tile_collection headings = generate_headings(tile_collection.dimensions) rows = format_rows(tile_collection.rows) table = @table_klass.new(headings: headings, rows: rows, style: { all_separators: true }) display_msg(table) end
Private Instance Methods
format_row(row)
click to toggle source
# File lib/tic_tac_toe/view/board.rb, line 39 def format_row(row) formatted = row.map do |tile| piece = tile.piece piece.nil? ? '' : piece.name end formatted end
format_rows(rows)
click to toggle source
# File lib/tic_tac_toe/view/board.rb, line 29 def format_rows(rows) rows.each_with_object([]).with_index do |(row, arr), i| formatted = format_row(row) formatted.unshift(i + 1) arr << formatted end end
generate_headings(dimensions)
click to toggle source
# File lib/tic_tac_toe/view/board.rb, line 25 def generate_headings(dimensions) generate_indexes(dimensions) end
generate_indexes(dimensions)
click to toggle source
# File lib/tic_tac_toe/view/board.rb, line 19 def generate_indexes(dimensions) range = (1..dimensions) range.each_with_object(['']) { |i, indexes| indexes << i } end