aboutsummaryrefslogtreecommitdiff
path: root/Perl/debug
diff options
context:
space:
mode:
authoretienne2003-06-04 14:18:45 +0000
committeretienne2003-06-04 14:18:45 +0000
commit5bdb20ff19a28dafbf07e6ed98de62411947f667 (patch)
tree222507356b0522c69fdc3814aa26654048f46f13 /Perl/debug
parent3d5bc14297fe0f902056d1fc1ca3b099f50b6fb5 (diff)
downloadtkzinc-5bdb20ff19a28dafbf07e6ed98de62411947f667.zip
tkzinc-5bdb20ff19a28dafbf07e6ed98de62411947f667.tar.gz
tkzinc-5bdb20ff19a28dafbf07e6ed98de62411947f667.tar.bz2
tkzinc-5bdb20ff19a28dafbf07e6ed98de62411947f667.tar.xz
Ajout du module ZincTraceErrors qui trappe les erreurs Zinc et affiche
pour chaque erreur l'instruction et le message d'erreur. Factorisation de code dans ZincTraceUtils.pm
Diffstat (limited to 'Perl/debug')
-rw-r--r--Perl/debug/ZincTraceUtils.pm90
1 files changed, 90 insertions, 0 deletions
diff --git a/Perl/debug/ZincTraceUtils.pm b/Perl/debug/ZincTraceUtils.pm
new file mode 100644
index 0000000..60628a8
--- /dev/null
+++ b/Perl/debug/ZincTraceUtils.pm
@@ -0,0 +1,90 @@
+package ZincTraceUtils;
+
+use Tk;
+use strict;
+use Tk::Font;
+use Tk::Photo;
+use vars qw(@EXPORT);
+@EXPORT = qw(printItem printArray printList);
+
+
+### to print something
+sub printItem {
+ my ($value) = @_;
+ my $ref = ref($value);
+# print "VALUE=$value REF=$ref\n";
+ if ($ref eq 'ARRAY') {
+ printArray ( @{$value} );
+ }
+ elsif ($ref eq 'CODE') {
+ print "{CODE}";
+ }
+ elsif ($ref eq 'Tk::Photo') {
+# print " **** $value ***** ";
+ print "Tk::Photo(\"". scalar $value->cget('-file') . "\")";
+ }
+ elsif ($ref eq 'Tk::Font') {
+ print "'$value'";
+ }
+ elsif ($ref eq '') { # scalar
+ if (defined $value) {
+ if ($value eq '') {
+ print "''";
+ } elsif ($value =~ /\s/
+ or $value =~ /^[a-zA-Z]/
+ or $value =~ /^[\W]$/ ) {
+ print "'$value'";
+ } else {
+ print $value;
+ }
+ }
+ else {
+ print "undef";
+ }
+ }
+ else { # some class instance
+ return $value;
+ }
+
+} # end printitem
+
+
+### to print a list of something
+sub printArray {
+ my (@values) = @_;
+ if (! scalar @values) {
+ print "[]";
+ }
+ else { # the list is not empty
+ my @res;
+ print "[";
+ while (@values) {
+ my $value = shift @values;
+ &printItem ($value);
+ print ", " if (@values);
+ }
+ print "]" ;
+ }
+
+} # end printArray
+
+
+sub printList {
+ print "(";
+ while (@_) {
+ my $v = shift @_;
+ printItem $v;
+ if ($v =~ /^-\w+/) {
+ print " => ";
+ } elsif (@_) {
+ print ", ";
+ }
+ }
+ print ")";
+
+} # end printList
+
+1;
+
+
+