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;
}