Class: MetricFu::Heckle::Generator
Class Method Summary
collapse
Instance Method Summary
collapse
#generate_html, generate_report, #generate_report, #initialize, metric_dir, #save_html, #template_file, #template_name
#cycle, #inline_css, #link_to_filename
Class Method Details
.template_name ⇒ Object
67
68
69
|
# File 'lib/metric_fu/heckle.rb', line 67
def self.template_name
"heckle"
end
|
Instance Method Details
#analyze ⇒ Object
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
# File 'lib/metric_fu/heckle.rb', line 12
def analyze
files_to_heckle = MetricFu.heckle[:dirs_to_heckle].map{|dir| Dir[File.join(dir, "**/*.rb")] }
class_names = files_to_heckle.flatten.collect do |f|
buffer = open(f).readlines.join("\n")
outline = buffer.scan(/class\s+([\w|:]*)+?/)
klass = path_to_classname(f).split('::').last
end
class_names.flatten!
output = {}
ObjectSpace.each_object(Class) do |klass|
class_names.each do |name|
if klass.name =~ /::#{name}$/
output[name] = `heckle #{name} -t spec/**/#{underscore(name)}_spec.rb`
end
end
end
@pages = []
output.each_pair do |name, content|
page = Page.new(content)
if page
page.filename = name
@pages << page
end
end
generate_pages
end
|
#generate_page(page) ⇒ Object
49
50
51
|
# File 'lib/metric_fu/heckle.rb', line 49
def generate_page(page)
save_html(page.to_html, page.path)
end
|
#generate_pages ⇒ Object
40
41
42
43
44
45
46
47
|
# File 'lib/metric_fu/heckle.rb', line 40
def generate_pages
@pages.each do |page|
generate_page(page)
end
save_html(ERB.new(File.read(template_file)).result(binding))
end
|
#path_to_classname(s) ⇒ Object
53
54
55
56
57
|
# File 'lib/metric_fu/heckle.rb', line 53
def path_to_classname(s)
f = s.sub(/^lib/, '').sub(/\.rb$/, '').split('/')
f = f.map { |path| path.split(/_/).map { |seg| seg.capitalize }.join }
f.join('::')
end
|
#underscore(camel_cased_word) ⇒ Object
59
60
61
62
63
64
65
|
# File 'lib/metric_fu/heckle.rb', line 59
def underscore(camel_cased_word)
camel_cased_word.to_s.gsub(/::/, '/').
gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
gsub(/([a-z\d])([A-Z])/,'\1_\2').
gsub("-", "_").
downcase
end
|