lib/json: converting JsonValue to float or int casts between numerics
authorAlexis Laferrière <alexis.laf@xymus.net>
Thu, 12 Feb 2015 01:51:57 +0000 (20:51 -0500)
committerAlexis Laferrière <alexis.laf@xymus.net>
Tue, 17 Feb 2015 21:13:43 +0000 (16:13 -0500)
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

lib/json/dynamic.nit

index 1ee3ce7..d0559e0 100644 (file)
@@ -49,11 +49,17 @@ class JsonValue
 
        # Get this value as a `Int`
        #
-       # require: `self.is_int`
+       # require: `self.is_numeric`
        #
        #     assert "-10".to_json_value.to_i == -10
        #     assert "123".to_json_value.to_i == 123
-       fun to_i: Int do return value.as(Int)
+       #     assert "123.456".to_json_value.to_i == 123
+       fun to_i: Int
+       do
+               var value = value
+               assert value isa Numeric
+               return value.to_i
+       end
 
        # Is this value a float?
        #
@@ -64,11 +70,17 @@ class JsonValue
 
        # Get this value as a `Float`
        #
-       # require: `self.is_float`
+       # require: `self.is_numeric`
        #
        #     assert "0.0".to_json_value.to_f == 0.0
        #     assert "123.456".to_json_value.to_f == 123.456
-       fun to_f: Float do return value.as(Float)
+       #     assert "123".to_json_value.to_f == 123.0
+       fun to_f: Float
+       do
+               var value = value
+               assert value isa Numeric
+               return value.to_f
+       end
 
        # Is the value numeric?
        #