class SQB::QueryString
Public Class Methods
new(&block)
click to toggle source
# File lib/sqb/query_string.rb, line 4 def initialize(&block) @query = [] block.call(self) if block_given? end
Public Instance Methods
add(*items)
click to toggle source
# File lib/sqb/query_string.rb, line 13 def add(*items) if @group_joiner @group_items ||= [] @group_items << items else items.flatten.each do |item| add_to_query(resolve_for_query(item)) end end end
group(joiner, &block)
click to toggle source
# File lib/sqb/query_string.rb, line 24 def group(joiner, &block) @group_joiner = joiner block.call ensure if @group_items # If we have some group items after running our group, # add them into the query now. @group_items.each do |items| raw_q = items.map { |i| resolve_for_query(i) }.join(' ') raw_q << @group_joiner unless items === @group_items.last add_to_query(raw_q) end end @group_items = nil @group_joiner = nil end
to_s()
click to toggle source
# File lib/sqb/query_string.rb, line 9 def to_s @query.join(" ") end
with_brackets(&block)
click to toggle source
# File lib/sqb/query_string.rb, line 41 def with_brackets(&block) @open_bracket = true block.call ensure @query.last << ")" @open_bracket = nil @close_bracket = nil end
Private Instance Methods
add_to_query(item)
click to toggle source
# File lib/sqb/query_string.rb, line 52 def add_to_query(item) item = "(" + item if @open_bracket @query << item.to_s ensure @open_bracket = nil end
resolve_for_query(item)
click to toggle source
# File lib/sqb/query_string.rb, line 59 def resolve_for_query(item) item end