MsOffice-Word-Surgeon
view release on metacpan or search on metacpan
lib/MsOffice/Word/Surgeon/PackagePart.pm view on Meta::CPAN
]x;
state $txt_regex = qr[
<w:t(?:\ xml:space="preserve")?> # opening tag for the text contents
(.*?) # text contents -- capture in $1
</w:t> # closing tag for text
]x;
# split XML content into run fragments
my $contents = $self->contents;
my @run_fragments = split m[$run_regex], $contents, -1; # -1 : don't strip trailing items
my @runs;
# build internal RUN objects
RUN:
while (my ($xml_before_run, $props, $run_contents) = splice @run_fragments, 0, 3) {
$run_contents //= '';
# split XML of this run into text fragmentsn
my @txt_fragments = split m[$txt_regex], $run_contents, -1; # -1 : don't strip trailing items
my @texts;
# build internal TEXT objects
TXT:
while (my ($xml_before_text, $txt_contents) = splice @txt_fragments, 0, 2) {
next TXT if !$xml_before_text && !length($txt_contents);
$_ //= '' for $xml_before_text, $txt_contents;
decode_entities($txt_contents);
push @texts, MsOffice::Word::Surgeon::Text->new(xml_before => $xml_before_text,
literal_text => $txt_contents);
( run in 0.824 second using v1.01-cache-2.11-cpan-71847e10f99 )