Class: Array

Inherits:
Object
  • Object
show all
Defined in:
lib/rgen/array_extensions.rb

Instance Method Summary collapse

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(m, *args) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/rgen/array_extensions.rb', line 12

def method_missing(m, *args)
	super unless size == 0 or compact.any?{|e| e.is_a? RGen::MetamodelBuilder::MMBase}
	# use an array to build the result to achiev similar ordering
	result = []
	inResult = {}
	compact.each do |e|
		if e.is_a? RGen::MetamodelBuilder::MMBase				
			((o=e.send(m)).is_a?(Array) ? o : [o] ).each do |v|
				next if inResult[v.object_id]
				inResult[v.object_id] = true
				result << v
			end
		else
			raise StandardError.new("Trying to call a method on an array element not a RGen MMBase")
		end
	end
	result.compact
end

Instance Method Details

#>>(method) ⇒ Object



8
9
10
# File 'lib/rgen/array_extensions.rb', line 8

def >>(method)
	compact.inject([]) { |r,e| r | ( (o=e.send(method)).is_a?(Array) ? o : [o] ) }
end