StaticexpandStaticexpandExpand $X / ${X} references inside text using giver as
the resolution context. $$ is left intact for MQL.
Caller's responsibility to gate (skip when the giver doesn't
compose EnvironmentMixin, or when shell.interpolate-vars is
off). This keeps the function pure on its inputs — the YAML
scope expander, for example, runs unconditionally.
StaticlookupWalk the giver's mixin chain and return the first matching
synthetic var entry, or null if no mixin declares it.
StaticownCross-host explicit-override resolution. Returns the user-explicit
override for key (no schema-default fallback), or undefined
when the host can't carry overrides (non-Environment) OR hasn't
set the key. Companion to resolveSetting; chain-resolution
consumers use this to distinguish "user set X" from "schema
default is X".
StaticresolveCross-host setting resolution.
Settings declared on a mixin that may be composed by hosts without
EnvironmentMixin (notably MobileMixin settings on NPCs) need a
single resolution entry point so consumers don't branch on the
host type. This walks the schema and falls back to the declared
default when the host can't carry overrides.
Resolve verb-position aliases on a
ParsedCommand, returning the (possibly rewritten) command plus an expansion record when one or more aliases fired.Operates on classified
RawTokens — leverages the tokenizer's existing quoting/escape work rather than manipulating raw text. Pure on its inputs except for readinggiver.getAlias.Behaviors:
\is stripped of the leading backslash and not subject to alias lookup.\\lookproduces the literal verb\look(the second `` is taken as part of the verb).$1..$9and$@(bare or braced) insidewordandlong-with-value.valuetext expand against the user's args. A naked$@token expands to the full user-arg list as separate tokens; embedded$@is a space-joined string.MudlogApi.warnwhen the giver is a Sensor.ParsedCommandcarries a synthesizedsourcefaithful enough for greedy positionals: append case preserves the user's literal post-verb slice; consume case usesCommandLineApi.formatso quoted user-args round-trip with their interior whitespace.Caller is responsible for gating on
MixinApi.isAlias(giver)— this function takesStuff & Aliasdirectly so the type discipline is at the call site.