Module: RGen::ECore::EPackage::ClassModule

Includes:
NameHelper
Defined in:
lib/mmgen/mm_ext/ecore_ext.rb

Instance Method Summary collapse

Methods included from NameHelper

#camelize, #className, #firstToLower, #firstToUpper, #normalize, #saneClassName, #saneMethodName

Instance Method Details

#allClassesSortedObject



40
41
42
# File 'lib/mmgen/mm_ext/ecore_ext.rb', line 40

def allClassesSorted
  inheritanceOrderClasses(classesInGenerationOrdering)
end

#allClassifiersObject



19
20
21
# File 'lib/mmgen/mm_ext/ecore_ext.rb', line 19

def allClassifiers
  eSubpackages.inject(eClassifiers) {|r,p| r.concat(p.allClassifiers) }	 
end

#ancestorPackagesObject



23
24
25
26
# File 'lib/mmgen/mm_ext/ecore_ext.rb', line 23

def ancestorPackages
  return [] unless eSuperPackage
  [eSuperPackage] + eSuperPackage.ancestorPackages
end

#classesInGenerationOrderingObject



32
33
34
# File 'lib/mmgen/mm_ext/ecore_ext.rb', line 32

def classesInGenerationOrdering
  ownClasses + eSubpackages.collect{|s| s.classesInGenerationOrdering}.flatten
end

#inheritanceOrderClasses(cls) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/mmgen/mm_ext/ecore_ext.rb', line 44

def inheritanceOrderClasses(cls)
  sortArray = cls.dup
  i1 = 0
  while i1 < sortArray.size-1
    again = false
    for i2 in i1+1..sortArray.size-1
      e2 = sortArray[i2]
      if sortArray[i1].eSuperTypes.include?(e2)
        sortArray.delete(e2)
        sortArray.insert(i1,e2)
        again = true
        break
      end
    end
    i1 += 1 unless again
  end
  sortArray
end

#moduleNameObject



10
11
12
# File 'lib/mmgen/mm_ext/ecore_ext.rb', line 10

def moduleName
  firstToUpper(name)
end

#needClassReorder?Boolean

Returns:



36
37
38
# File 'lib/mmgen/mm_ext/ecore_ext.rb', line 36

def needClassReorder?
  classesInGenerationOrdering != inheritanceOrderClasses(classesInGenerationOrdering)
end

#ownClassesObject



28
29
30
# File 'lib/mmgen/mm_ext/ecore_ext.rb', line 28

def ownClasses
  eClassifiers.select{|c| c.is_a?(EClass)}
end

#qualifiedModuleName(rootPackage) ⇒ Object



14
15
16
17
# File 'lib/mmgen/mm_ext/ecore_ext.rb', line 14

def qualifiedModuleName(rootPackage)
  return moduleName unless eSuperPackage and self != rootPackage
  eSuperPackage.qualifiedModuleName(rootPackage) + "::" + moduleName
end