Sha256: b0532e92c181e5db7281deac11e2ac353e77df9269ce558dd11a98d905869f52

Contents?: true

Size: 603 Bytes

Versions: 10

Compression:

Stored size: 603 Bytes

Contents

require 'active_support/core_ext/object/deep_dup'
require 'csb/col'

module Csb
  class Cols
    include Enumerable

    attr_reader :cols

    def initialize
      @cols = []
      yield(self) if block_given?
    end

    def copy!(other)
      @cols = other.cols.deep_dup
    end

    def each(&block)
      cols.each(&block)
    end

    def add(*args, &block)
      cols << Col.new(*args, &block)
    end

    def headers
      map(&:name)
    end

    def values_by_item(item)
      map do |col|
        col.value_by_item(item)
      end
    end
    alias_method :values, :values_by_item
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
csb-0.13.0 lib/csb/cols.rb
csb-0.12.0 lib/csb/cols.rb
csb-0.10.0 lib/csb/cols.rb
csb-0.9.0 lib/csb/cols.rb
csb-0.8.0 lib/csb/cols.rb
csb-0.7.0 lib/csb/cols.rb
csb-0.6.0 lib/csb/cols.rb
csb-0.5.1 lib/csb/cols.rb
csb-0.5.0 lib/csb/cols.rb
csb-0.4.0 lib/csb/cols.rb