Typed projection of the JSON map returned by Lemma.show/4: spec interface and
resolved temporal window.
Optional repository is the interned repository name (nil for the unnamed
workspace). Each data entry's type and each rules entry's type are raw
LemmaType JSON maps (a Rust discriminated union tagged by "kind"). Rule values
are Lemma.ShowRule structs (type, path, branches, depends_on_rules).
meta values are raw LiteralValue JSON maps. Pattern-match on those tags
directly rather than through a parallel Elixir struct hierarchy — see
Lemma.ShowData and Lemma.ShowRule.
Lemma.show/4 itself still returns the plain decoded JSON map for backward
compatibility; call from_map/1 on that map to get a typed struct.
Summary
Functions
Builds a Lemma.Show struct from the map decoded from Lemma.show/4's JSON.
Types
@type t() :: %Lemma.Show{ commentary: String.t() | nil, data: %{optional(String.t()) => Lemma.ShowData.t()}, effective_from: String.t() | nil, effective_to: String.t() | nil, meta: %{optional(String.t()) => map()}, repository: String.t() | nil, rules: %{optional(String.t()) => Lemma.ShowRule.t()}, source_type: String.t() | map() | nil, spec: String.t(), start_line: non_neg_integer(), versions: [Lemma.ShowVersion.t()] }
Functions
Builds a Lemma.Show struct from the map decoded from Lemma.show/4's JSON.
Raises KeyError if a required field (spec, start_line, data, rules) is
missing — that shape never comes from a real Lemma.show/4 call, so a missing
key here is a caller bug, not a recoverable Show variant.