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