From de20cb50013a3cb9668b20a8ec1cc9cf655ca71a Mon Sep 17 00:00:00 2001 From: LilyRose2798 Date: Wed, 25 Jun 2025 12:03:04 +1000 Subject: [PATCH] Handle float values without decimal point --- src/spacetraders_models/ship_component_condition.gleam | 7 ++++++- src/spacetraders_models/ship_component_integrity.gleam | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/spacetraders_models/ship_component_condition.gleam b/src/spacetraders_models/ship_component_condition.gleam index 2e88624..425f168 100644 --- a/src/spacetraders_models/ship_component_condition.gleam +++ b/src/spacetraders_models/ship_component_condition.gleam @@ -1,4 +1,5 @@ import gleam/dynamic/decode.{type Decoder} +import gleam/int import gleam/json.{type Json} pub opaque type ShipComponentCondition { @@ -17,7 +18,11 @@ pub fn parse(value: Float) -> Result(ShipComponentCondition, Nil) { } pub fn decoder() -> Decoder(ShipComponentCondition) { - use value <- decode.then(decode.float) + use value <- decode.then( + decode.one_of(decode.float, [ + decode.then(decode.int, fn(i) { decode.success(int.to_float(i)) }), + ]), + ) case parse(value) { Ok(ship_component_condition) -> decode.success(ship_component_condition) Error(Nil) -> diff --git a/src/spacetraders_models/ship_component_integrity.gleam b/src/spacetraders_models/ship_component_integrity.gleam index e56efb6..6a325f7 100644 --- a/src/spacetraders_models/ship_component_integrity.gleam +++ b/src/spacetraders_models/ship_component_integrity.gleam @@ -1,4 +1,5 @@ import gleam/dynamic/decode.{type Decoder} +import gleam/int import gleam/json.{type Json} pub opaque type ShipComponentIntegrity { @@ -17,7 +18,11 @@ pub fn parse(value: Float) -> Result(ShipComponentIntegrity, Nil) { } pub fn decoder() -> Decoder(ShipComponentIntegrity) { - use value <- decode.then(decode.float) + use value <- decode.then( + decode.one_of(decode.float, [ + decode.then(decode.int, fn(i) { decode.success(int.to_float(i)) }), + ]), + ) case parse(value) { Ok(ship_component_integrity) -> decode.success(ship_component_integrity) Error(Nil) ->