module Bmg::Sql::SelectList

Public Instance Methods

desaliaser(for_predicate = false) click to toggle source
# File lib/bmg/sql/nodes/select_list.rb, line 6
def desaliaser(for_predicate = false)
  ->(a){
    item = sexpr_body.find{|item| item.as_name.to_s == a.to_s }
    return nil unless left = item && item.left
    return left unless for_predicate
    case left.first
    when :literal
      Predicate::Grammar.sexpr([:literal, left.last])
    when :qualified_name
      Predicate::Grammar.sexpr([:qualified_identifier, left.qualifier.to_sym, left.as_name.to_sym])
    else
      raise "Unexpected select_item `#{left}`"
    end
  }
end
has_computed_attributes?() click to toggle source
# File lib/bmg/sql/nodes/select_list.rb, line 26
def has_computed_attributes?
  sexpr_body.any?{|item| item.is_computed? }
end
is_table_dee?() click to toggle source
# File lib/bmg/sql/nodes/select_list.rb, line 22
def is_table_dee?
  Builder::IS_TABLE_DEE == self
end
knows?(as_name) click to toggle source
# File lib/bmg/sql/nodes/select_list.rb, line 30
def knows?(as_name)
  find_child{|child| child.as_name == as_name }
end
to_attr_list() click to toggle source
# File lib/bmg/sql/nodes/select_list.rb, line 34
def to_attr_list
  sexpr_body.map{|a| a.as_name.to_sym }
end
to_sql(buffer, dialect) click to toggle source
# File lib/bmg/sql/nodes/select_list.rb, line 38
def to_sql(buffer, dialect)
  sexpr_body.each_with_index do |item,index|
    buffer << COMMA << SPACE unless index == 0
    item.to_sql(buffer, dialect)
  end
  buffer
end