Class: Spoom::Coverage::Snapshot

Inherits:
T::Struct
  • Object
show all
Extended by:
T::Sig
Defined in:
lib/spoom/coverage/snapshot.rb

Constant Summary collapse

STRICTNESSES =

The strictness name as found in the Sorbet metrics file

T.let(["ignore", "false", "true", "strict", "strong", "stdlib"].freeze, T::Array[String])

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.from_json(json) ⇒ Object


36
37
38
# File 'lib/spoom/coverage/snapshot.rb', line 36

def self.from_json(json)
  from_obj(JSON.parse(json))
end

.from_obj(obj) ⇒ Object


41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/spoom/coverage/snapshot.rb', line 41

def self.from_obj(obj)
  snapshot = Snapshot.new
  snapshot.timestamp = obj.fetch("timestamp", 0)
  snapshot.version_static = obj.fetch("version_static", nil)
  snapshot.version_runtime = obj.fetch("version_runtime", nil)
  snapshot.duration = obj.fetch("duration", 0)
  snapshot.commit_sha = obj.fetch("commit_sha", nil)
  snapshot.commit_timestamp = obj.fetch("commit_timestamp", nil)
  snapshot.files = obj.fetch("files", 0)
  snapshot.rbi_files = obj.fetch("rbi_files", 0)
  snapshot.modules = obj.fetch("modules", 0)
  snapshot.classes = obj.fetch("classes", 0)
  snapshot.singleton_classes = obj.fetch("singleton_classes", 0)
  snapshot.methods_with_sig = obj.fetch("methods_with_sig", 0)
  snapshot.methods_without_sig = obj.fetch("methods_without_sig", 0)
  snapshot.calls_typed = obj.fetch("calls_typed", 0)
  snapshot.calls_untyped = obj.fetch("calls_untyped", 0)

  sigils = obj.fetch("sigils", {})
  if sigils
    Snapshot::STRICTNESSES.each do |strictness|
      next unless sigils.key?(strictness)
      snapshot.sigils[strictness] = sigils[strictness]
    end
  end

  snapshot
end

Instance Method Details


30
31
32
33
# File 'lib/spoom/coverage/snapshot.rb', line 30

def print(out: $stdout, colors: true, indent_level: 0)
  printer = SnapshotPrinter.new(out: out, colors: colors, indent_level: indent_level)
  printer.print_snapshot(self)
end

#to_json(*arg) ⇒ Object


71
72
73
# File 'lib/spoom/coverage/snapshot.rb', line 71

def to_json(*arg)
  serialize.to_json(*arg)
end