class PrimeMultiplicationTable::Renderer

Renderer contains implementation of table renderer functionality.

Public Class Methods

new(primes_array) click to toggle source
# File lib/prime_multiplication_table/renderer.rb, line 4
def initialize(primes_array)
  @primes_array = primes_array
end

Public Instance Methods

render() click to toggle source
# File lib/prime_multiplication_table/renderer.rb, line 8
def render
  matrix.map { |r| render_row(r) }.join("\n")
end

Private Instance Methods

cell_size(cell_index) click to toggle source
# File lib/prime_multiplication_table/renderer.rb, line 27
def cell_size(cell_index)
  matrix.last[cell_index].to_s.size
end
matrix() click to toggle source
# File lib/prime_multiplication_table/renderer.rb, line 18
def matrix
  @matrix ||= [[nil] + @primes_array] + @primes_array.map do |prime_x|
    @primes_array.each_with_index.each_with_object([]) do |(prime_y, index), result|
      result << prime_x if index.to_i.zero?
      result << prime_x * prime_y
    end
  end
end
render_row(row_array) click to toggle source
# File lib/prime_multiplication_table/renderer.rb, line 14
def render_row(row_array)
  row_array.each_with_index.map { |c, i| c.to_s.rjust(cell_size(i)) }.join(' ')
end