class Lolita::Configuration::Columns

Attributes

dbi[R]
parent[RW]

Public Class Methods

new(dbi, *args, &block) click to toggle source
# File lib/lolita/configuration/columns.rb, line 12
def initialize(dbi, *args, &block)
  @dbi=dbi
  @columns=[]
  @generated_yet = (block_given? || (args && args.any?))
  set_attributes(*args)
  self.instance_eval(&block) if block_given?
end

Public Instance Methods

by_name(name) click to toggle source

Find first column by name

# File lib/lolita/configuration/columns.rb, line 27
def by_name(name)
  name = name.to_sym
  self.detect do |column|
    column.name == name
  end
end
column(*args, &block) click to toggle source

Add column to columns Array. Receive attributes for column as Hash and/or block.

# File lib/lolita/configuration/columns.rb, line 21
def column *args, &block
  @columns << build_element(*args,&block)
  @columns.last
end
each() { |column| ... } click to toggle source
# File lib/lolita/configuration/columns.rb, line 34
def each
  self.populate
  @columns.each_with_index{|column,index|
    if column.is_a?(Lolita::Configuration::Column)
      yield column
    else
      raise "Any column must be Lolita::Configuratin::Column object instead of #{column.class}."
    end
  }
end
generate!() click to toggle source
# File lib/lolita/configuration/columns.rb, line 46
def generate!
  @generated_yet = true
  @columns.clear
  @dbi.fields.each_with_index{|field,index|
    unless field.technical?
      column(field)
    end
  }
end
populate() click to toggle source
# File lib/lolita/configuration/columns.rb, line 56
def populate
  self.generate! if @columns.empty? && !@generated_yet
end

Private Instance Methods

build_element(*column,&block) click to toggle source
# File lib/lolita/configuration/columns.rb, line 84
def build_element(*column,&block)
  if column[0].is_a?(Lolita::Configuration::Column)
    column[0]
  elsif column[0].is_a?(Proc)
    Lolita::Configuration::Column.new(@dbi,&column[0]) 
  else
    Lolita::Configuration::Column.new(@dbi,*column, &block)
  end
end
collection_variable() click to toggle source
# File lib/lolita/configuration/columns.rb, line 80
def collection_variable
  @columns
end
generate_collection_elements!() click to toggle source
# File lib/lolita/configuration/columns.rb, line 76
def generate_collection_elements!
  self.populate
end
set_attributes(*args) click to toggle source
# File lib/lolita/configuration/columns.rb, line 62
def set_attributes(*args)
  if args && args.any?
    options = args.extract_options! || {}
    args.each do |col_name|
      column col_name
    end
    options.each do |key,value|
      if key == :column
        column value
      end
    end
  end
end