This file is indexed.

/usr/share/perl5/Excel/Template/Element/MergeRange.pm is in libexcel-template-perl 0.34-2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
package Excel::Template::Element::MergeRange;

use strict;

BEGIN {
    use vars qw(@ISA);
    @ISA = qw(Excel::Template::Element::Cell);

    use Excel::Template::Element::Cell;
    use Excel::Template::Element::Range;
}

sub render {
    my $self = shift;
    my ($context) = @_;

    my $ref_name = $context->resolve($self, 'REF');

    my @refs = $context->get_all_references( $ref_name );
    (@refs)
        || die "You must specify a ref for MERGE_RANGE";

    my $range = Excel::Template::Element::Range->_join_refs(@refs);

    # NOTE:
    # we need to copy the current format
    # because Spreadsheet::WriteExcel will 
    # mark any format used in a merged cell
    # as being specifically for a merged cell
    # and therefore not usable elsewhere.

    my $old_format = $context->active_format;

    my %values;
    while ( my ($k, $v) = each %$self ) {
        $values{$k} = $context->resolve( $self, $k );
    }

    # force is_merged on here to differentiate the formats
    $values{is_merged} = 1;

    my $format = $context->format_object->copy(
        $context, $old_format, %values,
    );
    $context->active_format($format);

    $context->active_worksheet->merge_range(
        $range,
        $self->_get_text($context),
        $format,
    );

    $context->active_format($old_format);

    return 1;
}

1;
__END__

=head1 NAME

Excel::Template::Element::MergeRange - Excel::Template::Element::MergeRange

=head1 PURPOSE

To merge a range of cells in a spreadsheet

=head1 NODE NAME

MERGE_RANGE

=head1 INHERITANCE

L<ELEMENT|Excel::Template::Element>

=head1 EFFECTS

This will merge a range of cells.

=head1 DEPENDENCIES

None

=head1 USAGE

  <cell ref="foo"/>
  <cell ref="foo"/>
  <cell ref="foo"/>
  <merge_range ref="foo">Text to insert into merged range</merge_range>

Or a cross rows:

  <row>
    <cell ref="foo"/>
    <cell ref="foo"/>
    <cell ref="foo"/>
  </row>
  <row>
    <cell ref="foo"/>
    <cell ref="foo"/>
    <cell ref="foo"/>
    <format>
      <merge_range ref="foo">Text to insert into merged range</merge_range>
    </format>
  </row>


=head1 AUTHOR

Stevan Little (stevan.little@iinteractive.com)

=head1 SEE ALSO

Nothing

=cut