module Vedeu module Renderers # Renders a {Vedeu::Buffers::Terminal} as a HTML snippet; a table # by default. # class HTML < Vedeu::Renderers::File # Returns a new instance of Vedeu::Renderers::HTML. # # @param options [Hash] # @option options content [String] Defaults to an empty string. # @option options end_tag [String] Defaults to ''. # @option options end_row_tag [String] Defaults to ''. # @option options filename [String] Provide a filename for the # output. Defaults to 'out'. # @option options start_tag [String] Defaults to ''. # @option options template [String] # @option options timestamp [Boolean] Append a timestamp to the # filename. # @option options write_file [Boolean] Whether to write the file # to the given filename. # @return [Vedeu::Renderers::HTML] def initialize(options = {}) @options = options || {} @output = nil end # Render a cleared output. # # @return [String] def clear @output = Vedeu::Cells::Escape.new '' end # @param output [Vedeu::Models::Page] # @return [String] def render(output) @output = output super(Vedeu::Templating::Template.parse(self, template)) unless escape? end # @return [String] def html_body return '' if output.is_a?(Vedeu::Cells::Escape) out = '' output.each do |line| out << "#{start_row_tag}\n" line.each { |char| out << char.to_html(options) } out << "#{end_row_tag}\n" end out.freeze end private # Returns a boolean indicating whether the output is a # {Vedeu::Cells::Escape}. If it is, it won't be rendered in # HTML. # # @return [Boolean] def escape? output.is_a?(Vedeu::Cells::Escape) end # @return [Array>] def output @output || options[:output] end # @return [String] def end_tag options[:end_tag] end # @return [String] def end_row_tag options[:end_row_tag] end # @return [String] def start_tag options[:start_tag] end # @return [String] def start_row_tag options[:start_row_tag] end # @return [String] def template options[:template] end # The default values for a new instance of this class. # # @return [Hash void>] def defaults { content: '', end_tag: '', end_row_tag: '', filename: 'out', start_tag: '', template: default_template, timestamp: false, write_file: true, } end # @return [String] def default_template ::File.dirname(__FILE__) + '/../templates/html_renderer.vedeu' end end # HTML end # Renderers end # Vedeu