class AlgebraDB::Build::SelectList

Build up a select list.

Public Class Methods

new(*selects) click to toggle source
Calls superclass method
# File lib/algebra_db/build/select_list.rb, line 6
def initialize(*selects)
  super(selects.flat_map { |i| convert_select_item(i) })

  items.each do |i|
    same_name = items.select { |i2| i2.select_alias == i.select_alias }

    raise ArgumentError, "duplicate key #{i.select_alias}" if same_name.count > 1
  end
end

Public Instance Methods

render_syntax(builder) click to toggle source
# File lib/algebra_db/build/select_list.rb, line 16
def render_syntax(builder)
  builder.separate(items) do |i, b|
    i.render_syntax(b)
  end
end
row_decoder() click to toggle source
# File lib/algebra_db/build/select_list.rb, line 49
def row_decoder
  RowDecoder.new(items)
end

Private Instance Methods

convert_select_item(item) click to toggle source
# File lib/algebra_db/build/select_list.rb, line 55
def convert_select_item(item)
  if item.respond_to?(:to_select_item)
    item.to_select_item
  else
    item.map { |k, v| SelectItem.new(v, k) }
  end
end