NAME
Data::Text - Class to handle text in an OO way
VERSION
Version 0.19
DESCRIPTION
Data::Text provides an object-oriented interface for managing and manipulating text content in Perl. It wraps string operations in a class-based structure, enabling clean chaining of methods like appending, trimming, replacing words, and joining text with conjunctions. It supports flexible input types, including strings, arrays, and other Data::Text objects, and overloads common operators to allow intuitive comparisons and stringification.
SYNOPSIS
use Data::Text;
my $d = Data::Text->new("Hello, World!\n");
print $d->as_string();
SUBROUTINES/METHODS
new
Creates a Data::Text object.
The optional parameter contains a string or object to initialise the object with.
set
Sets the object to contain the given text.
The argument can be a reference to an array of strings, or an object. If called with an object, the message as_string() is sent to it for its contents.
$d->set({ text => "Hello, World!\n" });
$d->set(text => [ 'Hello, ', 'World!', "\n" ]);
append
Adds data given in "text" to the end of the object. Contains a simple sanity test for consecutive punctuation. I expect I'll improve that.
Successive calls to append() can be daisy chained.
$d->set('Hello ')->append("World!\n");
The argument can be a reference to an array of strings, or an object. If called with an object, the message as_string() is sent to it for its contents.
uppercase
Converts the text to uppercase.
$d->uppercase();
lowercase
Converts the text to lowercase.
$d->lowercase();
clear
Clears the text and resets the internal state.
$d->clear();
equal($self, $other)
Are two texts the same?
my $t1 = Data::Text->new('word');
my $t2 = Data::Text->new('word');
print ($t1 == $t2), "\n"; # Prints 1
not_equal($self, $other)
Are two texts different?
my $t1 = Data::Text->new('xyzzy');
my $t2 = Data::Text->new('plugh');
print ($t1 != $t2), "\n"; # Prints 1
as_string
Returns the text as a string.
length
Returns the length of the text as an integer.
This is actually the number of characters, not the number of bytes.
trim
Removes leading and trailing spaces from the text.
rtrim
Removes trailing spaces from the text.
replace($self, $replacements)
Replaces multiple words in the text.
$d->append('Hello World');
$d->replace({ 'Hello' => 'Goodbye', 'World' => 'Universe' });
print $d->as_string(), "\n"; # Outputs "Goodbye Universe"
appendconjunction
Add a list as a conjunction. See Lingua::Conjunction Because of the way Data::Text works with quoting, this code works
my $d1 = Data::Text->new();
my $d2 = Data::Text->new('a');
my $d3 = Data::Text->new('b');
# Prints "a and b\n"
print $d1->appendconjunction($d2, $d3)->append("\n");
AUTHOR
Nigel Horne, <njh at nigelhorne.com>
BUGS
There is limited Unicode or UTF-8 support.
SEE ALSO
<Test Coverage Report|https://nigelhorne.github.io/Data-Text/coverage/>
SUPPORT
This module is provided as-is without any warranty.
You can find documentation for this module with the perldoc command.
perldoc Data::Text
You can also look for information at:
MetaCPAN
RT: CPAN's request tracker
CPAN Testers' Matrix
CPAN Testers Dependencies
LICENSE AND COPYRIGHT
Copyright 2021-2026 Nigel Horne.
This program is released under the following licence: GPL2