File Coverage

blib/lib/Astro/STSDAS/Table/HeaderPar.pm
Criterion Covered Total %
statement 37 37 100.0
branch 7 8 87.5
condition 4 6 66.6
subroutine 12 12 100.0
pod 3 3 100.0
total 63 66 95.4


line stmt bran cond sub pod time code
1             package Astro::STSDAS::Table::HeaderPar;
2              
3             require 5.005_62;
4 4     4   27839 use strict;
  4         9  
  4         142  
5 4     4   20 use warnings;
  4         6  
  4         104  
6              
7 4     4   19 use Carp;
  4         8  
  4         343  
8              
9             our $VERSION = '0.01';
10              
11 4     4   3362 use Astro::STSDAS::Table::Constants;
  4         9  
  4         5001  
12              
13             our @hdrkeys = qw( idx name value comment type );
14              
15              
16             sub new
17             {
18 5     5 1 24 my $class = shift;
19 5   66     27 $class = ref($class) || $class;
20            
21 5         16 my $self = bless {}, $class;
22            
23 5         10 @{$self}{@hdrkeys} = @_;
  5         39  
24              
25 5         16 $self->{name} = uc $self->{name};
26            
27 5 50 66     41 croak( __PACKAGE__, '->new: illegal header type' )
28             if defined $self->{type} && ! exists $Types{$self->{type}};
29              
30 5         25 $self;
31             }
32              
33             sub name
34             {
35 11     11 1 18 my $self = shift;
36 11 100       34 $self->{name} = uc $_[0] if @_;
37 11         233 $self->{name};
38             }
39              
40             sub _access_rw
41             {
42 12     12   16 my $what = shift;
43            
44             sub {
45 5     5   12 my $self = shift;
46 5 100       14 $self->{$what} = $_[0] if @_;
47 5         25 $self->{$what};
48             }
49 12         89 }
50              
51             sub _access_ro
52             {
53 4     4   7 my $what = shift;
54 6 100   6   677 sub { croak( __PACKAGE__, "->$what: attempt to write to RO attribute" )
55             if @_ > 1;
56 5         32 $_[0]->{$what}
57             }
58 4         27 }
59              
60              
61             {
62 4     4   28 no strict 'refs';
  4         5  
  4         521  
63             *$_ = _access_rw( $_ ) foreach qw( value comment type );
64            
65             *$_ = _access_ro( $_ ) foreach qw( idx );
66             }
67              
68             sub copy
69             {
70 1     1 1 289 $_[0]->new( @{$_[0]}{@hdrkeys} );
  1         7  
71             }
72              
73              
74             1;
75             __END__