module RGen::Ext::InstantiationExtensions

Public Instance Methods

build(values={}) click to toggle source
# File lib/rgen/ext/instantiation_extensions.rb, line 12
def build(values={})
        instance = self.new
        if values.is_a? Hash
                values.each do |k,v|
                        attribute = self.ecore.eAllAttributes.find {|x| x.name==k.to_s}
                        reference = self.ecore.eAllReferences.find {|x| x.name==k.to_s}
                        raise "UnexistingFeature #{k}" unless (attribute or reference)
                        setter = (k.to_s+'=').to_sym
                        instance.send setter, v
                end
        else
                raise "SingleAttributeRequired" if self.ecore.eAllAttributes.count!=1
                attribute = self.ecore.eAllAttributes[0]
                set_attr(instance,attribute,values)
        end
        instance
end

Private Instance Methods

set_attr(instance,attribute,value) click to toggle source
# File lib/rgen/ext/instantiation_extensions.rb, line 32
def set_attr(instance,attribute,value)
        setter = (attribute.name+'=').to_sym
        instance.send setter, value
end