Skip to content

Commit ca5c6ac

Browse files
authored
Merge pull request #30 from codingseb/dev
Dev
2 parents 0b4cb7b + c676fdc commit ca5c6ac

File tree

6 files changed

+45
-13
lines changed

6 files changed

+45
-13
lines changed

CodingSeb.ExpressionEvaluator.Tests/ExpressionEvaluatorScriptEvaluateTests.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1283,6 +1283,12 @@ public static IEnumerable<TestCaseData> TestCasesForScriptEvaluateTests
12831283
.SetCategory("#26")
12841284
.Returns(false);
12851285

1286+
yield return new TestCaseData(Resources.Script0050, null, null, null)
1287+
.SetCategory("Script")
1288+
.SetCategory("conflict variable assignation vs on the fly in object with same name")
1289+
.SetCategory("Bug")
1290+
.Returns("{\"Hello\":3,\"No\":\"Yes\"}");
1291+
12861292
#endregion
12871293
}
12881294
}

CodingSeb.ExpressionEvaluator.Tests/Resources.Designer.cs

Lines changed: 16 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

CodingSeb.ExpressionEvaluator.Tests/Resources.resx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -265,4 +265,7 @@
265265
<data name="Script0049" type="System.Resources.ResXFileRef, System.Windows.Forms">
266266
<value>resources\script0049.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
267267
</data>
268+
<data name="Script0050" type="System.Resources.ResXFileRef, System.Windows.Forms">
269+
<value>resources\script0050.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
270+
</data>
268271
</root>
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
/* Script0050 */
2+
Json = "hye";
3+
4+
x = new ExpandoObject();
5+
x.Hello = 3;
6+
x.No = "Yes";
7+
8+
x.Json;

CodingSeb.ExpressionEvaluator/CodingSeb.ExpressionEvaluator.csproj

Lines changed: 5 additions & 6 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.3.5.0</Version>
9-
<AssemblyVersion>1.3.5.0</AssemblyVersion>
10-
<FileVersion>1.3.5.0</FileVersion>
8+
<Version>1.3.6.0</Version>
9+
<AssemblyVersion>1.3.6.0</AssemblyVersion>
10+
<FileVersion>1.3.6.0</FileVersion>
1111
<OutputPath>bin\$(Configuration)\</OutputPath>
1212
<Authors>Coding Seb</Authors>
1313
<PackageId>CodingSeb.ExpressionEvaluator</PackageId>
@@ -18,9 +18,8 @@
1818
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
1919
<PackageIconUrl>https://github.com/codingseb/ExpressionEvaluator/blob/master/Icon.png?raw=true</PackageIconUrl>
2020
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
21-
<PackageReleaseNotes>* Add OptionForceIntegerNumbersEvaluationsAsDoubleByDefault (if true 1/2 = 0.5 otherwise 1/2 = 0)
22-
* Correction of a conflict between &lt;&gt; operators and &lt;&gt; used for generics
23-
* Correction of a bug when imbricate different brackets with comma separators</PackageReleaseNotes>
21+
<PackageReleaseNotes>* Change Variables In IDictionary&lt;string,object&gt;
22+
* Correction of a conflict when variable assignation vs on the fly in object with the same name</PackageReleaseNotes>
2423
</PropertyGroup>
2524
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
2625
<DebugType>full</DebugType>

CodingSeb.ExpressionEvaluator/ExpressionEvaluator.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/******************************************************************************************************
22
Title : ExpressionEvaluator (https://github.com/codingseb/ExpressionEvaluator)
3-
Version : 1.3.5.0
3+
Version : 1.3.6.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
@@ -797,15 +797,15 @@ public BindingFlags StaticBindingFlag
797797

798798
#region Custom and on the fly variables and methods
799799

800-
private Dictionary<string, object> variables = new Dictionary<string, object>(StringComparer.Ordinal);
800+
private IDictionary<string, object> variables = new Dictionary<string, object>(StringComparer.Ordinal);
801801

802802
/// <summary>
803803
/// The Values of the variable use in the expressions
804804
/// </summary>
805-
public Dictionary<string, object> Variables
805+
public IDictionary<string, object> Variables
806806
{
807807
get { return variables; }
808-
set { variables = value == null ? new Dictionary<string, object>() : new Dictionary<string, object>(value, StringComparerForCasing); }
808+
set { variables = value == null ? new Dictionary<string, object>(StringComparerForCasing) : new Dictionary<string, object>(value, StringComparerForCasing); }
809809
}
810810

811811
/// <summary>
@@ -840,7 +840,7 @@ public ExpressionEvaluator()
840840
/// Constructor with variable initialize
841841
/// </summary>
842842
/// <param name="variables">The Values of the variable use in the expressions</param>
843-
public ExpressionEvaluator(Dictionary<string, object> variables) : this()
843+
public ExpressionEvaluator(IDictionary<string, object> variables) : this()
844844
{
845845
Variables = variables;
846846
}
@@ -1830,8 +1830,8 @@ private bool EvaluateVarOrFunc(string expr, string restOfExpression, Stack<objec
18301830
{
18311831
stack.Push(varValueToPush);
18321832
}
1833-
else if ((Variables.TryGetValue(varFuncName, out dynamic cusVarValueToPush)
1834-
|| (!varFuncMatch.Groups["inObject"].Success && varFuncMatch.Groups["assignationOperator"].Success))
1833+
else if ((Variables.TryGetValue(varFuncName, out dynamic cusVarValueToPush) || varFuncMatch.Groups["assignationOperator"].Success)
1834+
&& !varFuncMatch.Groups["inObject"].Success
18351835
&& (cusVarValueToPush == null || !TypesToBlock.Contains(cusVarValueToPush.GetType())))
18361836
{
18371837
stack.Push(cusVarValueToPush);

0 commit comments

Comments
 (0)