[interchange-cvs] interchange - heins modified code/UI_Tag/dump_session.coretag
interchange-core@icdevgroup.org
interchange-core@icdevgroup.org
Mon Feb 10 14:37:00 2003
User: heins
Date: 2003-02-10 19:36:03 GMT
Modified: code/UI_Tag dump_session.coretag
Log:
* Restore capability to show only part of session.
Revision Changes Path
1.5 +24 -0 interchange/code/UI_Tag/dump_session.coretag
rev 1.5, prev_rev 1.4
Index: dump_session.coretag
===================================================================
RCS file: /var/cvs/interchange/code/UI_Tag/dump_session.coretag,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- dump_session.coretag 24 Dec 2002 14:46:47 -0000 1.4
+++ dump_session.coretag 10 Feb 2003 19:36:02 -0000 1.5
@@ -1,6 +1,23 @@
UserTag dump_session Order name
UserTag dump_session AddAttr
UserTag dump_session Routine <<EOR
+
+sub show_part {
+ my ($ref, $key) = @_;
+ return $ref unless $key;
+ if ($key eq 'SCALAR') {
+ my $newref = {};
+ foreach my $k (keys %$ref) {
+ next if ref $ref->{$k};
+ $newref->{$k} = $ref->{$k};
+ }
+ return $newref;
+ }
+ else {
+ return { $key, $ref->{$key} };
+ }
+}
+
sub {
my ($name, $opt) = @_;
my $joiner = $opt->{joiner} || ' ';
@@ -34,6 +51,9 @@
my $fn = Vend::Util::get_filename($name, 2, 1, $Vend::Cfg->{SessionDatabase});
return '' unless -f $fn;
my $ref = Vend::Util::eval_file($fn);
+
+ $ref = show_part($ref, $opt->{key}) if $opt->{key};
+
my $out = '';
eval {
$out = Vend::Util::uneval($ref);
@@ -89,6 +109,10 @@
my $out = '';
my $ref = Vend::Util::evalr($session);
+
+ ## Allow show of only part
+ $ref = show_part($ref, $opt->{key}) if $opt->{key};
+
eval {
$out = Vend::Util::uneval($ref);
};