mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-02-25 03:44:52 +00:00
fhem.pl: tinkering with ReadingsNum (Forum #137283)
git-svn-id: https://svn.fhem.de/fhem/trunk@28580 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
f4eba4a957
commit
255429301b
36
fhem/fhem.pl
36
fhem/fhem.pl
@ -4626,6 +4626,19 @@ resolveAttrRename($$)
|
||||
###########################################
|
||||
# Functions used to make fhem-oneliners more readable,
|
||||
# but also recommended to be used by modules
|
||||
sub
|
||||
numberFromString($$;$)
|
||||
{
|
||||
my ($val,$default,$round) = @_;
|
||||
return undef if(!defined($val));
|
||||
# 137283 & perl cookbook
|
||||
$val = ($val =~ /(([+-]?)(?=\d|\.\d)\d*(\.\d*)?([Ee]([+-]?\d+))?)/ ? $1 : "");
|
||||
$val =~ s/^([+-]?)0+([1-9])/$1$2/; # Forum #135120, dont want octal numbers
|
||||
return $default if($val eq "");
|
||||
$val = round($val,$round) if(defined $round);
|
||||
return $val;
|
||||
}
|
||||
|
||||
sub
|
||||
InternalVal($$$)
|
||||
{
|
||||
@ -4641,10 +4654,7 @@ sub
|
||||
InternalNum($$$;$)
|
||||
{
|
||||
my ($d,$n,$default,$round) = @_;
|
||||
my $val = InternalVal($d,$n,$default);
|
||||
$val = ($val =~ /(-?\d+(\.\d+)?)/ ? $1 : "");
|
||||
$val = round($val,$round) if($round);
|
||||
return $val;
|
||||
return numberFromString(InternalVal($d,$n,$default),$default,$round);
|
||||
}
|
||||
|
||||
sub
|
||||
@ -4664,14 +4674,7 @@ sub
|
||||
OldReadingsNum($$$;$)
|
||||
{
|
||||
my ($d,$n,$default,$round) = @_;
|
||||
my $val = OldReadingsVal($d,$n,$default);
|
||||
return undef if(!defined($val));
|
||||
return $val if(looks_like_number($val)); # 137283
|
||||
$val = ($val =~ /(-?\d+(\.\d+)?)/ ? $1 : "");
|
||||
$val =~ s/^(-?)0+([1-9])/$1$2/; # Forum #135120, dont want octal numbers
|
||||
return $default if($val eq "");
|
||||
$val = round($val,$round) if(defined $round);
|
||||
return $val;
|
||||
return numberFromString(OldReadingsVal($d,$n,$default),$default,$round);
|
||||
}
|
||||
|
||||
sub
|
||||
@ -4713,14 +4716,7 @@ sub
|
||||
ReadingsNum($$$;$)
|
||||
{
|
||||
my ($d,$n,$default,$round) = @_;
|
||||
my $val = ReadingsVal($d,$n,$default);
|
||||
return undef if(!defined($val));
|
||||
return $val if(looks_like_number($val)); # 137283
|
||||
$val = ($val =~ /(-?\d+(\.\d+)?)/ ? $1 : "");
|
||||
$val =~ s/^(-?)0+([1-9])/$1$2/; # Forum #135120, dont want octal numbers
|
||||
return $default if($val eq "");
|
||||
$val = round($val,$round) if(defined $round);
|
||||
return $val;
|
||||
return numberFromString(ReadingsVal($d,$n,$default),$default,$round);
|
||||
}
|
||||
|
||||
sub
|
||||
|
Loading…
x
Reference in New Issue
Block a user