Class: AnalyzedClassGenerator

Inherits:
AbstractClassAnalyzer show all
Defined in:
lib/AnalyzedClassGenerator.rb

Instance Method Summary collapse

Methods inherited from AbstractClassAnalyzer

#didReachEndOfClass, #didReachEndOfFunction, #initialize, #resetClassStats, #resetFunctionStats, #updateCurlyBraceIndex, #updateFunctionCurlyBraceIndex

Constructor Details

This class inherits a constructor from AbstractClassAnalyzer

Instance Method Details

#classNameForLine(line, name) ⇒ Object



107
108
109
110
111
112
113
114
115
116
117
# File 'lib/AnalyzedClassGenerator.rb', line 107

def classNameForLine (line, name)
  if LineDeterminator.new(line).isClass and name == nil
    if line.include? ":" 
      return line.strip.slice(5..(line.strip.index(":")-1))
    else
      strippedLine = line.gsub("class", "").strip
      return strippedLine.slice(0..(strippedLine.index(" ")-1))
    end
  end
  return nil
end

#generateAnalyzedClassesForFile(file) ⇒ Object



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
# File 'lib/AnalyzedClassGenerator.rb', line 52

def generateAnalyzedClassesForFile (file)
  analyzedClasses = Array.new
  analyzedClass = AnalyzedClass.new

  f = File.open(file, "r")
  f.each_line do |line|
    tempClassName = classNameForLine line, analyzedClass.name
    if tempClassName != nil
      analyzedClass.name = tempClassName
    end

    if analyzedClass.name != nil
      if line.strip.length > 1
        analyzedClass.numberOfLines += 1
      end

      if analyzedClass.fileName == nil 
        analyzedClass.fileName = file
      end
      updateCurlyBraceIndex line

      if line.include? "func "
        @functionName = line.slice((line.index("func ") + 5)..(line.index("(")-1))
      end 

      if @functionName != nil
        updateFunctionCurlyBraceIndex line

        if line.strip.length > 0
          @funcLines = @funcLines + 1
        end

        if didReachEndOfFunction
          analyzedClass.addFunction(@functionName, @funcLines)
          resetFunctionStats
        end
      end

      if (line.include? "var " or line.include? "let ")
        variable = Variable.new.variableForLine line
        analyzedClass.addVariable variable
      end

      if didReachEndOfClass
        analyzedClasses.push(analyzedClass)
        resetClassStats
        analyzedClass = AnalyzedClass.new
      end
    end
  end
  f.close

  return analyzedClasses
end