NAME

MsOffice::Word::Surgeon::Text - internal representation for a node of literal text

DESCRIPTION

This is used internally by MsOffice::Word::Surgeon for storing a chunk of literal text in a MsWord document. It loosely corresponds to a <w:t> node in OOXML, but may also contain an anonymous XML fragment which is the part of the document just before the <w:t> node -- used for reconstructing the complete document after having changed the contents of some text nodes.

METHODS

new

my $text_node = MsOffice::Word::Surgeon::Text(
  xml_before   => $xml_string,
  literal_text => $text_string,
);

Constructor for a new text object. Arguments are :

xml_before

A string containing arbitrary XML preceding that text node in the complete document. The string may be empty but must be present.

literal_text

A string of literal text.

as_xml

my $xml = $text_node->as_xml;

Returns the XML representation of that text node. The attribute xml:space="preserve" is automatically added if the literal text starts of ends with a space character.

merge

$text_node->merge($next_text_node);

Merge the contents of $next_text_node together with the current text node. This is only possible if the next text node has an empty xml_before attribute; if this condition is not met, an exception is raised.

replace

my $xml = $text_node->replace($pattern, $replacement_callback, %args);

Replaces all occurrences of $pattern within the text node 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.

to_uppercase

Puts the literal text within the node into uppercase letters.