Skip to content

Commit 9fa4649

Browse files
authored
Merge pull request #50 from codingseb/dev
Dev
2 parents afee33e + bd6cc78 commit 9fa4649

File tree

3 files changed

+37
-5
lines changed

3 files changed

+37
-5
lines changed

CodingSeb.ExpressionEvaluator.Tests/ExpressionEvaluatorTests.cs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2064,5 +2064,26 @@ public object EvaluateWithSpecificEvaluator(ExpressionEvaluator evaluator, strin
20642064
}
20652065

20662066
#endregion
2067+
2068+
#region With SubExpressions variables
2069+
2070+
[Test]
2071+
public void EvaluateWithSubExpressionsVariables()
2072+
{
2073+
ExpressionEvaluator evaluator = new ExpressionEvaluator();
2074+
2075+
evaluator.Variables["a"] = 1;
2076+
evaluator.Variables["b"] = 2;
2077+
evaluator.Variables["c"] = new SubExpression("a+b");
2078+
evaluator.Variables["d"] = new SubExpression("c+3");
2079+
2080+
evaluator.Evaluate("a").ShouldBe(1);
2081+
evaluator.Evaluate("b").ShouldBe(2);
2082+
evaluator.Evaluate("c").ShouldBe(3);
2083+
evaluator.Evaluate("d").ShouldBe(6);
2084+
evaluator.Evaluate("d-a").ShouldBe(5);
2085+
}
2086+
2087+
#endregion
20672088
}
20682089
}

CodingSeb.ExpressionEvaluator/CodingSeb.ExpressionEvaluator.csproj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
<Product>CodingSeb.ExpressionEvaluator</Product>
66
<Description>A Simple Math and Pseudo C# Expression Evaluator in One C# File. Can also execute small C# like scripts</Description>
77
<Copyright>Copyright © Coding Seb 2017</Copyright>
8-
<Version>1.4.8.0</Version>
9-
<AssemblyVersion>1.4.8.0</AssemblyVersion>
10-
<FileVersion>1.4.8.0</FileVersion>
8+
<Version>1.4.9.0</Version>
9+
<AssemblyVersion>1.4.9.0</AssemblyVersion>
10+
<FileVersion>1.4.9.0</FileVersion>
1111
<OutputPath>bin\$(Configuration)\</OutputPath>
1212
<Authors>Coding Seb</Authors>
1313
<PackageId>CodingSeb.ExpressionEvaluator</PackageId>
@@ -18,7 +18,7 @@
1818
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
1919
<PackageIconUrl>https://github.com/codingseb/ExpressionEvaluator/blob/master/Icon.png?raw=true</PackageIconUrl>
2020
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
21-
<PackageReleaseNotes>* Update nuget Microsoft.CSharp dependency to version 4.7.0</PackageReleaseNotes>
21+
<PackageReleaseNotes>* You can now create SubExpression variables that are evaluate when met</PackageReleaseNotes>
2222
<PackageLicenseFile>LICENSE.md</PackageLicenseFile>
2323
<RepositoryUrl>https://github.com/codingseb/ExpressionEvaluator</RepositoryUrl>
2424
</PropertyGroup>

CodingSeb.ExpressionEvaluator/ExpressionEvaluator.cs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/******************************************************************************************************
22
Title : ExpressionEvaluator (https://github.com/codingseb/ExpressionEvaluator)
3-
Version : 1.4.8.0
3+
Version : 1.4.9.0
44
(if last digit (the forth) is not a zero, the version is an intermediate version and can be unstable)
55
66
Author : Coding Seb
@@ -2751,6 +2751,7 @@ protected virtual object ProcessStack(Stack<object> stack)
27512751
{
27522752
List<object> list = stack
27532753
.Select(e => e is ValueTypeNestingTrace valueTypeNestingTrace ? valueTypeNestingTrace.Value : e)
2754+
.Select(e => e is SubExpression subExpression ? Evaluate(subExpression.Expression) : e)
27542755
.ToList();
27552756

27562757
OperatorsEvaluations.ToList().ForEach((IDictionary<ExpressionOperator, Func<dynamic, dynamic, object>> operatorEvalutationsDict) =>
@@ -3787,6 +3788,16 @@ public partial class StronglyTypedVariable
37873788
public object Value { get; set; }
37883789
}
37893790

3791+
public partial class SubExpression
3792+
{
3793+
public string Expression { get; set; }
3794+
3795+
public SubExpression(string expression)
3796+
{
3797+
Expression = expression;
3798+
}
3799+
}
3800+
37903801
public partial class ExpressionEvaluatorSyntaxErrorException : Exception
37913802
{
37923803
public ExpressionEvaluatorSyntaxErrorException()

0 commit comments

Comments
 (0)