File Coverage

blib/lib/Data/All/Format/Fixed.pm
Criterion Covered Total %
statement 29 33 87.8
branch 1 2 50.0
condition n/a
subroutine 8 9 88.8
pod 0 3 0.0
total 38 47 80.8


line stmt bran cond sub pod time code
1             package Data::All::Format::Fixed;
2              
3              
4             # $Id: Fixed.pm,v 1.1.1.1 2005/05/10 23:56:20 dmandelbaum Exp $
5              
6              
7 1     1   1016 use strict;
  1         3  
  1         45  
8 1     1   6 use warnings;
  1         2  
  1         36  
9              
10 1     1   6 use Data::Dumper;
  1         2  
  1         62  
11 1     1   6 use Data::All::Format::Base;
  1         2  
  1         87  
12              
13 1     1   6 use vars qw(@EXPORT $VERSION);
  1         2  
  1         80  
14              
15             @EXPORT = qw();
16             $VERSION = 0.11;
17              
18 1     1   5 use base 'Exporter';
  1         2  
  1         463  
19             our @EXPORT = qw(new internal attribute populate error init);
20              
21             attribute 'lengths' => [];
22             attribute 'break' => "\n"; # currently useless b/c it's hardcoded below
23              
24             attribute 'type';
25              
26             sub expand($);
27             sub contract(\@);
28              
29              
30             # TODO: Forward look to defined lengths if they are blank
31              
32             sub expand($)
33             {
34 0     0 0 0 my $self = shift;
35 0         0 my $record = shift;
36 0         0 my $template = $self->pack_template();
37            
38 0         0 return unpack($template, $record);
39             }
40              
41             sub contract(\@)
42             {
43 3     3 0 6 my $self = shift;
44 3         4 my $values = shift;
45 3         7 my $template = $self->pack_template();
46              
47             # NOTE: Line break is hardcoded to \n
48 3         4 return pack($template, @{ $values })."\n";
  3         25  
49             }
50              
51              
52             sub pack_template()
53             {
54 3     3 0 4 my $self = shift;
55 3         4 my @template;
56            
57 3         5 foreach my $e (@{ $self->lengths })
  3         8  
58             {
59 12         25 push(@template, "A$e");
60             }
61            
62 3 50       17 return !wantarray ? join(' ', @template) : @template;
63             }
64              
65              
66              
67              
68             1;