Skip to content

Commit d3f9702

Browse files
committed
reduce repeated code and make a helper method to find local/global variables
1 parent ba20647 commit d3f9702

File tree

3 files changed

+10
-6
lines changed

3 files changed

+10
-6
lines changed

src/Lib/Public/Hypervisor/Starscript.Completions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ private void CompletionsExpr(string source, int pos, Expr expr, CompletionCallba
128128
{
129129
if (expr is Expr.Variable variableExpr)
130130
{
131-
return (Locals?.GetRaw(variableExpr.Name) ?? Globals.GetRaw(variableExpr.Name))?.Invoke();
131+
return GetVariable(variableExpr.Name);
132132
}
133133

134134
if (expr is Expr.Get getExpr)

src/Lib/Public/Hypervisor/Starscript.Globals.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,10 @@ public StarscriptHypervisor Set(string name, object obj)
8585
/// </summary>
8686
public void Clear() => Globals.Clear();
8787

88+
internal Func<Value>? ResolveVariable(string name) => Locals?.GetRaw(name) ?? Globals.GetRaw(name);
89+
90+
internal Value? GetVariable(string name) => ResolveVariable(name)?.Invoke();
91+
8892
/// <summary>
8993
/// Removes a single value with the specified name from the globals and returns the removed value.
9094
/// </summary>

src/Lib/Public/Hypervisor/Starscript.HV.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,7 @@ internal StringSegment RunImpl(ExecutableScript script, StringBuilder sb)
227227
{
228228
var name = script.Constants[script.GetMasked(instructionPointer++)].GetString();
229229

230-
Push((Locals?.GetRaw(name) ?? Globals.GetRaw(name))?.Invoke());
230+
Push(GetVariable(name));
231231

232232
break;
233233
}
@@ -239,7 +239,7 @@ internal StringSegment RunImpl(ExecutableScript script, StringBuilder sb)
239239

240240
Push(!value.IsMap
241241
? Value.Null
242-
: value.GetMap().GetRaw(name)?.Invoke()
242+
: GetVariable(name)
243243
);
244244

245245
break;
@@ -325,7 +325,7 @@ internal StringSegment RunImpl(ExecutableScript script, StringBuilder sb)
325325
{
326326
var name = script.Constants[script.GetMasked(instructionPointer++)].GetString();
327327

328-
Append(sb, (Locals?.GetRaw(name) ?? Globals.GetRaw(name))?.Invoke());
328+
Append(sb, GetVariable(name));
329329

330330
break;
331331
}
@@ -367,7 +367,7 @@ internal StringSegment RunImpl(ExecutableScript script, StringBuilder sb)
367367
{
368368
// Variable
369369
var name = script.Constants[script.GetMasked(instructionPointer++)].GetString();
370-
value = (Locals?.GetRaw(name) ?? Globals.GetRaw(name))?.Invoke() ?? Value.Null;
370+
value = GetVariable(name) ?? Value.Null;
371371
}
372372

373373
{
@@ -392,7 +392,7 @@ internal StringSegment RunImpl(ExecutableScript script, StringBuilder sb)
392392
{
393393
// Variable
394394
var name = script.Constants[script.GetMasked(instructionPointer++)].GetString();
395-
value = (Locals?.GetRaw(name) ?? Globals.GetRaw(name))?.Invoke() ?? Value.Null;
395+
value = GetVariable(name) ?? Value.Null;
396396
}
397397

398398
{

0 commit comments

Comments
 (0)