Refactor language handling to improve readability
Improved the language initialization logic by replacing the experimental `given/when` construct with a more standard `if/elsif` structure, enhancing code readability and maintainability. Additionally, the attribute handling in the `Attr` subroutine was refactored for clarity, removing unnecessary usage of `given/when`, which helps reduce complexity across the codebase. Furthermore, in the OpenWeatherMapAPI module, logic for handling weather response data was streamlined by removing the `given/when` statements in favor of `if` conditions. This change eliminates potential confusion and enhances the clarity of the code logic. No breaking changes were introduced; the overall functionality remains intact.
This commit is contained in:
49
CHANGELOG.md
49
CHANGELOG.md
@@ -1,4 +1,49 @@
|
|||||||
### ``` Refactor pre-commit hook file list and output formatting (HEAD -> patch-removedarksky)
|
### Refactor language initialization and attribute handling (HEAD -> patch-remove-perlexperimental)
|
||||||
|
>Tue, 14 Oct 2025 06:53:44 +0200
|
||||||
|
|
||||||
|
>Author: Marko Oldenburg (fhemdevelopment@cooltux.net)
|
||||||
|
|
||||||
|
>Commiter: Marko Oldenburg (fhemdevelopment@cooltux.net)
|
||||||
|
|
||||||
|
Improved the language initialization logic by replacing
|
||||||
|
the experimental `given/when` construct with a more
|
||||||
|
standard `if/elsif` structure. This change enhances code
|
||||||
|
readability and maintainability, making it easier to follow
|
||||||
|
the flow of language assignments.
|
||||||
|
|
||||||
|
Additionally, refactored attribute handling in the `Attr`
|
||||||
|
subroutine by streamlining the conditions, removing
|
||||||
|
unnecessary `given/when` usage, and maintaining clarity
|
||||||
|
in the logic for setting and deleting forecasts and alerts.
|
||||||
|
These changes help reduce complexity and improve
|
||||||
|
consistency throughout the codebase.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### ``` Refactor pre-commit hook by removing DarkSkyAPI references
|
||||||
|
>Wed, 5 Feb 2025 07:08:45 +0100
|
||||||
|
|
||||||
|
>Author: Marko Oldenburg (fhemdevelopment@cooltux.net)
|
||||||
|
|
||||||
|
>Commiter: Marko Oldenburg (fhemdevelopment@cooltux.net)
|
||||||
|
|
||||||
|
Updated the pre-commit hook to eliminate references to
|
||||||
|
'lib/FHEM/APIs/Weather/DarkSkyAPI.pm'. This change was made to
|
||||||
|
simplify the codebase and make it more relevant by focusing on
|
||||||
|
the other weather API files.
|
||||||
|
|
||||||
|
Additionally, the output formatting of the pre-commit hook
|
||||||
|
has been improved for better readability, and the order of
|
||||||
|
the files in the @filenames array has been restructured for
|
||||||
|
clarity.
|
||||||
|
|
||||||
|
No breaking changes have been introduced; the pre-commit
|
||||||
|
hook continues to operate as intended.
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### ``` Refactor pre-commit hook file list and output formatting
|
||||||
>Wed, 5 Feb 2025 07:07:52 +0100
|
>Wed, 5 Feb 2025 07:07:52 +0100
|
||||||
|
|
||||||
>Author: Marko Oldenburg (fhemdevelopment@cooltux.net)
|
>Author: Marko Oldenburg (fhemdevelopment@cooltux.net)
|
||||||
@@ -38,7 +83,7 @@ function as intended.
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
### docs: add changelog (origin/patch-changeVersion)
|
### docs: add changelog
|
||||||
>Tue, 4 Feb 2025 21:01:33 +0100
|
>Tue, 4 Feb 2025 21:01:33 +0100
|
||||||
|
|
||||||
>Author: Marko Oldenburg (fhemdevelopment@cooltux.net)
|
>Author: Marko Oldenburg (fhemdevelopment@cooltux.net)
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
UPD 2025-02-05_05:56:41 25899 FHEM/59_Weather.pm
|
UPD 2025-02-05_05:56:41 25899 FHEM/59_Weather.pm
|
||||||
UPD 2025-10-14_06:51:10 34175 lib/FHEM/Core/Weather.pm
|
UPD 2025-10-14_06:51:10 34175 lib/FHEM/Core/Weather.pm
|
||||||
UPD 2025-02-05_06:38:34 33780 lib/FHEM/APIs/Weather/OpenWeatherMapAPI.pm
|
UPD 2025-10-14_07:00:04 33545 lib/FHEM/APIs/Weather/OpenWeatherMapAPI.pm
|
||||||
UPD 2025-02-04_21:08:26 38751 lib/FHEM/APIs/Weather/wundergroundAPI.pm
|
UPD 2025-02-04_21:08:26 38751 lib/FHEM/APIs/Weather/wundergroundAPI.pm
|
||||||
|
@@ -41,7 +41,8 @@ use FHEM::Meta;
|
|||||||
|
|
||||||
use POSIX;
|
use POSIX;
|
||||||
use HttpUtils;
|
use HttpUtils;
|
||||||
use experimental qw /switch/;
|
|
||||||
|
#use experimental qw /switch/;
|
||||||
|
|
||||||
my $META = {};
|
my $META = {};
|
||||||
my $ret = FHEM::Meta::getMetadata( __FILE__, $META );
|
my $ret = FHEM::Meta::getMetadata( __FILE__, $META );
|
||||||
@@ -466,67 +467,59 @@ sub _FillSelfHashWithWeatherResponse {
|
|||||||
$self->{cached}->{city} = encode_utf8( $data->{name} );
|
$self->{cached}->{city} = encode_utf8( $data->{name} );
|
||||||
$self->{cached}->{license}{text} = 'none';
|
$self->{cached}->{license}{text} = 'none';
|
||||||
|
|
||||||
given ( $self->{endpoint} ) {
|
if ( $self->{endpoint} eq 'onecall' ) {
|
||||||
when ('onecall') {
|
## löschen des alten current Datensatzes
|
||||||
## löschen des alten current Datensatzes
|
delete $self->{cached}->{current};
|
||||||
delete $self->{cached}->{current};
|
|
||||||
|
|
||||||
## löschen des alten forecast Datensatzes
|
## löschen des alten forecast Datensatzes
|
||||||
delete $self->{cached}->{forecast};
|
delete $self->{cached}->{forecast};
|
||||||
|
|
||||||
## löschen des alten Alerts Datensatzes
|
## löschen des alten Alerts Datensatzes
|
||||||
delete $self->{cached}->{alerts};
|
delete $self->{cached}->{alerts};
|
||||||
|
|
||||||
|
$self =
|
||||||
|
_FillSelfHashWithWeatherResponseForOnecallCurrent( $self, $data );
|
||||||
|
|
||||||
|
if ( ref( $data->{hourly} ) eq "ARRAY"
|
||||||
|
&& scalar( @{ $data->{hourly} } ) > 0 )
|
||||||
|
{
|
||||||
$self =
|
$self =
|
||||||
_FillSelfHashWithWeatherResponseForOnecallCurrent( $self, $data );
|
_FillSelfHashWithWeatherResponseForOnecallHourly( $self, $data );
|
||||||
|
|
||||||
if ( ref( $data->{hourly} ) eq "ARRAY"
|
|
||||||
&& scalar( @{ $data->{hourly} } ) > 0 )
|
|
||||||
{
|
|
||||||
$self =
|
|
||||||
_FillSelfHashWithWeatherResponseForOnecallHourly( $self,
|
|
||||||
$data );
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( ref( $data->{daily} ) eq "ARRAY"
|
|
||||||
&& scalar( @{ $data->{daily} } ) > 0 )
|
|
||||||
{
|
|
||||||
$self =
|
|
||||||
_FillSelfHashWithWeatherResponseForOnecallDaily( $self,
|
|
||||||
$data );
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( ref( $data->{alerts} ) eq "ARRAY"
|
|
||||||
&& scalar( @{ $data->{alerts} } ) > 0 )
|
|
||||||
{
|
|
||||||
$self =
|
|
||||||
_FillSelfHashWithWeatherResponseForOnecallAlerts( $self,
|
|
||||||
$data );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
when ('weather') {
|
if ( ref( $data->{daily} ) eq "ARRAY"
|
||||||
## löschen des alten current Datensatzes
|
&& scalar( @{ $data->{daily} } ) > 0 )
|
||||||
delete $self->{cached}->{current};
|
{
|
||||||
|
|
||||||
## löschen des alten Alerts Datensatzes
|
|
||||||
delete $self->{cached}->{alerts};
|
|
||||||
|
|
||||||
$self =
|
$self =
|
||||||
_FillSelfHashWithWeatherResponseForWeatherCurrent( $self, $data );
|
_FillSelfHashWithWeatherResponseForOnecallDaily( $self, $data );
|
||||||
}
|
}
|
||||||
|
|
||||||
when ('forecast') {
|
if ( ref( $data->{alerts} ) eq "ARRAY"
|
||||||
## löschen des alten forecast Datensatzes
|
&& scalar( @{ $data->{alerts} } ) > 0 )
|
||||||
delete $self->{cached}->{forecast};
|
{
|
||||||
|
$self =
|
||||||
|
_FillSelfHashWithWeatherResponseForOnecallAlerts( $self, $data );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
elsif ( $self->{endpoint} eq 'weather' ) {
|
||||||
|
## löschen des alten current Datensatzes
|
||||||
|
delete $self->{cached}->{current};
|
||||||
|
|
||||||
if ( ref( $data->{list} ) eq "ARRAY"
|
## löschen des alten Alerts Datensatzes
|
||||||
and scalar( @{ $data->{list} } ) > 0 )
|
delete $self->{cached}->{alerts};
|
||||||
{
|
|
||||||
$self =
|
$self =
|
||||||
_FillSelfHashWithWeatherResponseForForecastHourly( $self,
|
_FillSelfHashWithWeatherResponseForWeatherCurrent( $self, $data );
|
||||||
$data );
|
}
|
||||||
}
|
elsif ( $self->{endpoint} eq 'forecast' ) {
|
||||||
|
## löschen des alten forecast Datensatzes
|
||||||
|
delete $self->{cached}->{forecast};
|
||||||
|
|
||||||
|
if ( ref( $data->{list} ) eq "ARRAY"
|
||||||
|
and scalar( @{ $data->{list} } ) > 0 )
|
||||||
|
{
|
||||||
|
$self =
|
||||||
|
_FillSelfHashWithWeatherResponseForForecastHourly( $self, $data );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user