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