@@ -24,16 +24,16 @@ public ValueContainer(string value, bool tryToParse = false)
2424
2525 if ( tryToParse )
2626 {
27- if ( int . TryParse ( value , out var iValue ) )
28- {
29- _value = iValue ;
30- _type = ValueType . Integer ;
31- }
32- else if ( float . TryParse ( value , out var fValue ) )
27+ if ( value . Contains ( '.' ) && double . TryParse ( value , out var fValue ) )
3328 {
3429 _value = fValue ;
3530 _type = ValueType . Float ;
3631 }
32+ else if ( int . TryParse ( value , out var iValue ) )
33+ {
34+ _value = iValue ;
35+ _type = ValueType . Integer ;
36+ }
3737 else if ( bool . TryParse ( value , out var bValue ) )
3838 {
3939 _value = bValue ;
@@ -236,37 +236,29 @@ public int CompareTo(object? obj)
236236 throw new InvalidOperationException ( "Cannot compare these two..." ) ;
237237
238238 var other = ( ValueContainer ) obj ;
239- if ( other . Type ( ) != _type )
240- {
241- // TODO: Fix comparison
242239
243- throw new InvalidOperationException ( "Cannot compare two different ValueContainers" ) ;
244- }
245- else
240+ switch ( _value )
246241 {
247- switch ( _value )
248- {
249- case bool b :
250- return b . CompareTo ( other . _value ) ;
251- case int i :
252- return i . CompareTo ( other . _value ) ;
253- case float f :
254- return f . CompareTo ( other . _value ) ;
255- case double f :
256- return f . CompareTo ( other . _value ) ;
257- case decimal f :
258- return f . CompareTo ( other . _value ) ;
259- case string s :
260- return s . CompareTo ( other . _value ) ;
261- case Dictionary < string , ValueContainer > d :
262- var d2 = ( Dictionary < string , ValueContainer > ) other . _value ;
263- return d . Count - d2 . Count ;
264- case IEnumerable < ValueContainer > l :
265- var l2 = ( IEnumerable < ValueContainer > ) other . _value ;
266- return l . Count ( ) - l2 . Count ( ) ;
267- default :
268- return - 1 ;
269- }
242+ case bool b :
243+ return b . CompareTo ( other . _value ) ;
244+ case int i :
245+ return i . CompareTo ( other . _value ) ;
246+ case float f :
247+ return f . CompareTo ( other . _value ) ;
248+ case double f :
249+ return f . CompareTo ( other . _value ) ;
250+ case decimal f :
251+ return f . CompareTo ( other . _value ) ;
252+ case string s :
253+ return s . CompareTo ( other . _value ) ;
254+ case Dictionary < string , ValueContainer > d :
255+ var d2 = ( Dictionary < string , ValueContainer > ) other . _value ;
256+ return d . Count - d2 . Count ;
257+ case IEnumerable < ValueContainer > l :
258+ var l2 = ( IEnumerable < ValueContainer > ) other . _value ;
259+ return l . Count ( ) - l2 . Count ( ) ;
260+ default :
261+ return - 1 ;
270262 }
271263 }
272264
@@ -357,7 +349,8 @@ public static async ValueTask<ValueContainer> CreateValueContainerFromJToken(JTo
357349 return v ;
358350 }
359351
360- private static async ValueTask < ValueContainer > JsonToValueContainer ( JToken json , IExpressionEngine expressionEngine )
352+ private static async ValueTask < ValueContainer > JsonToValueContainer ( JToken json ,
353+ IExpressionEngine expressionEngine )
361354 {
362355 switch ( json )
363356 {
0 commit comments