2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-04-21 01:46:08 +00:00

AttrTemplate.pm: add desc: to *.template (Forum #91394)

git-svn-id: https://svn.fhem.de/fhem/trunk@17972 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
rudolfkoenig 2018-12-14 18:13:21 +00:00
parent 091edd2396
commit e9ad3fb923

View File

@ -26,16 +26,22 @@ AttrTemplate_Initialize()
Log 1, "$me: cant open $dir/$file: $!"; Log 1, "$me: cant open $dir/$file: $!";
next; next;
} }
my ($name, %h); my ($name, %h, $lastComment);
while(my $line = <fh>) { while(my $line = <fh>) {
chomp($line); chomp($line);
next if($line =~ m/^$/ || $line =~ m/^#/); next if($line =~ m/^$/);
if($line =~ m/^name:(.*)/) { if($line =~ m/^# *(.*)$/) { # just a replacement for missing desc
$lastComment = $1;
next;
} elsif($line =~ m/^name:(.*)/) {
$name = $1; $name = $1;
my (@p,@c); my (@p,@c);
$templates{$name}{pars} = \@p; $templates{$name}{pars} = \@p;
$templates{$name}{cmds} = \@c; $templates{$name}{cmds} = \@c;
$templates{$name}{desc} = $lastComment if($lastComment);
$lastComment = "";
} elsif($line =~ m/^filter:(.*)=(.*)/) { } elsif($line =~ m/^filter:(.*)=(.*)/) {
$templates{$name}{filterName} = $1; $templates{$name}{filterName} = $1;
@ -44,6 +50,9 @@ AttrTemplate_Initialize()
} elsif($line =~ m/^par:(.*)/) { } elsif($line =~ m/^par:(.*)/) {
push(@{$templates{$name}{pars}}, $1); push(@{$templates{$name}{pars}}, $1);
} elsif($line =~ m/^desc:(.*)/) {
$templates{$name}{desc} = $1;
} else { } else {
push(@{$templates{$name}{cmds}}, $line); push(@{$templates{$name}{cmds}}, $line);
@ -63,6 +72,7 @@ AttrTemplate_Set($$@)
AttrTemplate_Initialize() if(!$initialized); AttrTemplate_Initialize() if(!$initialized);
my $haveDesc;
if($cmd ne "attrTemplate") { if($cmd ne "attrTemplate") {
if(!$cachedUsage{$name}) { if(!$cachedUsage{$name}) {
my @list; my @list;
@ -70,9 +80,11 @@ AttrTemplate_Set($$@)
my $h = $templates{$k}; my $h = $templates{$k};
if(!$h->{filterName} || $hash->{$h->{filterName}} eq $h->{filterVal}) { if(!$h->{filterName} || $hash->{$h->{filterName}} eq $h->{filterVal}) {
push @list, $k; push @list, $k;
$haveDesc = 1 if($h->{desc});
} }
} }
$cachedUsage{$name} = (@list ? "attrTemplate:".join(",",@list) : ""); $cachedUsage{$name} = (@list ?
"attrTemplate:".($haveDesc ? "?,":"").join(",",@list) : "");
} }
$list .= " " if($list ne ""); $list .= " " if($list ne "");
return "Unknown argument $cmd, choose one of $list$cachedUsage{$name}"; return "Unknown argument $cmd, choose one of $list$cachedUsage{$name}";
@ -80,6 +92,23 @@ AttrTemplate_Set($$@)
return "Missing template_entry_name parameter for attrTemplate" if(@a < 1); return "Missing template_entry_name parameter for attrTemplate" if(@a < 1);
my $entry = shift(@a); my $entry = shift(@a);
if($entry eq "?") {
my @hlp;
for my $k (sort keys %templates) {
my $h = $templates{$k};
if(!$h->{filterName} || $hash->{$h->{filterName}} eq $h->{filterVal}) {
push @hlp, "$k: $h->{desc}" if($h->{desc});
}
}
return "no help available" if(!@hlp);
if($hash->{CL} && $hash->{CL}{TYPE} eq "FHEMWEB") {
return "<html><li>".join("</li><li>", map { $_=~s/:/<br>/; $_ } @hlp).
"</li></html>";
}
return join("\n", @hlp);
}
my $h = $templates{$entry}; my $h = $templates{$entry};
return "Unknown template_entry_name $entry" if(!$h); return "Unknown template_entry_name $entry" if(!$h);