lib/remedy/view.rb
module Remedy
class View
def initialize body, header = [], footer = []
@header, @body, @footer = header, body, footer
end
attr_accessor :body, :header, :footer, :length
def to_s force_recompile = false
unless @view.nil? || force_recompile then
@view
else
reset_length!
@view = compile!
end
end
protected
def compile!
compiled_view = String.new
reset_length!
merged.each do |line|
compiled_view << row(line)
end
compiled_view
end
def merged
@header.to_a + @body.to_a + @footer.to_a
end
def row line
@length += 1
"#{line}#{ANSI.cursor.next_line}"
end
def reset_length!
@length = 0
end
end
end