def method_missing(m, *args, &block)
package, classOrContainer = @commandResolver.resolveCommand(m, @package)
return super if package.nil?
return classOrContainer.send(m, *args, &block) if classOrContainer.is_a?(ExtensionContainerFactory::ExtensionContainer)
eClass = classOrContainer
nameArg, argHash = self.class.processArguments(args)
internalName = nameArg || argHash[:name]
argHash[:name] ||= nameArg if nameArg && self.class.hasNameAttribute(eClass)
resolverJobs, asRole, helperName = self.class.filterArgHash(argHash, eClass)
element = eClass.instanceClass.new(argHash)
@resolver.setElementName(element, internalName)
@env << element if @env
contextElement = @contextStack.last
if contextElement
self.class.associateWithContextElement(element, contextElement, asRole)
else
@toplevelElements << element
end
resolverJobs.each do |job|
job.receiver = element
job.namespace = contextElement
@resolver.addJob(job)
end
if block
@contextStack.push(element)
@package, oldPackage = package, @package
instance_eval(&block)
@package = oldPackage
@contextStack.pop
end
element
end