class Spoom::Coverage::SnapshotPrinter
def percent(value, total)
def percent(value, total) return "" if value.nil? || total.nil? || total == 0 " (#{(value.to_f * 100.0 / total.to_f).round}%)" end
def print_map(hash, total)
def print_map(hash, total) indent hash.each do |key, value| next unless value > 0 printl("#{key}: #{value}#{percent(value, total)}") end dedent end
def print_snapshot(snapshot)
def print_snapshot(snapshot) methods = snapshot.methods_with_sig + snapshot.methods_without_sig calls = snapshot.calls_typed + snapshot.calls_untyped if snapshot.version_static || snapshot.version_runtime printl("Sorbet static: #{snapshot.version_static}") if snapshot.version_static printl("Sorbet runtime: #{snapshot.version_runtime}") if snapshot.version_runtime printn end printl("Content:") indent printl("files: #{snapshot.files} (including #{snapshot.rbi_files} RBIs)") printl("modules: #{snapshot.modules}") printl("classes: #{snapshot.classes - snapshot.singleton_classes}") printl("methods: #{methods}") dedent printn printl("Sigils:") print_map(snapshot.sigils, snapshot.files) printn printl("Methods:") methods_map = { "with signature" => snapshot.methods_with_sig, "without signature" => snapshot.methods_without_sig, } print_map(methods_map, methods) printn printl("Calls:") calls_map = { "typed" => snapshot.calls_typed, "untyped" => snapshot.calls_untyped, } print_map(calls_map, calls) end