Sha256: b73b4168547ed0198ae8b98bc797686e239a9a06fd222c069dc38b5abb20ba5a

Contents?: true

Size: 1.21 KB

Versions: 2

Compression:

Stored size: 1.21 KB

Contents

module TableCloth
  class Base
    NoPresenterError = Class.new(Exception)

    attr_reader :collection, :view

    def initialize(collection, view)
      @collection = collection
      @view       = view
    end

    def config
      self.class.config
    end

    class << self
      def presenter(klass=nil)
        return @presenter = klass if klass
        return @presenter if @presenter

        if superclass.respond_to?(:presenter)
          superclass.presenter
        else
          raise NoPresenterError, "No Presenter"
        end
      end

      def column(*args, &block)
        options = args.extract_options! || {}
        options[:proc] = block if block_given?

        column_class = options.delete(:using) || Column

        args.each do |name|
          add_column(class: column_class, options: options, name: name)
        end
      end

      def columns
        @columns ||= {}
        if superclass.respond_to? :columns
          @columns = superclass.columns.merge(@columns)
        end

        @columns
      end

      def add_column(options)
        @columns ||= {}
        @columns[options[:name]] = options
      end

      def config
        @config ||= Configuration.new
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
table_cloth-0.3.1.alpha1 lib/table_cloth/base.rb
table_cloth-0.3.0.beta3 lib/table_cloth/base.rb