Module: RGen::XSD::MetamodelModificationHelper
- Defined in:
- lib/rgen/xsd/metamodel_modification_helper.rb
Instance Method Summary collapse
- #attribute_to_reference(env, desc, target) ⇒ Object
- #create_opposite(env, desc, name, upper_bound) ⇒ Object
- #find_feature(env, desc) ⇒ Object
Instance Method Details
#attribute_to_reference(env, desc, target) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/rgen/xsd/metamodel_modification_helper.rb', line 12 def attribute_to_reference(env, desc, target) a = find_feature(env, desc) r = env.new(RGen::ECore::EReference, Hash[ RGen::ECore::EStructuralFeature.ecore.eAllStructuralFeatures.collect do |f| next if f.derived p = [f.name, a.getGeneric(f.name)] if f.many a.setGeneric(f.name, []) else a.setGeneric(f.name, nil) end p end]) r.eType = target r end |
#create_opposite(env, desc, name, upper_bound) ⇒ Object
29 30 31 32 33 34 |
# File 'lib/rgen/xsd/metamodel_modification_helper.rb', line 29 def create_opposite(env, desc, name, upper_bound) r = find_feature(env, desc) r.eOpposite = env.new(RGen::ECore::EReference, :name => name, :eType => r.eContainingClass, :eContainingClass => r.eType, :upperBound => upper_bound, :eOpposite => r) end |
#find_feature(env, desc) ⇒ Object
7 8 9 10 |
# File 'lib/rgen/xsd/metamodel_modification_helper.rb', line 7 def find_feature(env, desc) env.find(:class => RGen::ECore::EStructuralFeature, :name => desc.split("#").last). find{|f| f.eContainingClass.name == desc.split("#").first} end |