Sha256: 678751bdc40942fa9c9e0bd4e564441ebd70a1c0bb1f8b9a9a001fb6e1c98ad5

Contents?: true

Size: 1.26 KB

Versions: 1

Compression:

Stored size: 1.26 KB

Contents

module TableCloth
  class Presenter
    attr_reader :view_context, :table_definition, :objects,
      :table

    def initialize(objects, table, view)
      @view_context     = view
      @table_definition = table
      @objects          = objects
      @table            = table_definition.new(objects, view)
    end

    # Short hand so your fingers don't hurt
    def v
      view_context
    end

    def render_table
      raise NoMethodError, "You must override the .render method"
    end

    def render_header
      raise NoMethodError, "You must override the .header method"
    end

    def render_rows
      raise NoMethodError, "You must override the .rows method"
    end

    def column_names
      table.column_names
    end

    def row_values(object)
      column_values = table.columns.inject([]) do |values, (key, column)|
        values << column.value(object, view_context, table); values
      end
    end

    def rows
      objects.inject([]) do |row, object|
        row << row_values(object); row
      end
    end

    def wrapper_tag(type, value=nil, &block)
      content = if block_given?
        v.content_tag(type, TableCloth.config_for(type), &block)
      else
        v.content_tag(type, value, TableCloth.config_for(type))
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
table_cloth-0.1.1 lib/table_cloth/presenter.rb