From 0def6434d631a443bf1a53110e1139c015266215 Mon Sep 17 00:00:00 2001 From: Jordan Wages Date: Tue, 26 Aug 2025 23:24:50 -0500 Subject: [PATCH] Adding variables --- .../AdvancedCalculator.csproj | 2 +- .../Converters/BoolToGridLengthConverter.cs | 1 + .../Services/CalculatorService.cs | 24 ++++++++++--------- 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/AdvancedCalculator/AdvancedCalculator.csproj b/src/AdvancedCalculator/AdvancedCalculator.csproj index 52bc69e..11269ea 100644 --- a/src/AdvancedCalculator/AdvancedCalculator.csproj +++ b/src/AdvancedCalculator/AdvancedCalculator.csproj @@ -19,6 +19,6 @@ - + diff --git a/src/AdvancedCalculator/Converters/BoolToGridLengthConverter.cs b/src/AdvancedCalculator/Converters/BoolToGridLengthConverter.cs index d1de3fb..6f6ca9a 100644 --- a/src/AdvancedCalculator/Converters/BoolToGridLengthConverter.cs +++ b/src/AdvancedCalculator/Converters/BoolToGridLengthConverter.cs @@ -1,6 +1,7 @@ using System; using Avalonia.Data.Converters; using Avalonia; +using Avalonia.Controls; namespace AdvancedCalculator.Converters; diff --git a/src/AdvancedCalculator/Services/CalculatorService.cs b/src/AdvancedCalculator/Services/CalculatorService.cs index aaf47c2..4b43519 100644 --- a/src/AdvancedCalculator/Services/CalculatorService.cs +++ b/src/AdvancedCalculator/Services/CalculatorService.cs @@ -12,10 +12,12 @@ public class CalculatorService : ICalculatorService { private readonly object _lock = new(); - // We attempt to use the legacy namespace to maximize compatibility. - // If using the newer CSMic.StandardLibrary with different namespaces, - // update the using directives and type names here. - private readonly csmic.InputInterpreter _interpreter = new(); + private readonly CSMic.InputInterpreter _interpreter = new(); + + public CalculatorService() + { + CSMic.StandardLibrary.Initializer.InitializeAllFunctions(_interpreter); + } public Task InterpretAsync(string input) { @@ -24,17 +26,17 @@ public class CalculatorService : ICalculatorService lock (_lock) { _interpreter.Interpret(input); - var output = _interpreter.Output ?? string.Empty; + var output = string.IsNullOrWhiteSpace(_interpreter.StringValue) ? _interpreter.NumericValue.ToString() : _interpreter.StringValue; // Build variables list var variables = new List(); - foreach (var kvp in _interpreter.Variables) + foreach (var csmicVariable in _interpreter.Variables) { - var name = kvp.Key; - var variable = kvp.Value; - var valueString = variable?.Value?.ToString() ?? string.Empty; + var name = csmicVariable.Name; + var variable = csmicVariable.Value; + var valueString = variable?.ToString() ?? string.Empty; - var isExpression = variable?.Type == csmic.VariableType.Equation; + var isExpression = csmicVariable.Type == CSMic.VariableType.Expression; var item = new VariableItem { VariableName = name, @@ -48,7 +50,7 @@ public class CalculatorService : ICalculatorService { // Compute the expression-based variable's current value _interpreter.Interpret(valueString); - item.ExpressionComputation = _interpreter.Output ?? string.Empty; + item.ExpressionComputation = _interpreter.StringValue ?? string.Empty; item.Icon = IconFont.Function; }