Method: Bmg::Sql::SelectList#desaliaser

Defined in:
lib/bmg/sql/nodes/select_list.rb

#desaliaser(for_predicate = false) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 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