# `Yarnspinnex.Script`
[🔗](https://github.com/atavistock/yarnspinnex/blob/main/lib/yarnspinnex/script.ex#L1)

A parsed Yarn script ready to run: nodes indexed by title, which one `Yarnspinnex.start/2`
should enter, the `Yarnspinnex.HostFunctions` module its calls resolve against, and a
fingerprint per node that cursors carry so a stale one is caught. Plain data - safe to cache
(in ETS, a map, wherever) across dialogue turns.

# `option`

```elixir
@type option() ::
  {:functions, module() | nil}
  | {:strict, boolean()}
  | {:known_variables, MapSet.t(String.t())}
```

# `t`

```elixir
@type t() :: %Yarnspinnex.Script{
  fingerprints: %{optional(String.t()) =&gt; non_neg_integer()},
  functions: module() | nil,
  nodes: %{optional(String.t()) =&gt; Yarnspinnex.Node.t()},
  start_title: String.t()
}
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
