make Data::Dumper optional

git-svn-id: https://svn.fhem.de/fhem/trunk@4355 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
justme1968
2013-12-10 21:39:38 +00:00
parent a61a7491de
commit a1534a3148

View File

@@ -7,11 +7,12 @@ use strict;
use warnings; use warnings;
use POSIX; use POSIX;
#use JSON; #use JSON;
use Data::Dumper; #use Data::Dumper;
use vars qw(%FW_webArgs); # all arguments specified in the GET use vars qw(%FW_webArgs); # all arguments specified in the GET
my $LightScene_hasJSON = 1; my $LightScene_hasJSON = 1;
my $LightScene_hasDataDumper = 1;
sub LightScene_Initialize($) sub LightScene_Initialize($)
{ {
@@ -29,12 +30,17 @@ sub LightScene_Initialize($)
eval "use JSON"; eval "use JSON";
$LightScene_hasJSON = 0 if($@); $LightScene_hasJSON = 0 if($@);
eval "use Data::Dumper";
$LightScene_hasDataDumper = 0 if($@);
} }
sub LightScene_Define($$) sub LightScene_Define($$)
{ {
my ($hash, $def) = @_; my ($hash, $def) = @_;
return "install JSON or Data::Dumper to use LightScene" if( !$LightScene_hasJSON && !$LightScene_hasDataDumper );
my @args = split("[ \t]+", $def); my @args = split("[ \t]+", $def);
return "Usage: define <name> LightScene <device>+" if(@args < 3); return "Usage: define <name> LightScene <device>+" if(@args < 3);
@@ -42,6 +48,9 @@ sub LightScene_Define($$)
my $name = shift(@args); my $name = shift(@args);
my $type = shift(@args); my $type = shift(@args);
$hash->{HAS_JSON} = $LightScene_hasJSON;
$hash->{HAS_DataDumper} = $LightScene_hasDataDumper;
my %list; my %list;
foreach my $a (@args) { foreach my $a (@args) {
foreach my $d (devspec2array($a)) { foreach my $d (devspec2array($a)) {
@@ -229,7 +238,7 @@ myStatefileName()
my $statefile = $attr{global}{statefile}; my $statefile = $attr{global}{statefile};
$statefile = substr $statefile,0,rindex($statefile,'/')+1; $statefile = substr $statefile,0,rindex($statefile,'/')+1;
return $statefile ."LightScenes.save" if( $LightScene_hasJSON ); return $statefile ."LightScenes.save" if( $LightScene_hasJSON );
return $statefile ."LightScenes.dd.save"; return $statefile ."LightScenes.dd.save" if( $LightScene_hasDataDumper );
} }
my $LightScene_LastSaveTime=""; my $LightScene_LastSaveTime="";
sub sub
@@ -256,7 +265,7 @@ LightScene_Save()
if( $LightScene_hasJSON ) { if( $LightScene_hasJSON ) {
print FH encode_json($hash) if( defined($hash) ); print FH encode_json($hash) if( defined($hash) );
} else { } elsif( $LightScene_hasDataDumper ) {
my $dumper = Data::Dumper->new([]); my $dumper = Data::Dumper->new([]);
$dumper->Terse(1); $dumper->Terse(1);
@@ -295,7 +304,7 @@ LightScene_Load($)
my $decoded; my $decoded;
if( $LightScene_hasJSON ) { if( $LightScene_hasJSON ) {
$decoded = decode_json( $encoded ); $decoded = decode_json( $encoded );
} else { } elsif( $LightScene_hasDataDumper ) {
$decoded = eval $encoded; $decoded = eval $encoded;
} }
$hash->{SCENES} = $decoded->{$hash->{NAME}} if( defined($decoded->{$hash->{NAME}}) ); $hash->{SCENES} = $decoded->{$hash->{NAME}} if( defined($decoded->{$hash->{NAME}}) );