StatifierBlocks.ViewModel.Slot (StatifierBlocks v0.15.0)

Copy Markdown View Source

One named slot: declared or raw, with its children and its own findings.

outcome_key is the container's slot_outcome_key declaration for this slot, normalized (ADR-0005 decision 10, proposed 10f) - the config key each child in this slot carries its outcome under, or nil when the type declared none. It is here as well as on the children so that a consumer can ask the question of the slot without walking into it.

condition is the source text of the condition this slot is subject to: the parent type's own :expression config field keyed by this slot's name, read through the value_path ADR-0002 decision 7 was amended to carry. nil when the type declares no such field, when the author has not written one yet, or when the value stored there is not a non-empty string.

It is resolved here for the reason Node.outcome is: the rendering side reads one string and never learns that core.branch is the type whose arms are guarded. A host type that keys an :expression field by one of its own slot names gets the same chip, and nothing here tests a type name to decide it.

Summary

Types

t()

@type t() :: %StatifierBlocks.ViewModel.Slot{
  arity: StatifierBlocks.BlockType.slot_arity() | nil,
  children: [StatifierBlocks.ViewModel.Node.t()],
  condition: String.t() | nil,
  declared?: boolean(),
  findings: [StatifierBlocks.Finding.t()],
  label: String.t(),
  name: StatifierBlocks.Block.slot_name(),
  outcome_key: String.t() | nil,
  style: :primary | :secondary | :failure | :tray
}