diff --git a/docs/templates.md b/docs/templates.md index c278660..37f990d 100644 --- a/docs/templates.md +++ b/docs/templates.md @@ -103,12 +103,12 @@ Common fields: | --- | --- | --- | | `.Modules.CurrentConditions.ConditionText` | string | Current condition text. | | `.Modules.CurrentConditions.ConditionTextLower` | string | Lower-case current condition text for inline sentences. | -| `.Modules.CurrentConditions.TemperatureF` | *float64 | Current temperature. | -| `.Modules.CurrentConditions.ApparentTemperatureF` | *float64 | Apparent temperature. | -| `.Modules.CurrentConditions.RelativeHumidityPercent` | *float64 | Relative humidity. | +| `.Modules.CurrentConditions.TemperatureF` | *int | Rounded current temperature. | +| `.Modules.CurrentConditions.ApparentTemperatureF` | *int | Rounded apparent temperature. | +| `.Modules.CurrentConditions.RelativeHumidityPercent` | *int | Rounded relative humidity. | | `.Modules.CurrentConditions.WindDirection` | string | 16-point compass wind direction. | | `.Modules.CurrentConditions.WindDirectionText` | string | Lower-case full wind direction text, such as `northwest`. | -| `.Modules.CurrentConditions.WindSpeedMph` | *float64 | Wind speed. | +| `.Modules.CurrentConditions.WindSpeedMph` | *int | Rounded wind speed. | Example: diff --git a/internal/briefing/base_modules_test.go b/internal/briefing/base_modules_test.go index 1ac7c40..8ce030f 100644 --- a/internal/briefing/base_modules_test.go +++ b/internal/briefing/base_modules_test.go @@ -234,7 +234,10 @@ func TestCurrentConditionsModuleUsesSnakeCaseUnitFields(t *testing.T) { } value := moduleValue[CurrentConditionsModule](t, output) if value.ConditionText != "Partly cloudy" || value.ConditionTextLower != "partly cloudy" || value.TemperatureF == nil || *value.TemperatureF != 74 { - t.Fatalf("CurrentConditions = %#v, want current condition facts", value) + t.Fatalf("CurrentConditions = %#v, want rounded current condition facts", value) + } + if value.ApparentTemperatureF == nil || *value.ApparentTemperatureF != 76 || value.RelativeHumidityPercent == nil || *value.RelativeHumidityPercent != 71 || value.WindSpeedMph == nil || *value.WindSpeedMph != 8 { + t.Fatalf("CurrentConditions rounded values = %#v, want apparent 76, humidity 71, wind 8", value) } if value.WindDirection != "S" { t.Fatalf("WindDirection = %q, want S", value.WindDirection) @@ -403,10 +406,10 @@ func testModuleContext() ModuleContext { }, } isDay := true - tempF := 74.0 - apparentF := 76.0 - humidity := 71.0 - windMph := 8.0 + tempF := 74.4 + apparentF := 75.6 + humidity := 70.6 + windMph := 8.4 windDirection := 190.0 narrativeTempF := 81.0 narrativePop := 60.0 diff --git a/internal/briefing/current_conditions_module.go b/internal/briefing/current_conditions_module.go index edb91d4..cef19d7 100644 --- a/internal/briefing/current_conditions_module.go +++ b/internal/briefing/current_conditions_module.go @@ -7,20 +7,20 @@ import ( ) type CurrentConditionsModule struct { - ConditionText string `json:"condition_text,omitempty"` - ConditionTextLower string `json:"condition_text_lower,omitempty"` - IsDay *bool `json:"is_day,omitempty"` - TemperatureC *float64 `json:"temperature_c,omitempty"` - TemperatureF *float64 `json:"temperature_f,omitempty"` - ApparentTemperatureC *float64 `json:"apparent_temperature_c,omitempty"` - ApparentTemperatureF *float64 `json:"apparent_temperature_f,omitempty"` - DewpointC *float64 `json:"dewpoint_c,omitempty"` - DewpointF *float64 `json:"dewpoint_f,omitempty"` - RelativeHumidityPercent *float64 `json:"relative_humidity_percent,omitempty"` - WindSpeedKmh *float64 `json:"wind_speed_kmh,omitempty"` - WindSpeedMph *float64 `json:"wind_speed_mph,omitempty"` - WindDirection string `json:"wind_direction,omitempty"` - WindDirectionText string `json:"wind_direction_text,omitempty"` + ConditionText string `json:"condition_text,omitempty"` + ConditionTextLower string `json:"condition_text_lower,omitempty"` + IsDay *bool `json:"is_day,omitempty"` + TemperatureC *int `json:"temperature_c,omitempty"` + TemperatureF *int `json:"temperature_f,omitempty"` + ApparentTemperatureC *int `json:"apparent_temperature_c,omitempty"` + ApparentTemperatureF *int `json:"apparent_temperature_f,omitempty"` + DewpointC *int `json:"dewpoint_c,omitempty"` + DewpointF *int `json:"dewpoint_f,omitempty"` + RelativeHumidityPercent *int `json:"relative_humidity_percent,omitempty"` + WindSpeedKmh *int `json:"wind_speed_kmh,omitempty"` + WindSpeedMph *int `json:"wind_speed_mph,omitempty"` + WindDirection string `json:"wind_direction,omitempty"` + WindDirectionText string `json:"wind_direction_text,omitempty"` } func buildCurrentConditionsModule(ctx ModuleContext, _ any) (*module.Output, error) { @@ -32,15 +32,15 @@ func buildCurrentConditionsModule(ctx ModuleContext, _ any) (*module.Output, err ConditionText: current.ConditionText, ConditionTextLower: strings.ToLower(current.ConditionText), IsDay: copyBool(current.IsDay), - TemperatureC: copyFloat(current.TemperatureC), - TemperatureF: copyFloat(current.TemperatureF), - ApparentTemperatureC: copyFloat(current.ApparentTemperatureC), - ApparentTemperatureF: copyFloat(current.ApparentTemperatureF), - DewpointC: copyFloat(current.DewpointC), - DewpointF: copyFloat(current.DewpointF), - RelativeHumidityPercent: copyFloat(current.RelativeHumidityPercent), - WindSpeedKmh: copyFloat(current.WindSpeedKmh), - WindSpeedMph: copyFloat(current.WindSpeedMph), + TemperatureC: roundedInt(current.TemperatureC), + TemperatureF: roundedInt(current.TemperatureF), + ApparentTemperatureC: roundedInt(current.ApparentTemperatureC), + ApparentTemperatureF: roundedInt(current.ApparentTemperatureF), + DewpointC: roundedInt(current.DewpointC), + DewpointF: roundedInt(current.DewpointF), + RelativeHumidityPercent: roundedInt(current.RelativeHumidityPercent), + WindSpeedKmh: roundedInt(current.WindSpeedKmh), + WindSpeedMph: roundedInt(current.WindSpeedMph), WindDirection: windDirectionLabel(current.WindDirectionDegrees), WindDirectionText: windDirectionTextLabel(current.WindDirectionDegrees), } diff --git a/internal/generatedtext/render_context_test.go b/internal/generatedtext/render_context_test.go index e9564ab..71bdbd7 100644 --- a/internal/generatedtext/render_context_test.go +++ b/internal/generatedtext/render_context_test.go @@ -151,10 +151,10 @@ func testSnapshot(t *testing.T) module.Snapshot { Value: briefing.CurrentConditionsModule{ ConditionText: "Partly cloudy", ConditionTextLower: "partly cloudy", - TemperatureF: floatPtr(74), - ApparentTemperatureF: floatPtr(76), - RelativeHumidityPercent: floatPtr(71), - WindSpeedMph: floatPtr(8), + TemperatureF: intPtr(74), + ApparentTemperatureF: intPtr(76), + RelativeHumidityPercent: intPtr(71), + WindSpeedMph: intPtr(8), WindDirection: "S", WindDirectionText: "south", }, diff --git a/internal/reporttemplate/reporttemplate_test.go b/internal/reporttemplate/reporttemplate_test.go index 4307f51..61ce2fe 100644 --- a/internal/reporttemplate/reporttemplate_test.go +++ b/internal/reporttemplate/reporttemplate_test.go @@ -70,12 +70,12 @@ func TestRenderHourly(t *testing.T) { CurrentConditions: &testCurrentConditions{ ConditionText: "Partly cloudy", ConditionTextLower: "partly cloudy", - TemperatureF: floatPtr(74), - ApparentTemperatureF: floatPtr(76), - RelativeHumidityPercent: floatPtr(71), + TemperatureF: intPtr(74), + ApparentTemperatureF: intPtr(76), + RelativeHumidityPercent: intPtr(71), WindDirection: "S", WindDirectionText: "south", - WindSpeedMph: floatPtr(8), + WindSpeedMph: intPtr(8), }, HourlyForecast: &testHourlyForecast{ Periods: []testHourlyPeriod{ @@ -157,7 +157,7 @@ func TestRenderHourlyOmitsConditionalSectionsForClearWeather(t *testing.T) { Modules: testModules{ CurrentConditions: &testCurrentConditions{ ConditionTextLower: "cloudy", - TemperatureF: floatPtr(72), + TemperatureF: intPtr(72), }, HourlyForecast: &testHourlyForecast{ Periods: []testHourlyPeriod{ @@ -237,10 +237,10 @@ type testModules struct { type testCurrentConditions struct { ConditionText string ConditionTextLower string - TemperatureF *float64 - ApparentTemperatureF *float64 - RelativeHumidityPercent *float64 - WindSpeedMph *float64 + TemperatureF *int + ApparentTemperatureF *int + RelativeHumidityPercent *int + WindSpeedMph *int WindDirection string WindDirectionText string }