File Coverage

lib/Parse/Gnaw/Blocks/LetterDimensions2.pm
Criterion Covered Total %
statement 55 55 100.0
branch 3 4 75.0
condition n/a
subroutine 12 12 100.0
pod 3 3 100.0
total 73 74 98.6


line stmt bran cond sub pod time code
1              
2              
3              
4              
5             package Parse::Gnaw::Blocks::LetterDimensions2;
6              
7             our $VERSION = '0.001';
8              
9             #BEGIN {print "Parse::Gnaw::Blocks::Letter\n";}
10              
11 3     3   16 use warnings;
  3         6  
  3         108  
12 3     3   17 use strict;
  3         4  
  3         86  
13 3     3   12 use Carp;
  3         7  
  3         158  
14 3     3   17 use Data::Dumper;
  3         6  
  3         131  
15 3     3   14 use Storable 'dclone';
  3         12  
  3         118  
16              
17 3     3   14 use Parse::Gnaw::LinkedListConstants;
  3         8  
  3         319  
18              
19 3     3   16 use Parse::Gnaw::Blocks::Letter;
  3         9  
  3         66  
20 3     3   19 use base "Parse::Gnaw::Blocks::Letter";
  3         5  
  3         216  
21 3     3   16 use Parse::Gnaw::Blocks::LetterConstants;
  3         4  
  3         1994  
22              
23             =head1 NAME
24              
25             Parse::Gnaw::Blocks::LetterDimensions2 - a linked list element that holds a single scalar payload.
26             This one assumes linked list is in a 2 dimensional structure
27              
28              
29             =head2 new
30              
31             =cut
32              
33             sub new{
34 101     101 1 133 my $pkg=shift(@_);
35 101         294 $pkg->SUPER::new(@_);
36              
37             }
38              
39              
40              
41              
42             =head2 get_raw_address
43              
44             This is a subroutine. Do NOT call this as a method. This will allow it to handle undef values.
45              
46             my $retval = get_raw_address($letterobj);
47              
48             Given a letter object, get the string that looks like
49              
50             Parse::Gnaw::Blocks::Letter=ARRAY(0x850cea4)
51              
52             and return something like
53              
54             0x850cea4
55              
56             =cut
57              
58              
59             my $blank_obj=[];
60             #print "blank_obj is '$blank_obj'\n"; die;
61             my $blank_str=$blank_obj.'';
62             my $blank_len=length($blank_str);
63             my $BLANK = '.'x($blank_len-5);
64              
65              
66             sub get_raw_address{
67 297     297 1 360 my ($ltrobj)=@_;
68              
69 297 100       571 unless(defined($ltrobj)){
70 140         419 return $BLANK;
71             }
72              
73 157         358 my $string=$ltrobj.'';
74 157 50       673 $string=~m{(\(0x[0-9a-f]+\))} or croak "could not get_raw_address";
75 157         328 my $addr=$1;
76              
77 157         434 return $addr;
78              
79             }
80              
81             =head2 display
82              
83             Dump out a represenation of a letter that is part of a 2-d linked list
84              
85             =cut
86             #BEGIN { warn "letterdimensions2 declaring display() function";}
87             sub display{
88 33     33 1 59 my ($centerobj)=@_;
89              
90 33         59 my $letpkg = ref($centerobj);
91 33         67 my $self = get_raw_address($centerobj);
92              
93 33         98 my $left = get_raw_address($centerobj->[LETTER__CONNECTIONS]->[0]->[LETTER__CONNECTION_PREV]);
94 33         80 my $right = get_raw_address($centerobj->[LETTER__CONNECTIONS]->[0]->[LETTER__CONNECTION_NEXT]);
95              
96 33         72 my $above = get_raw_address($centerobj->[LETTER__CONNECTIONS]->[1]->[LETTER__CONNECTION_PREV]);
97 33         81 my $below = get_raw_address($centerobj->[LETTER__CONNECTIONS]->[1]->[LETTER__CONNECTION_NEXT]);
98              
99 33         72 my $uple = get_raw_address($centerobj->[LETTER__CONNECTIONS]->[2]->[LETTER__CONNECTION_PREV]);
100 33         68 my $lowri = get_raw_address($centerobj->[LETTER__CONNECTIONS]->[2]->[LETTER__CONNECTION_NEXT]);
101              
102 33         114 my $upri = get_raw_address($centerobj->[LETTER__CONNECTIONS]->[3]->[LETTER__CONNECTION_PREV]);
103 33         74 my $lowle = get_raw_address($centerobj->[LETTER__CONNECTIONS]->[3]->[LETTER__CONNECTION_NEXT]);
104              
105 33         1246 print "\n";
106 33         3173 print "\t letterobject: ".$centerobj."\n";
107 33         3940 print "\t payload: '".($centerobj->[LETTER__DATA_PAYLOAD])."'\n";
108 33         2656 print "\t location: ".($centerobj->[LETTER__WHERE_LETTER_CAME_FROM])."\n";
109 33         2702 print "\t"."connections:\n";
110              
111 33         2713 print "\t\t".$uple .$above.$upri."\n";
112 33         2682 print "\t\t".$left .$self .$right."\n";
113 33         2999 print "\t\t".$lowle.$below.$lowri."\n";
114             }
115              
116              
117              
118              
119              
120              
121              
122              
123             1;
124