Class: Turbulence::Generators::ScatterPlot

Inherits:
Object
  • Object
show all
Defined in:
lib/turbulence/generators/scatterplot.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(metrics_hash, x_metric = Turbulence::Calculators::Churn, y_metric = Turbulence::Calculators::Complexity) ⇒ ScatterPlot

Returns a new instance of ScatterPlot.



6
7
8
9
10
11
12
# File 'lib/turbulence/generators/scatterplot.rb', line 6

def initialize(metrics_hash,
               x_metric = Turbulence::Calculators::Churn,
               y_metric = Turbulence::Calculators::Complexity)
  @x_metric     = x_metric
  @y_metric     = y_metric
  @metrics_hash = metrics_hash
end

Instance Attribute Details

#metrics_hashObject (readonly)

Returns the value of attribute metrics_hash.



4
5
6
# File 'lib/turbulence/generators/scatterplot.rb', line 4

def metrics_hash
  @metrics_hash
end

#x_metricObject (readonly)

Returns the value of attribute x_metric.



4
5
6
# File 'lib/turbulence/generators/scatterplot.rb', line 4

def x_metric
  @x_metric
end

#y_metricObject (readonly)

Returns the value of attribute y_metric.



4
5
6
# File 'lib/turbulence/generators/scatterplot.rb', line 4

def y_metric
  @y_metric
end

Class Method Details

.from(metrics_hash) ⇒ Object



14
15
16
# File 'lib/turbulence/generators/scatterplot.rb', line 14

def self.from(metrics_hash)
  new(metrics_hash)
end

Instance Method Details

#clean_metrics_from_missing_dataObject



36
37
38
39
40
# File 'lib/turbulence/generators/scatterplot.rb', line 36

def clean_metrics_from_missing_data
  metrics_hash.reject! do |filename, metrics|
    metrics[x_metric].nil? || metrics[y_metric].nil?
  end
end

#file_metrics_for_directory(metrics_hash) ⇒ Object



49
50
51
52
53
54
55
# File 'lib/turbulence/generators/scatterplot.rb', line 49

def file_metrics_for_directory(metrics_hash)
  metrics_hash.map do |filename, metrics|
    { :filename => filename,
      :x        => metrics[x_metric],
      :y        => metrics[y_metric]}
  end
end

#generate_results(metrics, ci) ⇒ Object



57
58
59
60
61
62
# File 'lib/turbulence/generators/scatterplot.rb', line 57

def generate_results(metrics, ci)
  File.open("cc.js", "w") do |f|
    ci.copy_templates_into(Dir.pwd)
    f.write Turbulence::Generators::ScatterPlot.from(metrics).to_js
  end
end

#grouped_by_directoryObject



42
43
44
45
46
47
# File 'lib/turbulence/generators/scatterplot.rb', line 42

def grouped_by_directory
  metrics_hash.group_by do |filename, _|
    directories = File.dirname(filename).split("/")
    directories[0..1].join("/")
  end
end

#mangleObject



18
19
20
21
22
23
# File 'lib/turbulence/generators/scatterplot.rb', line 18

def mangle
  mangler = FileNameMangler.new
  mangled = {}
  metrics_hash.each_pair { |filename, metrics| mangled[mangler.mangle_name(filename)] = metrics}
  @metrics_hash = mangled
end

#to_jsObject



25
26
27
28
29
30
31
32
33
34
# File 'lib/turbulence/generators/scatterplot.rb', line 25

def to_js
  clean_metrics_from_missing_data
  directory_series = {}

  grouped_by_directory.each_pair do |directory, metrics_hash|
    directory_series[directory] = file_metrics_for_directory(metrics_hash)
  end

  "var directorySeries = #{directory_series.to_json};"
end