class Spoom::Coverage::D3::CircleMap::Sigils
Public Class Methods
new(id, sigils_tree)
click to toggle source
Calls superclass method
Spoom::Coverage::D3::Base::new
# File lib/spoom/coverage/d3/circle_map.rb, line 150 def initialize(id, sigils_tree) @scores = T.let({}, T::Hash[FileTree::Node, Float]) @strictnesses = T.let({}, T::Hash[FileTree::Node, T.nilable(String)]) @sigils_tree = sigils_tree super(id, sigils_tree.roots.map { |r| tree_node_to_json(r) }) end
Public Instance Methods
tree_node_score(node)
click to toggle source
# File lib/spoom/coverage/d3/circle_map.rb, line 178 def tree_node_score(node) unless @scores.key?(node) if node.name =~ /\.rbi?$/ case tree_node_strictness(node) when "true", "strict", "strong" @scores[node] = 1.0 end elsif !node.children.empty? @scores[node] = node.children.values.sum { |n| tree_node_score(n) } / node.children.size.to_f end end @scores[node] || 0.0 end
tree_node_strictness(node)
click to toggle source
# File lib/spoom/coverage/d3/circle_map.rb, line 170 def tree_node_strictness(node) prefix = @sigils_tree.strip_prefix path = node.path path = "#{prefix}/#{path}" if prefix @strictnesses[node] ||= Spoom::Sorbet::Sigils.file_strictness(path) end
tree_node_to_json(node)
click to toggle source
# File lib/spoom/coverage/d3/circle_map.rb, line 158 def tree_node_to_json(node) if node.children.empty? return { name: node.name, strictness: tree_node_strictness(node) } end { name: node.name, children: node.children.values.map { |n| tree_node_to_json(n) }, score: tree_node_score(node), } end