class Bmg::Sql::Processor::Clip
Attributes
attributes[R]
on_empty[R]
Public Class Methods
new(attributes, allbut = false, on_empty = :is_table_dee, builder)
click to toggle source
Calls superclass method
Bmg::Sql::Processor::new
# File lib/bmg/sql/processor/clip.rb, line 6 def initialize(attributes, allbut = false, on_empty = :is_table_dee, builder) super(builder) @attributes = attributes @allbut = allbut @on_empty = on_empty end
Public Instance Methods
allbut?()
click to toggle source
# File lib/bmg/sql/processor/clip.rb, line 14 def allbut? @allbut end
on_select_exp(sexpr)
click to toggle source
Calls superclass method
Bmg::Sql::Processor#on_select_exp
# File lib/bmg/sql/processor/clip.rb, line 25 def on_select_exp(sexpr) catch(:empty){ return super(sexpr) } send("select_#{on_empty}", sexpr) end
on_select_list(sexpr)
click to toggle source
# File lib/bmg/sql/processor/clip.rb, line 35 def on_select_list(sexpr) allbut = self.allbut? result = sexpr.select{|child| (child == :select_list) or attributes.include?(child.as_name.to_sym) == !allbut } (result.size==1) ? throw(:empty) : result end
on_select_star(sexpr)
click to toggle source
# File lib/bmg/sql/processor/clip.rb, line 30 def on_select_star(sexpr) raise NotImplementedError, "Allbut on * is not supported" if allbut? builder.select_list(attributes, builder.last_qualifier) end
on_set_operator(sexpr)
click to toggle source
# File lib/bmg/sql/processor/clip.rb, line 18 def on_set_operator(sexpr) apply(builder.from_self(sexpr)) end
Private Instance Methods
select_is_table_dee(sexpr)
click to toggle source
# File lib/bmg/sql/processor/clip.rb, line 46 def select_is_table_dee(sexpr) builder.select_is_table_dee(select_star(sexpr)) end
select_star(sexpr)
click to toggle source
# File lib/bmg/sql/processor/clip.rb, line 50 def select_star(sexpr) All.new(builder).call(Star.new(builder).call(sexpr)) end