NAME
MsOffice::Word::Surgeon::Run - internal representation for a "run of text"
DESCRIPTION
This is used internally by MsOffice::Word::Surgeon for storing a "run of text" in a MsWord document. It loosely corresponds to a <w:r>
node in OOXML, but may also contain an anonymous XML fragment which is the part of the document just before the <w:r>
node -- used for reconstructing the complete document after having changed the contents of some runs.
METHODS
new
my $run = MsOffice::Word::Surgeon::Run(
xml_before => $xml_string,
props => $properties_string,
inner_texts => [MsOffice::Word::Surgeon::Text(...), ...],
);
Constructor for a new run object. Arguments are :
- xml_before
-
A string containing arbitrary XML preceding that run in the complete document. The string may be empty but must be present.
- props
-
A string containing XML for the properties of this run (for example instructions for bold, italic, font, etc.). The module does not parse this information; it just compares the string for equality with the next run.
- inner_texts
-
An array of MsOffice::Word::Surgeon::Text objects, corresponding to the XML
<w:t>
nodes inside the run.
as_xml
my $xml = $run->as_xml;
Returns the XML representation of that run.
merge
$run->merge($next_run);
Merge the contents of $next_run
together with the current run. This is only possible if both runs have the same properties (same string returned by the props
method), and if the next run has an empty xml_before
attribute; if the conditions are not met, an exception is raised.
replace
my $xml = $run->replace($pattern, $replacement_callback, %replacement_args);
Replaces all occurrences of $pattern
within all text nodes by a new string computed by $replacement_callback
, and returns a new xml string corresponding to the result of all these replacements. This is the internal implementation for public method "replace" in MsOffice::Word::Surgeon.
remove_caps_property
Searches in the run properties for a <w:caps/>
property; if found, removes it, and replaces all inner texts by their uppercase equivalents.