File Coverage

lib/Panotools/Script/Line/ImageMetadata.pm
Criterion Covered Total %
statement 29 41 70.7
branch 3 10 30.0
condition 1 3 33.3
subroutine 9 10 90.0
pod 0 3 0.0
total 42 67 62.6


line stmt bran cond sub pod time code
1             package Panotools::Script::Line::ImageMetadata;
2              
3 10     10   79 use strict;
  10         20  
  10         301  
4 10     10   47 use warnings;
  10         16  
  10         250  
5 10     10   51 use Panotools::Script::Line;
  10         15  
  10         241  
6              
7 10     10   45 use vars qw /@ISA/;
  10         38  
  10         4929  
8             @ISA = qw /Panotools::Script::Line/;
9              
10             =head1 NAME
11              
12             Panotools::Script::Line::ImageMetadata - hugin input image metadata
13              
14             =head1 SYNOPSIS
15              
16             A single input image is described by an 'i' line, this is optionally prefixed
17             by a '#-hugin' line containing metadata in a key=value format
18              
19             =head1 DESCRIPTION
20              
21             =cut
22              
23             sub Assemble
24             {
25 10     10 0 25 my $self = shift;
26 10         62 $self->_sanitise;
27 10         48 my @tokens;
28 10         18 for my $entry (sort keys %{$self})
  10         24  
29             {
30 10 50       19 if ($entry eq "disabled")
31             {
32 0         0 push @tokens, $entry;
33             }
34             else
35             {
36 10         28 push @tokens, $entry .'='. $self->{$entry};
37             }
38             }
39 10 50       32 return (join ' ', ($self->Identifier, @tokens)) ."\n" if (@tokens);
40 0         0 return '';
41             }
42              
43             sub _defaults
44             {
45 25     25   45 my $self = shift;
46             }
47              
48 60     60   96 sub _valid { return '^([^=]+)(?:=(.*)|)$' }
49              
50             sub Identifier
51             {
52 10     10 0 13 my $self = shift;
53 10         39 return "#-hugin";
54             }
55              
56             sub _sanitise
57             {
58 35     35   58 my $self = shift;
59 35         61 my $valid = $self->_valid;
60 35         48 for my $key (keys %{$self})
  35         151  
61             {
62 35 50 33     433 delete $self->{$key} unless ( grep /$valid/, "$key=" || grep /$valid/, "$key" );
63             }
64             }
65              
66             sub Report
67             {
68 0     0 0   my $self = shift;
69 0           my @report;
70 0           for my $entry (sort keys %{$self})
  0            
71             {
72 0 0         if ($entry eq "disabled")
73             {
74 0           push @report, ["State",$entry];
75             }
76             else
77             {
78 0           my @tokens = $entry =~ /(^[a-z]+|[A-Z][a-z]+|[A-Z][A-Z]+(?=[A-Z][a-z]))/g;
79 0           my $name = join ' ', @tokens;
80 0 0         push @report, [$name, $self->{$entry}] unless ($self->{$entry} =~ /false/i);
81             }
82             }
83 0           [@report];
84             }
85              
86              
87             1;
88