class Qdsl::FormatCall

Attributes

name[R]
source[R]

Public Class Methods

new(source, format, parameters, name = nil) click to toggle source
# File lib/format_call.rb, line 5
def initialize(source, format, parameters, name = nil)
  @source = source
  @format = format
  @parameters = parameters
  @name = name.to_s
end

Public Instance Methods

as(name) click to toggle source
# File lib/format_call.rb, line 12
def as(name)
  FormatCall.new(@source, @format, @parameters, name)
end
exists?() click to toggle source
# File lib/format_call.rb, line 16
def exists?
  @parameters.all? { |x| x.exists? }
end
render_sql(context, id) click to toggle source
# File lib/format_call.rb, line 20
def render_sql(context, id)
  parameter_results = @parameters.collect { |x| x.render_sql(context, id) }
  query_parameters = parameter_results.collect(&:parameters).inject({}) { |acc, x| acc.merge!(x) }
  call = do_format(@format, parameter_results.collect(&:sql))
  SimpleRenderResult.new(@name ? "#{call} AS #{@name}" : call, query_parameters)
end

Private Instance Methods

do_format(format, parameters) click to toggle source
# File lib/format_call.rb, line 29
def do_format(format, parameters)
  format.gsub /%(\d+)/ do |m, x|
    index = Integer(Regexp.last_match[1]) - 1
    parameters[index]
  end
end