Sha256: c51301f27f28b110f125f25768b5a3fa9abb0c9e301a4dc8eb524b8f2439d632

Contents?: true

Size: 1.57 KB

Versions: 5

Compression:

Stored size: 1.57 KB

Contents

require 'table_print/cattr'
require 'table_print/column'
require 'table_print/config_resolver'
require 'table_print/config'
require 'table_print/fingerprinter'
require 'table_print/formatter'
require 'table_print/hash_extensions'
require 'table_print/printable'
require 'table_print/row_group'
require 'table_print/returnable'

module TablePrint
  class Printer

    def self.table_print(data, options={})
      p = new(data, options)
      p.table_print
    end

    def initialize(data, options={})
      @data = [data].flatten.compact
      @options = options
      @columns = nil
    end

    def table_print
      return "No data." if @data.empty?
      group = TablePrint::RowGroup.new
      columns.each do |c|
        group.set_column(c.name, c)
      end

      group_data = (@data.first.is_a? Hash) ? [@data] : @data
      group_data.each do |data|
        group.add_children(Fingerprinter.new.lift(columns, data))
      end

      group.collapse!
      return "No data." if group.columns.empty?

      [group.header, group.horizontal_separator, group.format].join("\n")
    end

    def columns
      return @columns if @columns
      defaults = TablePrint::Printable.default_display_methods(@data.first)
      c = TablePrint::ConfigResolver.new(@data.first.class, defaults, @options)
      @columns = c.columns
    end
  end
end

def tp(data=Class, *options)
  start = Time.now
  printer = TablePrint::Printer.new(data, options)
  puts printer.table_print unless data.is_a? Class
  TablePrint::Returnable.new(Time.now - start) # we have to return *something*, might as well be execution time.
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
table_print-1.1.4 lib/table_print.rb
table_print-1.1.3 lib/table_print.rb
table_print-1.1.2 lib/table_print.rb
table_print-1.1.1 lib/table_print.rb
table_print-1.1.0 lib/table_print.rb