[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);
 			};