class Spoom::Coverage::D3::CircleMap::Sigils

def initialize(id, file_tree, nodes_strictnesses, nodes_scores)

: (String id, FileTree file_tree, Hash[FileTree::Node, String?] nodes_strictnesses, Hash[FileTree::Node, Float] nodes_scores) -> void
def initialize(id, file_tree, nodes_strictnesses, nodes_scores)
  @nodes_strictnesses = nodes_strictnesses
  @nodes_scores = nodes_scores
  super(id, file_tree.roots.map { |r| tree_node_to_json(r) })
end

def tree_node_to_json(node)

: (FileTree::Node node) -> Hash[Symbol, untyped]
def tree_node_to_json(node)
  if node.children.empty?
    {
      name: node.name,
      strictness: @nodes_strictnesses.fetch(node, "false"),
    }
  else
    {
      name: node.name,
      children: node.children.values.map { |n| tree_node_to_json(n) },
      score: @nodes_scores.fetch(node, 0.0),
    }
  end
end