git.shiar.nl
/
barcat.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
8533154
)
recurse nested braces in report variables
author
Mischa POSLAWSKY
<perl@shiar.org>
Sun, 20 Nov 2022 23:37:11 +0000
(
00:37
+0100)
committer
Mischa POSLAWSKY
<perl@shiar.org>
Tue, 22 Nov 2022 23:06:47 +0000
(
00:06
+0100)
barcat
patch
|
blob
|
history
diff --git
a/barcat
b/barcat
index 6dbddd97910941e84542173cfff807318eaa906a..e02ce4ed09e9c7f47f53e00a7eda3801cb8fdc47 100755
(executable)
--- a/
barcat
+++ b/
barcat
@@
-383,19
+383,20
@@
sub show_stat {
sub varfmt {
my ($fmt, $vars) = @_;
sub varfmt {
my ($fmt, $vars) = @_;
- $fmt =~ s[\$\{ (\w+) (?<cmd>; (?: [^{}]+ | \{.*?\} )*)? \}]{
- local $_ = $vars->{$1};
+ $fmt =~ s[\$\{( (?: [^{}]++ | \{(?1)\} )+ )\}]{
+ my ($name, $cmd) = split /\s*;/, $1, 2;
+ local $_ = $vars->{$name};
if (defined) {
$_ = $opt{'value-format'}->($_) if $opt{reformat};
if (defined) {
$_ = $opt{'value-format'}->($_) if $opt{reformat};
- if ($
+{cmd}
) {
- eval $
+{cmd}
;
- warn "Error in \$$
1
report: $@" if $@;
+ if ($
cmd
) {
+ eval $
cmd
;
+ warn "Error in \$$
name
report: $@" if $@;
}
$_;
}
else {
}
$_;
}
else {
- warn "Unknown variable \$$
1
in report\n";
- "\$$
1
";
+ warn "Unknown variable \$$
name
in report\n";
+ "\$$
name
";
}
}eg;
return $fmt;
}
}eg;
return $fmt;