Class: SmqlToAR::SubBuilder

Inherits:
Array
  • Object
show all
Defined in:
lib/smql_to_ar/query_builder.rb

Direct Known Subclasses

And, Or

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(parent, tmp = false) ⇒ SubBuilder

Returns a new instance of SubBuilder.



224
225
226
227
# File 'lib/smql_to_ar/query_builder.rb', line 224

def initialize parent, tmp = false
	@parent = parent
	@parent.where self  unless @parend.nil? && tmp
end

Instance Attribute Details

#_whereObject (readonly)

Returns the value of attribute _where.



221
222
223
# File 'lib/smql_to_ar/query_builder.rb', line 221

def _where
  @_where
end

#parentObject (readonly)

Returns the value of attribute parent.



221
222
223
# File 'lib/smql_to_ar/query_builder.rb', line 221

def parent
  @parent
end

Instance Method Details

#collect_build_where(indent = nil) ⇒ Object



272
273
274
275
# File 'lib/smql_to_ar/query_builder.rb', line 272

def collect_build_where indent = nil
	indent = (indent||0) + 1
	collect {|x| "(#{x.respond_to?( :build_where) ? x.build_where( indent) : x.to_s})" }
end

#defaultObject



270
# File 'lib/smql_to_ar/query_builder.rb', line 270

def default()  SmqlToAR::And  end

#default_new(parent) ⇒ Object



271
# File 'lib/smql_to_ar/query_builder.rb', line 271

def default_new( parent)  default.new self, parent, false  end

#inspectObject



267
268
269
# File 'lib/smql_to_ar/query_builder.rb', line 267

def inspect
	"#{self.class.name.sub( /.*::/, '')}[ #{collect(&:inspect).join ', '}]"
end

#new(parent, tmp = false) ⇒ Object



229
230
231
232
233
# File 'lib/smql_to_ar/query_builder.rb', line 229

def new parent, tmp = false
	super parent, tmp
	#return parent  if self.class == parent.class
	#super parent
end

#optimize!Object



248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
# File 'lib/smql_to_ar/query_builder.rb', line 248

def optimize!
	ext = []
	collect! do |sub|
		sub = sub.optimize!  if sub.kind_of? SubBuilder
		if self.class == sub.class
			ext.push *sub
			nil
		elsif sub.blank?
			nil
		elsif 1 == sub.size
			sub.first
		else
			sub
		end
	end.compact!
	push *ext
	self
end

#type_correction!Object



237
238
239
240
241
242
243
244
245
246
# File 'lib/smql_to_ar/query_builder.rb', line 237

def type_correction!
	collect! do |sub|
		if sub.kind_of? Array
			sub = default[ *sub]  unless sub.respond_to?( :type_correction!)
			sub.type_correction!
		end
		sub
	end
	self
end