From df0737e55afeb5c01eb39909605970d1d3a73ffc Mon Sep 17 00:00:00 2001
From: Melodi <62381002+Melodi17@users.noreply.github.com>
Date: Sun, 13 Sep 2026 13:22:20 +1000
Subject: refactor: cleanup; feat: connection to agent
---
src/marlin.core/util/VariableExpansionException.cs | 56 ++++++++++++++++++++++
1 file changed, 56 insertions(+)
create mode 100644 src/marlin.core/util/VariableExpansionException.cs
(limited to 'src/marlin.core/util/VariableExpansionException.cs')
diff --git a/src/marlin.core/util/VariableExpansionException.cs b/src/marlin.core/util/VariableExpansionException.cs
new file mode 100644
index 0000000..3053880
--- /dev/null
+++ b/src/marlin.core/util/VariableExpansionException.cs
@@ -0,0 +1,56 @@
+namespace marlin.core.util;
+
+///
+/// Base exception for all variable expansion errors
+///
+public class VariableExpansionException(string message) : Exception(message);
+
+///
+/// Thrown when a variable is referenced but not found in the variables dictionary
+///
+public class VariableNotFoundException : VariableExpansionException
+{
+ public string VariableName { get; }
+
+ public VariableNotFoundException(string variableName)
+ : base($"Variable '{variableName}' not found")
+ {
+ this.VariableName = variableName;
+ }
+}
+
+///
+/// Thrown when an expression has invalid syntax or cannot be parsed
+///
+public class InvalidExpressionException : VariableExpansionException
+{
+ public string Expression { get; }
+
+ public InvalidExpressionException(string expression)
+ : base($"Invalid expression '{expression}'")
+ {
+ this.Expression = expression;
+ }
+
+ public InvalidExpressionException(string expression, string reason)
+ : base($"Invalid expression '{expression}': {reason}")
+ {
+ this.Expression = expression;
+ }
+}
+
+///
+/// Thrown when braces are not properly matched or escaped
+///
+public class UnmatchedBraceException : VariableExpansionException
+{
+ public int Position { get; }
+ public string Remainder { get; }
+
+ public UnmatchedBraceException(string message, int position, string remainder)
+ : base(message)
+ {
+ this.Position = position;
+ this.Remainder = remainder;
+ }
+}
--
cgit v1.3.1