Sha256: b69d6bdee256cb316e5fc31ba4c95cb82091dc5404b981ae97edb726c8312edc

Contents?: true

Size: 1.23 KB

Versions: 1

Compression:

Stored size: 1.23 KB

Contents

require 'reportbuilder/table'
require 'reportbuilder/section'
require 'reportbuilder/generator'

class ReportBuilder
  attr_reader :elements
  attr_reader :name
  attr_reader :dir
  VERSION = '0.1.0'
  # Create a new Report
  def initialize(name=nil,dir=nil)
    name||="Report "+Time.new.to_s
    dir||=Dir.pwd
    @dir=dir
    @name=name
    @elements=Array.new
  end
  # Add an element to the report.
  # If parameters is an object which respond to :to_reportbuilder,
  # this method will called.
  # Otherwise, the element itself will be added
  def add(*elements)
    elements.each do |element|
      if element.respond_to?(:to_reportbuilder)
        @elements.push(element.to_reportbuilder)
      else
        @elements.push(element)
      end
    end
  end
  # Returns a Section
  def section(name)
     Section.new(name)
  end
  # Returns a Table
  def table(h=[])
      Table.new(h)
  end
  # Returns an Html output
  def to_html
    gen=Generator::Html.new(self)
    gen.parse
    gen.out
  end
  def save_html(file)
    gen=Generator::Html.new(self)
    gen.parse
    File.open(@dir+"/"+file,"wb") {|fp|
      fp.write(gen.out)
    }
  end
  # Returns a Text output
  def to_s
    gen=Generator::Text.new(self)
    gen.parse
    gen.out
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
reportbuilder-0.1.0 lib/reportbuilder.rb