module Tableficate
  class Caption
    attr_reader :attrs

    def initialize(*args, &block)
      if block_given?
        @attrs   = args.first || {}
        @content = block
      else
        @content = args[0]
        @attrs   = args[1] || {}
      end
    end

    def value
      if @content.is_a?(String)
        @content
      else
        output = @content.call
        if output.is_a?(ActionView::OutputBuffer)
          ''
        else
          output = output.html_safe if output.respond_to? :html_safe
          output
        end
      end
    end
  end
end