37 lines
593 B
Ruby
37 lines
593 B
Ruby
# frozen_string_literal: true
|
|
module Arel
|
|
module Collectors
|
|
class Bind
|
|
def initialize
|
|
@parts = []
|
|
end
|
|
|
|
def << str
|
|
@parts << str
|
|
self
|
|
end
|
|
|
|
def add_bind bind
|
|
@parts << bind
|
|
self
|
|
end
|
|
|
|
def value; @parts; end
|
|
|
|
def substitute_binds bvs
|
|
bvs = bvs.dup
|
|
@parts.map do |val|
|
|
if Arel::Nodes::BindParam === val
|
|
bvs.shift
|
|
else
|
|
val
|
|
end
|
|
end
|
|
end
|
|
|
|
def compile bvs
|
|
substitute_binds(bvs).join
|
|
end
|
|
end
|
|
end
|
|
end
|