Sha256: d96b04dadbcbcae08f10a699de20d6c2e81cc9a7ca03d519409cd36b8cf18891

Contents?: true

Size: 795 Bytes

Versions: 12

Compression:

Stored size: 795 Bytes

Contents

# RGen Framework
# (c) Martin Thiede, 2006

require 'rgen/metamodel_builder'

class Array

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

end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
rgen-0.6.1 lib/rgen/array_extensions.rb
rgen-0.6.0 lib/rgen/array_extensions.rb
rgen-0.5.3 lib/rgen/array_extensions.rb
rgen-0.5.4 lib/rgen/array_extensions.rb
rgen-0.5.1 lib/rgen/array_extensions.rb
rgen-0.5.2 lib/rgen/array_extensions.rb
rgen-0.4.2 lib/rgen/array_extensions.rb
rgen-0.4.5 lib/rgen/array_extensions.rb
rgen-0.4.4 lib/rgen/array_extensions.rb
rgen-0.4.3 lib/rgen/array_extensions.rb
rgen-0.4.6 lib/rgen/array_extensions.rb
rgen-0.5.0 lib/rgen/array_extensions.rb