class Qdsl::ColumnSet

Attributes

block[R]
columns[R]

Public Class Methods

new(columns, block) click to toggle source
# File lib/column_set.rb, line 5
def initialize(columns, block)
  @columns = columns.collect { |x| Column[x] }
  @block = block
end

Public Instance Methods

capture(source, join_sources) click to toggle source
# File lib/column_set.rb, line 10
def capture(source, join_sources)
  sources = [source] + join_sources
  columns = @columns.collect { |x| x.with_source(source) } + if @block
    proxies = sources.collect { |x| ColumnProxy.new(x) }
    [*@block.call(Util::fix_block_params(proxies))]
  else
    []
  end

  undefined_columns = columns.select { |x| !x.exists? }
  raise "One or more undefined columns: #{undefined_columns.collect(&:name).join(', ')}" unless undefined_columns.empty?
  columns
end