class SorbetProgress::Calculator
Computes the percentage stats for sigil metrics as well as other stats.
Attributes
coverage_metrics[R]
sigil_percentages[R]
total[R]
Public Class Methods
new(metrics)
click to toggle source
# File lib/sorbet_progress/calculator.rb, line 13 def initialize(metrics) values = collect_values(sigil_breakdown_stats, metrics) @total = values.delete(:total_files) @sigil_percentages = values.map do |label, value| percentage = value * 1.0 / @total if @total && value { label: label, value: value, percentage: percentage } end @coverage_metrics = collect_values(coverage_stats, metrics) end
Private Instance Methods
collect_values(requested_stats, metrics)
click to toggle source
# File lib/sorbet_progress/calculator.rb, line 61 def collect_values(requested_stats, metrics) result = {} requested_stats.map do |label, name| result[label] = metrics[name]&.value end result end
coverage_stats()
click to toggle source
# File lib/sorbet_progress/calculator.rb, line 33 def coverage_stats { total_signatures: "ruby_typer.unknown..types.sig.count", total_methods: "ruby_typer.unknown..types.input.methods.total", total_classes: "ruby_typer.unknown..types.input.classes.total" } end
sigil_breakdown_stats()
click to toggle source
# File lib/sorbet_progress/calculator.rb, line 43 def sigil_breakdown_stats { total_files: "ruby_typer.unknown..types.input.files", sigil_ignore: "ruby_typer.unknown..types.input.files.sigil.ignore", sigil_false: "ruby_typer.unknown..types.input.files.sigil.false", sigil_true: "ruby_typer.unknown..types.input.files.sigil.true", sigil_strict: "ruby_typer.unknown..types.input.files.sigil.strict", sigil_strong: "ruby_typer.unknown..types.input.files.sigil.strong" } end